PhpStormにて多段sshで外部サーバにデプロイする方法


背景

PhpStorm導入したんだけどEC2上の開発環境で直接作業したい。(楽に)
でもそのEC2は踏み台サーバー経由しないとアクセスできない

ってことで前回書いたのだが

これだとソース管理できない。
というか、接続先の外部サーバにsshで繋いでソース管理しないといけない(面倒)

今回はその課題を解決する

アプローチ方法

前回

開発環境(外部サーバー)をプロジェクトとして登録すればいいんじゃね?

今回

ローカルにプロジェクトを作成し、開発環境(外部サーバー)に自動デプロイすればいいんじゃね?

つまり方向を反対にした。

外部サーバー=>ローカル
ローカル=>外部サーバー

手法

以下、実際に行った手順を記載する。
※日本語環境で作業しています

ssh configの設定

まずは、前回も書いたけど、ssh configを設定して踏み台経由で目的のサーバにアクセスできるようにしよう。
sftp(ssh)接続で使用するconfigファイルに多段ssh接続の設定を追記する
jumpが踏み台でmy_project_hostが真に接続したいサーバーである

Host jump
 Hostname jump-ip
 User jump-user_name
 IdentityFile ~/.ssh/jump-key

Host my_project_host
 Hostname my_project_host-ip
 User my_project_host-user_name
 IdentityFile ~/.ssh/my_project_host-key
 ProxyCommand ssh -W %h:%p jump

設定が間違っていないか、一度sshで接続できるか試しておこう。

ローカルに該当プロジェクトを用意

  • ローカルに該当プロジェクトを用意する(自分はgit cloneした)
  • この辺は人によって違うので割愛

PhpStormの設定

プロジェクトの登録

  • PhpStormを起動する
  • menu>ファイル>既存ファイルから新規プロジェクトを選択
  • 「ソース・ファイルはローカル〜」を選択

デプロイサーバーの設定

  • 上記のローカルで作ったプロジェクトを選択する

  • プロジェクトが開くと思うので、引き続きmenu>ツール>デプロイ>構成を選択する

  • デプロイモーダルが開くので左上の「+」を押しデプロイ先の設定を行う

  • 適当な名前をつけ、sftpを選択する

  • 前回と同様に設定を行う

紐付け(マッピング)

  • menu>ツール>デプロイ>自動アップロードを選択する
  • デプロイ先を求められるので先ほど登録したサーバを選択する
  • menu>ツール>デプロイ>構成>マッピングにてサーバにマッピング情報を設定する
  • サーバのデプロイパスを入力する(アップロード先になる)

  • menu>ツール>デプロイ>オプションで自動アップロードを「明示的な保存アクション時」にする(好みだが)

以上でローカルのファイルを保存すると自動的に対象サーバーにアップロード処理が走るようになった。

雑感

通信時に多少遅い時もあるが、概ね良好。
タスクランナー走らせて、PhpStorm以外でファイルを変更した時などには
設定から「サーバーへの自動アップロード」を「常時」にすればアップロードされるが、
一度PhpStormにフォーカスを持ってこないといけない現象がおきているのでちょっと面倒。
この辺の課題を今後解決していきたいと思う。