Astroでブログを作ってみたいので、事前準備としてシン・レンタルサーバーとGitHub ActionsでCI/CDができる環境を構築してみました。
本番のブログはそのままにして、サブドメインへ静的ファイルを自動で置くところまでを目標にしています。
環境と事前準備
環境
- シン・レンタルサーバー
- GitHub
- GitHub Actions
今回はこのブログのサブドメインを作成し、そこに構築するようにしました。
サブドメインの準備は作業前に実施済みで、サンプルページにアクセスできることまで確認済みです。

この記事では、そのアップロードをGitHub Actionsに置き換える手順を書きます。
SSHを有効にして公開鍵を登録する
シン・レンタルサーバーで鍵を作成します。公開鍵はサーバーに登録され、秘密鍵は作成と同時にダウンロードされます。
サーバーパネルの『SSH設定』を開き、『SSH設定』タブで鍵を作成します。
- 登録方式:自動生成
- ラベル:Github
- パスフレーズ:設定しない


次に、GitHub Actionsは海外からのアクセスとなるので、『アクセス制限』タブで国外アクセス制限をOFFにします。

GitHubにリポジトリを作り、秘密鍵を登録する
GitHubでリポジトリを作ります。
ここに、レンタルサーバーに送るファイルを置きます。
GitHubにログインし、New repository を開きます。
- Repository name は任意です。今回は Blog にしました。
- 公開設定は Private を選びます。
- Add a README file はオフのまま、Create repository をクリックします。

作成したリポジトリで Add file、Create new file を開きます。ファイル名を index.html にして以下の内容を書いて、Commit changes で保存します。
保存後に https://github.com/ユーザー名/Blog/blob/main/index.html を開き、ページが表示されることを確認します。404になる場合は、ファイル名が index.html になっていません。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>GitHubからプッシュしたページ</title>
</head>
<body>
GitHubからプッシュしたページ
</body>
</html>

次に、GitHubへ秘密鍵を登録します。
ダウンロードした秘密鍵をテキストエディタで開きます。先頭は -----BEGIN OPENSSH PRIVATE KEY----- です。
リポジトリの Settings を開き、Secrets and variables の Actions を開きます。New repository secret をクリックし、次のように入力します。
- Name は
SSH_PRIVATE_KEY - Secret は、秘密鍵の
BEGINの行からENDの行まで全部
Add secret で保存します。秘密鍵はコミットしません。スクリーンショットを載せるときは、Secret の中身が読めないようにぼかしてください。


GitHub Actionsでレンタルサーバーへ送る
GitHub Actionsで、リポジトリの index.html をサブドメインへ送ります。
ファイルマネージャ上の送り先は public_html/new.3ryu-engineer.work/ です。YAMLに書くフルパスは /home/サーバーID/3ryu-engineer.work/public_html/new.3ryu-engineer.work です。
リポジトリで Add file、Create new file を開き、ファイル名を .github/workflows/deploy.yml にします。スラッシュは半角の / で、前後に空白は入れません。上の表示が .github / workflows / deploy.yml の3段になれば、フォルダは正しく作れています。
中身は次のとおりです。サーバーID は、自分のサーバーIDに置き換えます。
初期ドメインが xxxx.wpx.jp なら、xxxx の部分です。
name: deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: サブドメインへ送る
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
SSH_HOST: サーバーID.wpx.jp
SSH_USER: サーバーID
DEPLOY_PATH: /home/サーバーID/3ryu-engineer.work/public_html/new.3ryu-engineer.work
run: |
sudo apt-get update
sudo apt-get install -y rsync
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -p 10022 "$SSH_HOST" >> ~/.ssh/known_hosts
rsync -avz -e "ssh -p 10022 -i ~/.ssh/deploy_key" \
./index.html \
"${SSH_USER}@${SSH_HOST}:${DEPLOY_PATH}/"ブランチ名が master のときは、main を master に変えます。Commit changes で保存すると、そのプッシュでこのワークフローが動きます。


ここまでできたら、Actions を開いてデプロイの状況を確認します。緑のチェックが付いた最新の実行が、成功したデプロイです。

サブドメインのURLを開くと、表示が「GitHubからプッシュしたページ」に書き換わっていることも確認できます。

まとめ
main へプッシュすると、GitHub Actions が index.html をサブドメインへ送ります。表示が「GitHubからプッシュしたページ」に変われば完了です。