@nqounetです。 Kansai.pmで@shiba_yu36さんが発表していた「Cinnamon」が便利そうだったので、使ってみました。
「デプロイ」って何?
「デプロイ」というのは、例えばローカル環境で開発しているウェブアプリやサービスを、実際に公開するサーバーにアップロードして、諸々の設定をして利用可能な状態にすることです。
Before Cinnamon
基本的にはgitを使って管理しているので、ローカルで変更をcommitしたあと、サーバーにpush。 そのあと、sshでサーバーにログインして、公開しているディレクトリに移動して、pullしてから、サーバーを再起動、という操作を行なっていました。 サーバーは1つなので、特に面倒でも無いですが、1分程度は張り付いて作業する感じではありました。
Setup Cinnamon
実際にCinnamonを使ってみます。 まずはCinnamonをインストールします。 CinnamonはCPANに上がっているので、cpanmなどでインストールが可能です。
| |
依存関係のモジュールも自動的にインストールしてくれるので、簡単です。 インストールが完了すると、「cinnamon」というコマンドが実行できるようになります。 このコマンドを実行すると、そのディレクトリから見て「config/deploy.pl」というファイルを自動的に読み込んでくれるので、gitで管理している場合は、プロジェクトのホームディレクトリからみて、「config/deploy.pl」になるように設定ファイルを作成すると便利です。 細かい書き方は、@naoyaさんのブログか、@shiba_yu36さんのスライド資料などを見ながら書くと良いでしょう。
わかりにくかったところ、引っかかったことをいくつか書いておきます。
Roleの指定
Roleを指定する時に、ホスト名を書くところがありますが、これは「.ssh/config」で指定しておいて、そのホスト名を書いておくのが正解です。 私は「.ssh/config」にusernameも指定してありますが、必須項目らしいのでuserもsetしておきます。
sudoができない
remoteでrunが可能なのに、sudoした時にエラーになる場合は、サーバーの設定を変更する必要があります。 そもそもsudoが出来ない場合はsudoできるようにする必要があります。 それでもエラーになる場合は、tty経由でしかsudo出来ないようになっている可能性があるので、その設定を解除します。 *TTY経由でないsudoの実行 - shibainu55日記 具体的には、rootになってからのvisudoで、
| |
になっている部分をコメント(先頭に「#」を入力)にして無効にします。
cdしたはずなのに.gitがない
1行ずつ実行するイメージでrunやsudoを使っても、実際にはコマンド毎にログインとログアウトを繰り返しますので、cdしてからのコマンドは「&&」で繋げて1行にして実行する必要があります。
| |
もしも、複雑な処理が必要であれば、シェルなどでスクリプトを作成して、そのスクリプトを実行するようにしても良いでしょう。
hypnotoadが見つからない
「hypnotoad」にかぎらず、PATHが通っていない場合があります。 コマンドをフルパスで書くか、特にperlbrewについては、perlbrewのbashrcを読み込む必要があります。
とあるdeploy.pl
それらを踏まえて(sudoはありませんが)作成した「config/deploy.pl」がこちらです。 @argsは要らなさそうなのですが、とりあえずつけています。
| |
After Cinnamon
基本的にはgitを使って管理しているので、ローカルで変更をcommitしたあと、サーバーにpush。 そのあと、以下のコマンドを実行。
| |
席を立ってトイレに行って戻ってくると、サーバーの再起動まで終わっていました。 これは楽チンですね。