WP環境をshで簡単デプロイしてみた

2025.07.18 09:00
2025.07.18 09:19
WP環境をshで簡単デプロイしてみた

WordPress のテーマを更新するたびに、毎回 FTP でファイルをアップしていませんか?
以前の僕もそうでしたが、だんだんと「めんどくさいしミスりやすい…」と感じるようになりました。

一方で、実は Xserver でも GitHub Actions などを使って CI/CD を組むことは可能です。
僕も一度、GitHub Actions + rsync で Xserver に自動デプロイする環境を作ったことがあります。
ただ、それを運用していくうちに「この規模のサイトでそこまでやる必要あるかな?」と思うようになりました。

そんな経緯から、「FTP より楽で、CI/CD ほど重くない」ちょうどいい方法として、シェルスクリプトを使った簡易デプロイに落ち着きました。
結果、とても快適だったのでご紹介します。

なぜ CI/CD じゃないのか?

GitHub Actions などを使った CI/CD は、もちろん便利です。
実際、Xserver でも SSH + rsync で自動化できることは確認済みですし、一度は動かしました。

でも、こんな課題もありました。

  • ワークフローのメンテナンスが地味に面倒
  • 「XserverのSSH鍵をGitHubに登録しておく」など、権限管理に気を遣う
  • 小規模サイトだと「そこまでして自動化する必要ある?」と思う場面が多い
  • トラブル時に結局手動介入するので、スクリプトでも十分

要するに、技術的にはできるが、運用コスト・心理的負担・規模感のバランスが悪かった というのが正直な感想です。

目指したのは「手軽で安心」

目標はこれです。

  • FTP から卒業したい
  • コマンド一発でデプロイできる
  • 差分だけ送れるから速い
  • Xserver でも動く
  • CI/CD ほどの準備・保守はいらない

実際にやったこと

1. Xserver で SSH を有効化

Xserver のサーバーパネルから「SSH設定」を開き、SSH を有効化します。
公開鍵/秘密鍵は自分で生成しても、Xserver が発行したものを使ってもOKです。
秘密鍵はローカルの ~/.ssh に置き、chmod 600 しておきます。

2. サーバー側の確認

デプロイ先のディレクトリを確認します。
だいたいこんな感じです。

/home/ユーザー名/example.com/public_html/wp-content/themes/my-theme/

3. スクリプトを作成

ローカルのテーマディレクトリを差分アップロードするシェルスクリプト「deploy.sh」を用意します。
Xserver は SSH ポートが 10022 なのでそれも指定します。

#!/bin/bash

LOCAL_DIR="./wp-content/themes/my-theme/"
REMOTE="ユーザー名@サーバーIP:/home/ユーザー名/example.com/public_html/wp-content/themes/my-theme/"

rsync -avz --delete -e "ssh -p 10022" $LOCAL_DIR $REMOTE

bashで実行します。

bash ./deploy.sh

これでサクッと反映されます。
SCPじゃなくてrsyncを実行するので、差分だけを転送するため速くて快適です。

さらに発展させるには
機密情報を.envに記載して読み込ませるなどがあります。

必要ないファイルを除外する

しかしこのままだとthemeファイルの中身を全部転送するので、
いらないファイルは除外します。こんな感じです。

#!/bin/bash

LOCAL_DIR="./wp-content/themes/my-theme/"
REMOTE="ユーザー名@サーバーIP:/home/ユーザー名/example.com/public_html/wp-content/themes/my-theme/"

rsync -avz --delete \
  --exclude "node_modules" \
  -e "ssh -p 10022" \
  "$LOCAL_DIR" "$REMOTE"

–excludeで除外したいディレクトリを指定してあげます。

使ってみて感じたメリット

やってみた結果、これはいいなと率直に思いました。
フローを確立したあとは簡単すぎ、早すぎで超便利ですね。
具体的にはこんな感じ。

  • 「やりすぎ感」がなく、自分の手に馴染む
  • FTP より圧倒的に速い
  • 差分だけアップするので無駄がない
  • コード化されていて安心
  • ワークフローを管理しなくていい

まとめ

WordPress × Xserver のような小規模サイトの場合、FTP は古くて面倒だし、CI/CD は便利だけどちょっとやりすぎで保守が重い。

そんなとき、シェルスクリプトで簡易デプロイするのは、ちょうどいい選択肢です。
手軽で、安心で、続けやすい。
同じように「もっと楽したいけどやりすぎたくない」人におすすめです!

今回は以上です!