前回の続き

  • レンタルサーバのDocument Root・バーチャルドメイン
  • DB Schemaを 開発/ステージング/本番 の3つ用意
  • gitブランチを develop/staging/master の3つ用意

で開発を回していたが
ソースアップロードが手動なのはツライ。
ですが良いツールを見つけました。

git-ftp

そこで git-ftp です。
基本的な概念やインストール方法等は ここを参照して下さい。

ざっくりと言うと
git の差分ファイルのみをFTPアップロードするツール
になります。

通常に使う分には上記の参考リンクの手順のみでよいのですが
gitブランチ、Document Root をそれぞれ3つあります
ですので参考にしたのはここの 「FTPは使える場合」以下の部分になります。

[接続情報の設定]

git push が完了した状態で
各環境別に git-ftp の接続情報を設定します。
git-ftp.xxx.url、git-ftp.xxx.user
のxxx部分に各環境を表す値を設定するのがポイントです。

# 開発環境
git config git-ftp.dev.url ftps://FTPドメイン/
git config git-ftp.dev.user 開発環境FTPユーザ
git config git-ftp.dev.password 開発環境FTPパスワード

# ステージング環境
git config git-ftp.stg.url ftps://FTPドメイン/
git config git-ftp.stg.user ステージング環境FTPユーザ
git config git-ftp.stg.password ステージング環境FTPパスワード

# 本番環境
git config git-ftp.prd.url ftps://FTPドメイン/
git config git-ftp.prd.user 本番環境FTPユーザ
git config git-ftp.prd.password 本番環境FTPパスワード

 

[初回アップロード]

下記で git-ftpの初期化 & 今いるブランチの最新のコミットのファイルを全アップロードします。
初回アップロードは時間かかるので
茶でもしばきながら気長に待ちましょう。

# 開発環境
git ftp init -s dev

# ステージング環境
git ftp init -s stg

# 本番環境
git ftp init -s prd

 

[2回目以降のアップロード]

2回目以降は下記コマンドでOKです。

# 開発環境
git ftp push -s dev

# ステージング環境
git ftp push -s stg

# 本番環境
git ftp push -s prd

 

 

[注意点]

注意点としては

  1. 現在のワークブランチのファイルをアップロードするので、環境を変えてアップロードする場合は、必ずブランチを切替える事
  2. ドキュメントルート直下に.git-ftp.logというファイルを作成されるのですが、これを削除すると差分アップデート出来なくなる

になります。
1に関して
ブランチ切替えてfetchしてFTPアップロードするshellとかつくると良いです。(dev-upload.sh/stg-upload.sh とか)

2に関して
.git-ftp.log にはアップロード時の commitハッシュを保持し
ハッシュ値が違う場合にのみ差分をアップロード/削除する機構になっているので
一度アップロードした後でも、push内容を元に戻し
再びgit ftp pushすると元の状態に戻ります。

まとめ

まとめると

  • レンタルサーバーでも複数環境を用意
  • ソースファイルは必ずブランチ切って git 管理
  • git-ftp 使って差分ファイルアップロード。手動でアップロード地獄からの開放
  • アクセス制限の設定も忘れずに(FTP接続制限、ベーシック認証等)

感想

今回レンタルサーバ使って良かった点

  • 基本ソースファイルを配置したら動く
  • 月額料金が固定かつ安い(どこのレンサバも ¥1,000前後)

今回レンタルサーバ使って良くなかった点

  • FTP固定のところが多いのでgit-ftp無しだと手動アップロードなのでツライ

良かった・良くなかった点を上げてみましたが
今回携わったプロジェクトに至っては特にデメリットがない感じでした。

最後に

普段パブリッククラウドサービスを使っているので
レンタルサーバーには正直あまりいいイメージが無かったのですが
トラフィックが増えない事が分かり切っているいるものであれば
各種設定自体は簡単に使えて便利だなと感じました。

ですが

  • ミドルウェアのセキュリティパッチ等の対応がレンサバ側のタイミングで行われる
  • スケールアウト不可等のリスクがある

等のデメリットを理解した上で選択することが大事なってきます。

  • 安い&月額の金額が固定である。
  • レンタルサーバしか知らない

等の理由のみで選択すると後でエライ目に合います。
両方知った上で、適切な選択をするのも僕らの仕事なので
そこの判断だけは間違えないようにしたいですね。
GCP => レンタルサーバに移行したお前は?っていうツッコミは無しで^^;

金額面を含めてお客様(のサービス)に適切な技術は何か?
本当にスケール・高可用性等 が必要なのか?
と突き詰めた上でレンタルサーバ(VPS) or パブリッククラウドを選択する事が大事です。

この記事を見て
「選択肢の一つとしてレンタルサーバもいいな」
と少しでも感じて頂ければ幸いです。

つくる人募集中

PIALab.ではつくるひと(エンジニア)を募集しています。
気軽にPIALab.に遊びに来て、カフェでお話等しませんか?
GCP => レンタルサーバになった詳細は大人の事情があって話せないので
就職希望ではなく話だけ聞きたい人も気軽に遊びに来て下さい。

募集については詳しくはこちら