@nqounetです。
Kansai.pmで@shiba_yu36さんが発表していた「Cinnamon」が便利そうだったので、使ってみました。
そのあと、sshでサーバーにログインして、公開しているディレクトリに移動して、pullしてから、サーバーを再起動、という操作を行なっていました。
サーバーは1つなので、特に面倒でも無いですが、1分程度は張り付いて作業する感じではありました。
まずはCinnamonをインストールします。
CinnamonはCPANに上がっているので、cpanmなどでインストールが可能です。
依存関係のモジュールも自動的にインストールしてくれるので、簡単です。
インストールが完了すると、「cinnamon」というコマンドが実行できるようになります。
このコマンドを実行すると、そのディレクトリから見て「config/deploy.pl」というファイルを自動的に読み込んでくれるので、gitで管理している場合は、プロジェクトのホームディレクトリからみて、「config/deploy.pl」になるように設定ファイルを作成すると便利です。
細かい書き方は、@naoyaさんのブログか、@shiba_yu36さんのスライド資料などを見ながら書くと良いでしょう。
私は「.ssh/config」にusernameも指定してありますが、必須項目らしいのでuserもsetしておきます。
そもそもsudoが出来ない場合はsudoできるようにする必要があります。
それでもエラーになる場合は、tty経由でしかsudo出来ないようになっている可能性があるので、その設定を解除します。
*TTY経由でないsudoの実行 - shibainu55日記
具体的には、rootになってからのvisudoで、
になっている部分をコメント(先頭に「#」を入力)にして無効にします。
うまくいく例
remote {
sudo qq{cd /var/www/myapp && git fetch origin && git checkout -q origin/master};
} $host;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
もしも、複雑な処理が必要であれば、シェルなどでスクリプトを作成して、そのスクリプトを実行するようにしても良いでしょう。
<h3>hypnotoadが見つからない</h3>
「hypnotoad」にかぎらず、PATHが通っていない場合があります。
コマンドをフルパスで書くか、特にperlbrewについては、perlbrewのbashrcを読み込む必要があります。
<h2>とあるdeploy.pl</h2>
それらを踏まえて(sudoはありませんが)作成した「config/deploy.pl」がこちらです。
@argsは要らなさそうなのですが、とりあえずつけています。
```text
use utf8;
use v5.12;
use Cinnamon::DSL;
set user => 'nqounet';
set application => 'myapp';
set deploy_to => '/home/nqounet/www/myapp';
role production => 'sakura.nqounet';
task update => sub {
my ($host, @args) = @_;
my $deploy_to = get('deploy_to');
my $app = get('application');
remote {
run qq{. ~/perl5/perlbrew/etc/bashrc && cd $deploy_to && git fetch origin && git checkout -q origin/master && hypnotoad script/$app};
} $host;
};
task restart => sub {
my ($host, @args) = @_;
my $deploy_to = get('deploy_to');
my $app = get('application');
remote {
run ". ~/perl5/perlbrew/etc/bashrc && cd $deploy_to && hypnotoad script/$app";
} $host;
};
|
そのあと、以下のコマンドを実行。
1
|
$ cinnamon production udpate
|
席を立ってトイレに行って戻ってくると、サーバーの再起動まで終わっていました。
これは楽チンですね。