GitHubにpushした内容をさくらのレンタルサーバーに自動で反映させるGitHub Actionsを使った方法を、わかりやすく解説します。
この手順を実行することで、GitHubリポジトリに変更を加えるたびに、自動的にさくらのレンタルサーバーにデプロイされるようになります。
ディスプレイ広告
前提条件
- さくらのレンタルサーバーにSSHアクセスが可能であること。
- GitHubにリポジトリが存在すること。
- FTPクライアントを使用できること(FTPクライアントソフト例:FileZilla)。
手順
1.新しいSSH鍵の生成
まず、ローカルPCでパスフレーズなしの新しいSSH鍵を生成します。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -N "" -f ~/.ssh/id_rsa_deploy
- -t rsa: RSAタイプの鍵を生成。
- -b 4096: 鍵のビット長を4096ビットに設定。
- -C “your_email@example.com”: 鍵にコメントとしてメールアドレスを追加。
GitHubアカウントに関連付けられているメールアドレスか、管理しやすい有効なメールアドレスを使用してください。 - -N “”: パスフレーズを設定しない。
※パスフレーズを設定するとエラーになりレンタルサーバーに反映されなかったので、今回はパスフレーズを設定しない方法をとってます。 - -f ~/.ssh/id_rsa_deploy: 鍵のファイル名を指定。
2.公開鍵をサーバーに追加
次に、生成された公開鍵をさくらのレンタルサーバーに追加します。
-
ローカルマシンで公開鍵の内容を確認します。
cat ~/.ssh/id_rsa_deploy.pub
- FTPクライアント(例:FileZilla)を使用して、さくらのレンタルサーバーに接続します。
- ユーザーのホームディレクトリに移動し、.sshディレクトリを作成します(存在しない場合)。
- authorized_keysファイルを作成し、公開鍵の内容をコピーして貼り付けます。
3.GitHub Secretsの設定
GitHubリポジトリの設定で、秘密鍵やサーバー情報を追加します。
- GitHubリポジトリのページに移動します。
- 「Settings」→「Secrets and variables」→「Actions」を選択します。
- 「New repository secret」をクリックし、以下のシークレットを追加します。
- SSH_PRIVATE_KEY: 秘密鍵の内容(~/.ssh/id_rsa_deployの内容)
- SERVER_USERNAME: さくらのレンタルサーバーのユーザー名
- SERVER_HOST: さくらのレンタルサーバーのホスト名(例:your_server.sakura.ne.jp)
4.GitHub Actionsの設定
GitHubリポジトリに.github/workflows/deploy.ymlという名前でファイルを作成し、以下の内容を追加します。
name: Deploy to Sakura
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
- name: Sync files
run: |
rsync -avz --delete \
-e "ssh -o StrictHostKeyChecking=no" \
./ your_username@your_server.sakura.ne.jp:/home/your_username/public_html/
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
SERVER_USERNAME: ${{ secrets.SERVER_USERNAME }}
SERVER_HOST: ${{ secrets.SERVER_HOST }}
解説
- Checkout code:
GitHubリポジトリからコードをチェックアウトします。 - Setup SSH:
SSHエージェントを設定し、GitHub Secretsに保存した秘密鍵を追加します。 - Sync files:
rsyncコマンドを使用して、リポジトリの内容をさくらのレンタルサーバーに同期します。 - 「your_username@your_server.sakura.ne.jp:/home/your_username/public_html/」
この部分には、さくらのレンタルサーバーに接続するためのユーザー名、ホスト名、およびデプロイ先のディレクトリを指定します。- your_username: さくらのレンタルサーバーのユーザー名
- your_server: さくらのレンタルサーバーのホスト名
- /home/your_username/public_html/: デプロイしたいディレクトリのパス
まとめ
これで、GitHubリポジトリにコードをpushするたびに、さくらのレンタルサーバーに自動的にデプロイされるようになります。この手順に従うことで、手動でファイルをアップロードする手間を省くことができ、デプロイ作業を自動化することができます。
トラブルシューティングや詳細な設定については、GitHub Actionsの公式ドキュメントやさくらのレンタルサーバーのサポートページを参照してください。
※参考にする場合は自己責任でお願いします。
ディスプレイ広告
ディスプレイ広告