13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XserverにGitHub Actionsで自動デプロイする最強の手順書【SSH / FTP完全対応】

Posted at

xserver_deploy_header_1765451528062.jpg

「毎回FileZillaを開いてファイルをアップロードするのが面倒...」
「間違えて古いファイルをアップロードしてしまった...」

そんな悩み、GitHub Actionsを使えば一発で解決できます!
一度設定してしまえば、あとはGitHubにプッシュするだけで勝手にXserverの本番環境が更新されるようになります。

この記事では、 Xserver(レンタルサーバー) にデプロイするための 2つの方法(SSH / FTP) を、初心者の方でも迷わないように図解とコピペ用コード付きで徹底解説します。


🚀 この記事で実現できること

  • git push するだけでサイトが更新される
  • 手作業によるミスがゼロになる
  • SSH (高速・安全) または FTP (簡単) の好きな方を選べる

🛠️ 事前準備

  • Xserverの契約済みアカウント
  • GitHubのアカウントと対象のリポジトリ

方法①:SSHでデプロイ(推奨・高速)✨

一番のおすすめはrsyncなどを使ったSSHデプロイです。差分のみを転送するため非常に高速で、セキュリティも高いです。

1. XserverでSSH設定を有効にする

  1. Xserverのサーバーパネルにログインします。
  2. 「アカウント」カテゴリの 「SSH設定」 をクリックします。
  3. 「ON」 にチェックを入れて「設定する」をクリックします。

xserver_ssh_settings_mockup_1765451717317.jpg

2. 認証鍵を作成する

  1. 同じく「SSH設定」画面の 「公開鍵認証用鍵ペアの生成」 タブをクリックします。
  2. パスフレーズを入力します(自動化のため空欄でOKです)。
  3. 「確認画面へ進む」→「生成する」をクリック。
  4. 秘密鍵([サーバーID].key が自動的にダウンロードされます。これは超重要ファイルなので大切に保管してください。

3. GitHub Secretsに情報を登録

GitHubのリポジトリ画面に移動し、Settings > Secrets and variables > Actions > New repository secret から以下の3つを登録します。

Name Value (入力する内容)
SSH_HOSTNAME サーバーパネル「サーバー情報」にある「ホスト名」 (例: sv1234.xserver.jp)
SSH_USERNAME サーバーID (例: xs123456)
SSH_PRIVATE_KEY ダウンロードした秘密鍵の中身を全てコピペ

[!IMPORTANT]
SSH_PRIVATE_KEY-----BEGIN RSA PRIVATE KEY----- から -----END RSA PRIVATE KEY----- まで改行も含めて全てコピーしてください。

github_secrets_mockup_1765451734535.jpg

4. ワークフローファイルの作成

リポジトリの .github/workflows/deploy-ssh.yml というファイルを作成し、以下のコードをコピペしてください。

.github/workflows/deploy-ssh.yml
name: Deploy to Xserver (SSH)

on:
  push:
    branches:
      - main  # デプロイしたいブランチ名

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SSH_HOSTNAME }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: 10022  # XserverのSSHポートは10022固定
          script: |
            # 公開フォルダに移動 (例: public_html)
            cd /home/${{ secrets.SSH_USERNAME }}/your-domain.com/public_html
            
            # git pull で更新する場合
            git pull origin main
            
            # または rsync で同期する場合 (以下のコメントアウトを外して使用)
            # rsync -avz --delete ./ /home/${{ secrets.SSH_USERNAME }}/your-domain.com/public_html/

script の部分は、ご自身の運用に合わせて git pullrsync かを選んでください。初心者の場合はサーバー上で一度 git clone しておき、git pull で更新するのが一番簡単です。


方法②:FTPでデプロイ(簡単・初心者向け)🔰

SSHの設定が難しそう...という方は、FTPアクションを使うのが手軽です。

1. GitHub Secretsに情報を登録

Settings > Secrets and variables > Actions > New repository secret から登録します。

Name Value (入力する内容)
FTP_SERVER FTPホスト名 (例: sv1234.xserver.jp)
FTP_USERNAME FTPユーザー名 (初期アカウントIDまたはサブFTPアカウント)
FTP_PASSWORD FTPパスワード

2. ワークフローファイルの作成

.github/workflows/deploy-ftp.yml を作成します。

.github/workflows/deploy-ftp.yml
name: Deploy to Xserver (FTP)

on:
  push:
    branches:
      - main

jobs:
  FTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
    - name: Checkout Code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0  # 差分アップロードのために必要

    - name: FTP-Deploy-Action
      uses: SamKirkland/FTP-Deploy-Action@v4.3.5
      with:
        server: ${{ secrets.FTP_SERVER }}
        username: ${{ secrets.FTP_USERNAME }}
        password: ${{ secrets.FTP_PASSWORD }}
        server-dir: /your-domain.com/public_html/  # アップロード先のパス (最後に / が必要)
        exclude: |  # アップロードしたくないファイル
          **/.git*
          **/.git*/**
          **/node_modules/**

server-dir は非常に重要です!間違えると意図しない場所にファイルがばら撒かれるので、必ず 最後にスラッシュ(/) をつけてください。


🏆 どっちを使えばいい?

特徴 SSH (Recommended) FTP
難易度 ⭐⭐⭐ (少し慣れが必要) ⭐ (簡単)
速度 🚀 爆速 (差分のみ) 🐢 普通 (ファイル数が多いと遅い)
安全性 🔒 安全 (鍵認証) ⚠️ パスワード認証
できること コマンド実行も可能 (npm installなど) ファイル転送のみ

基本的には SSH がおすすめですが、静的サイト(HTML/CSSのみ)なら FTP でも十分です!

🚀 デプロイ成功!

deployment_success_graphic_1765451757381.jpg

まとめ

これで Xserver へのデプロイが完全自動化されました!
「修正して push」→「数秒待つ」→「サイト更新完了🎉」の快適さを体験すると、もう手動アップロードには戻れません。

ぜひ試してみてください!


参考リンク

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?