PHP
RocketeerをLinux初心者が導入する
かねてから、デプロイツールが必要と感じていましたが、ここにいたり、Rocketeerを導入してみました。
Rocketeer2.0.4 です。
Rocketeer公式サイト
で、いろいろあって、Linux初心者である私が導入することになりました。
どのぐらい初心者かというと、コマンドの類は基本的なもの以外はそのつどぐぐっているぐらいの初心者です。
あまりにつまづきポイントが多かったので、他の初心者の方にも参考になるかと思われますので、つまづきポイントもあわせて紹介していきます。
ちなみに、かかったのは約一日程度です。
サーバーにRocketeerをインストールする
公式サイトにあるように
$ wget http://rocketeer.autopergamene.eu/versions/rocketeer.phar
$ chmod +x rocketeer.phar
$ mv rocketeer.phar /usr/local/bin/rocketeer
とやってみます。
Getting Started にあるように、
[root@www01 ~]# rocketeer ignite
とやってみます。イグナイトパスだ!
と、まずは
-bash: rocketeer: コマンドが見つかりません
となってしまいます?早くもつまづきましたね。
「そうだ…どうせ僕なんかがやっても、ダメだってわかってたんだ…。
絶対エラーが出て…こういうのがスムーズに使えるわけないってわかってたんだ…」
と泣きそうなシンジくんの声でつぶやいてみます。
サーバーの管理者に聞いてみると、ルートユーザーは/usr/local/bin/rocketeerにパスを通してない、ということでした。
ハッ!盲点でしたね。
ちなみに、パスを通してあるディレクトリは、envというコマンドで確認します。
なるほど、勉強になる。
で、管理者の言うとおり、普通のユーザーになり、
[user1@centos6 ~]$ rocketeer ignite
とやってみます。今度は
PHP Parse error: syntax error, unexpected '[' in
phar:///usr/local/bin/rocketee r/vendor/illuminate/support/Illuminate/Support/helpers.php on line 426
というエラーが出ます。
インストールの仕方が悪かったかな?
Rocketeerを紹介しているサイトでは、composerを使ってインストールする方法の方が多く紹介されています。composerが必要だとも解説サイトなどでも紹介されています。
やっぱりcomposerを入れないといけないのかな?と考え、今度はcomposerをインスコします。
composer公式サイト
composerのインストールは簡単です。
curl -sS https://getcomposer.org/installer | php
とします。
[user1@centos6 ~]$ composer require anahkiasen/rocketeer
すると、composerさんが、PHP Parse error: syntax error, unexpected ‘[‘ のエラーの意味を教えてくれました。
[user1@centos6 ~]$ composer require anahkiasen/rocketeer
Using version ~2.0 for anahkiasen/rocketeer ./composer.json has been created Loading composer repositories with package
information Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- anahkiasen/rocketeer 2.0.6 requires php >=5.4.0 ->
your PHP version does not satisfy that requirement.
はうぁ!PHP 5.4.0以上じゃないとダメだったんですね!
ってか、公式サイトにそういう必要な環境とか書いてないから、それなりの環境なら動くのかと思っていて、わからなかった…
これがいまどきの流儀なのでしょうか。若干の冷たさを感じます。。。
さて、気を取り直して、PHP5.4以上のサーバーで上記をもう一度やってみます。
$ wget http://rocketeer.autopergamene.eu/versions/rocketeer.phar
$ chmod +x rocketeer.phar
$ mv rocketeer.phar /usr/local/bin/rocketeer
続けて
$ rocketeer ignite
としてみると、
No connections have been set, please create one: (production)
サーバーのコネクションを聞くダイアログが始まり、動いた!! と感動ひとしおです。
ちなみに、composerがなくても使えます
リターンでいいと、みなさんおっしゃるので、とりあえずテスト的にリターンをずっと押していきます。
うへへ、早速deployしてやんぜ?!と次のようにすると、、
$ rocketeer deploy
No connections have been set, please create one: (production)
と、またもやサーバーのコネクションを聞くダイアログが始まってしまいます。
は?デジャビュ?デ・ジャ・ヴ?
と、もう一度リターンを押してみて、同じようにしてみると
$ rocketeer deploy
No connections have been set, please create one: (production)
となり、どうやら自分が無限ループしています。。。。
これ、自分が今いる場所が
/home/user1/.rocketeer
のまま、
$ rocketeer deploy
ってやっちゃうと、こうなっちゃうんですね~。
cd ..
とやって、/home/user1/に移動してから、
$ rocketeer deploy
とやると、今度はちゃんとできたっぽい!!
やったー!!!。
もちろん、なんのサーバー情報も入れてないし、SVNの情報も入れていないので、設定はこれからです。
しかし、ここまで長かった…そして、ここからもまだかかります。
♪この道わが旅。果てしなく続く~♪
Rocketeerを設定する
/home/user1/.rocketeer
の中に、
config.php hooks.php paths.php scm.php stages.php
deployments.json logs remote.php program1.json strategies.php
というファイルたちができています。
次のファイルを設定すると、最低限動きます。
・config.php … ソースコードをデプロイする先のサーバー情報を入力します。サーバー本体に導入する場合は、localhostです。
・scm.php … ここにバージョン管理ツールの情報を入力します。branchは、特にbranchを作っていない状況だったら’/’としておきましょう。
・remote.php … ここに、ソースコードをデプロイするサーバーのパスを指定します。
と、これだけまずは設定して、
$ rocketeer deploy --pretend
とやってみます。–pretendをつけると、実際に動作するのではなく、リハーサル的にどんな実行をするのか見せてくれます。
やってみたほうがいいでしょう。
pretendで動作を確認したら、今度は実際にやってみます。
$ rocketeer deploy
おぉー !!ちゃんと動作し、パスで指定したディレクトリに
--/program1
|-current
|-releases
|-20150226…
というディレクトリ達がいますね!
やった!と喜ぶのもつかの間。。。
確かに、これでいいんだけど、弊社で開発中のプログラムたちのディレクトリ構成と合わない…。
しかし、ディレクトリ構成を変えるオプションはないみたいです。
「どぎゃんしたらよかとね…」
と考えていたところ、次のサイトで
https://github.com/rocketeers/rocketeer/issues/120
「デプロイした後のタスクで、mvしてディレクトリを移せばいいんだよ!」
とおっしゃっている方がいまして、「なるほど!目からうろこ。」です。
さて、デプロイした後のタスクはどうやって設定するかと言うと、さっきの.rocketeerの中にあったhooks.phpを使います。
'after' => array(
'setup' => array(),
'deploy' => array('testing' => array(
'cp -dr ../../current/* /var/www/hogehogeappli/public_html/rocketeer',
)
),
'cleanup' => array(),
),
などとやってみます。
すると、自動的に/var/www/hogehogeappli/public_html/rocketeer にソースコードがコピーされました!
まだまだ、やりたいことが完全にできているわけではありませんが、とりあえずのインストールと設定をご紹介しました。
目的は、テストサイトとリリースバージョンを分けて簡単にデプロイすることなので、今度はそちらについて書こうと思います。
さて、今回はかなりつまづきが多くありました。
せめて英語ができれば、もっと早く設定ができたはず、としみじみIT界における英語の重要度を感じました。
日本語の情報もある程度はあるのですが、みなさん私にとっては肝心なところを省略されていたり、情報が古いので、結局公式サイトをほぼ全部読みました。(大した量ではないですが)
しかし、死にそうになるほど、次は強くなる設定の主人公って誰でしたっけ?
そんな気分でこれからも戦闘力を上げるためにがんばっていきます!
続きはこちら
Rocketeer テストサーバーと本番サーバーでやることをわける