tohokuaikiのチラシの裏

技術的ネタとか。

Deployerを使ってLaravelを本番環境にデプロイする場合のsshの接続設定

開発して、本番環境にDeployのたびにsshログインしてmigrateとかするのが面倒…というか忘れるので、Deployerというのを使った。

インストール

composerからインストール

LaravelアプリケーションDirectoryでComposerでインストール。

$ php -d memory_limit=-1 ~/bin/composer require deployer/deployer --dev

なんか、開発Vagrantがしょぼいのかメモリエラーが出るので -dオプションが必要になってる…

設定ファイル deploy.phpを作る

$ vendor/bin/dep init

すると対話形式の後、deploy.phpができる。既にあるgitリポジトリからremoteを察知してくれるみたい。便利

設定

hostsの部分があるけど、

<?php
// Hosts
inventory('deploy/hosts.yml');
// host('project.com')
//    ->set('deploy_path', '~/{{application}}');    

としてyamlファイルにまとめる。

ssh

sshに関するところだけ

staging:
  hostname:example.com
  user: itoh
  multiplexing: true
  sshOptions:
    port: 2222
    UserKnownHostsFile: /dev/null
    StrictHostKeyChecking: no
    IdentityFile: /home/vagrant/.ssh/id_rsa_example

これで、itoh@example.com:2222に専用の/home/vagrant/.ssh/id_rsa_exampleキーで入る。その際にFingerPrintはチェックしないし保存も/dev/nullにする(保存しない)。

とりあえずDeploy

なんかあったら怖いのでteststagingって作ってみてテストしてみる。

$ ./vendor/bin/dep deploy teststaging

なるほど、デプロイサーバーからgitで取ってくる必要があるのね。