イントロダクション
DeployerはPHP製のデプロイツールです。これを使うことでFTPでの手動公開でありがちな公開時のファイル漏れや、部分的なファイルアップロードによる公開途中の不具合などをかなり減らすことができます。また、過去バージョンを保存する機能により、公開後のロールバックにも対応します。
この設定において、ssh接続設定のところで少し複雑な部分があったため、忘れないようにメモしておきます。
Deployerの仕組み
公開はローカルPCからのコマンドにより実行しますが、サイトへの公開はローカル環境からではなくGit上のデータを公開します。
そのため、Gitの利用は必須となります。(ただしGithubではなくても、BitbucketやオンプレミスのGitなどでも問題ありません。)
設定
Deployerの基本設定はいろいろなサイトに記載がありますので、ここでは省略して、ssh周りの設定に絞ります。
DeployerにはローカルPC、Git、公開サーバーの各接続にsshを利用します。
具体的には以下の2点を設定します。
- deployを実行するローカルPCの公開鍵を公開サーバーに登録
- 公開サーバーの公開鍵をGitに登録
ローカルPC - 公開サーバー
ローカルPCでRSA暗号の鍵を生成します。
$ ssh-keygen -t rsa
生成が完了したら、下記コマンドで確認します。
$ ls ~/.ssh
id_rsa id_rsa.pub
相手先(公開サーバー)のauthorized_keysに自身(ローカルPC)の公開鍵(id_rsa.pub)を登録します。
SCPコマンドを使って、サーバー間転送を行います。こんな感じで記述します。
// scp [公開サーバーのユーザ名]@[公開サーバーのホスト名]:~/.ssh/id_rsa.pub .
$ scp public@public-server.com:~/.ssh/id_rsa.pub .
転送が完了したら、公開サーバー側でauthorized_keysにキーを追加します。(その後id_rsa.pubを削除)
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
$ rm id_rsa.pub
パーミッションを600に変更します。
$ chmod 600 authorized_keys
以上の設定が完了したら、ローカルPC - 公開サーバーの設定は完了です。
以下コマンドで接続テストを行います。
// ssh -l [公開サーバーのユーザ名] -i [秘密鍵のパス] [公開サーバーのホスト名] -p [sshのポート番号]
$ ssh -l public -i ~/.ssh/id_rsa public-server.com -p 22
公開サーバー - Git
こちらも同様にキーを設定します。
キーの生成は先の手順と同様に、今度は公開サーバーにて公開鍵、秘密鍵を生成します。
$ ssh-keygen -t rsa
Gitへの登録はファイル転送ではなくブラウザからコピペで登録します。
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0zaFz1R4V27....
↑これを丸々コピペ
Gitをブラウザから開いて、ユーザーのプロフィール設定からSSH鍵登録を行います。
(プロジェクトのSSH鍵登録ではないので注意!)
登録が完了したら接続テストを行います。
GitHubなら
$ ssh -vT git@github.com
BitBucketなら
$ ssh -T git@bitbucket.org
logged in as …の表示が出ればOK。