RocketeerをLinux初心者が導入する

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以上じゃないとダメだったんですね!
ってか、公式サイトにそういう必要な環境とか書いてないから、それなりの環境なら動くのかと思っていて、わからなかった…
これがいまどきの流儀なのでしょうか。若干の冷たさを感じます。。。[sad]

さて、気を取り直して、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 にソースコードがコピーされました![smile]

まだまだ、やりたいことが完全にできているわけではありませんが、とりあえずのインストールと設定をご紹介しました。

目的は、テストサイトとリリースバージョンを分けて簡単にデプロイすることなので、今度はそちらについて書こうと思います。

さて、今回はかなりつまづきが多くありました。
せめて英語ができれば、もっと早く設定ができたはず、としみじみIT界における英語の重要度を感じました。
日本語の情報もある程度はあるのですが、みなさん私にとっては肝心なところを省略されていたり、情報が古いので、結局公式サイトをほぼ全部読みました。(大した量ではないですが)

しかし、死にそうになるほど、次は強くなる設定の主人公って誰でしたっけ?
そんな気分でこれからも戦闘力を上げるためにがんばっていきます![huh]

続きはこちら
Rocketeer テストサーバーと本番サーバーでやることをわける

Rocketeerでブランチを分けてデプロイする

GitHub

GitのコミットをRocketeerを使ってブランチごとにデプロイするやり方です。

下記のページの一番下に書いてありますが、ディレクトリとファイルを分けると簡単だしわかりやすいですね。
http://rocketeer.autopergamene.eu/II-Concepts/Connections-and-Stages.html

弊社では、Git-flowを採用していますので、ブランチは

  • master
  • release
  • develop
  • features

があります。

それらをサーバーにデプロイするように、Rocketeerでは次のようにディレクトリを分けます。

 /connections
   |--production(masterブランチ用)
   |--staging(releaseブランチ用)
   |--testing(developブランチ用)

それらのディレクトリに、scm.phpというPHPのファイルを作ります。
例えば、stagingディレクトリのscm.phpは、次のようにします。

 //scm.php
 <?
  return array(
 		'branch' => 'release',
 );

すると、

 rocketeer deploy --on="staging"

とやると、releaseブランチがサーバーにデプロイされます。

 rocketeer deploy --on="production"

とやると、masterブランチがサーバーにデプロイされます。

ちなみに、

 rocketeer update

だけだと、Rocketterの仕様上、ブランチを切り替えた時はデプロイができません。
ブランチを切り替えた時は、まず

 rocketeer deploy

してください。

Hello world!

WordPress へようこそ。これは最初の投稿です。編集もしくは削除してブログを始めてください !