git

GitHubリポジトリの内容をさくらのレンタルサーバーに自動デプロイする方法:GitHub Actions

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.公開鍵をサーバーに追加

次に、生成された公開鍵をさくらのレンタルサーバーに追加します。

  1. ローカルマシンで公開鍵の内容を確認します。

    cat ~/.ssh/id_rsa_deploy.pub
    

  2. FTPクライアント(例:FileZilla)を使用して、さくらのレンタルサーバーに接続します。
  3. ユーザーのホームディレクトリに移動し、.sshディレクトリを作成します(存在しない場合)。
  4. authorized_keysファイルを作成し、公開鍵の内容をコピーして貼り付けます。

3.GitHub Secretsの設定

GitHubリポジトリの設定で、秘密鍵やサーバー情報を追加します。

  1. GitHubリポジトリのページに移動します。
  2. 「Settings」→「Secrets and variables」→「Actions」を選択します。
  3. 「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/
    この部分には、さくらのレンタルサーバーに接続するためのユーザー名、ホスト名、およびデプロイ先のディレクトリを指定します。

    1. your_username: さくらのレンタルサーバーのユーザー名
    2. your_server: さくらのレンタルサーバーのホスト名
    3. /home/your_username/public_html/: デプロイしたいディレクトリのパス

まとめ

これで、GitHubリポジトリにコードをpushするたびに、さくらのレンタルサーバーに自動的にデプロイされるようになります。この手順に従うことで、手動でファイルをアップロードする手間を省くことができ、デプロイ作業を自動化することができます。

トラブルシューティングや詳細な設定については、GitHub Actionsの公式ドキュメントやさくらのレンタルサーバーのサポートページを参照してください。

 
※参考にする場合は自己責任でお願いします。