第5回【Altax編】PHPだけでもデプロイしたい!だってPHPアプリだもの。

まさくに


第5回【Altax編】PHPだけでもデプロイしたい!だってPHPアプリだもの。

こんにちは。バックエンドエンジニアのまさくにです。

「PHPだけでもデプロイしたい!」というわがままのもと、PHP デプロイツールを使ってみた本シリーズも本稿が最終回になります。最後を飾るツールは日本発、Altax になります。これまでの記事については過去記事をご覧ください。




 

今回デプロイされる PHP アプリケーションと環境

それではデプロイされる PHP アプリケーションを今回もご覧いただきましょう。Grass grewです。開始すると、それぞれのセルに草( w )がランダムに生えるようになっていて、草は自分の周囲に草が少なすぎても死ぬし、ありすぎても死にます。ある密度を保つとコミュニティとして生存が安定するという有名なライフゲームですね。今回はクリックされても野焼きで死ぬという仕様を付け加えたクソゲーです。

なお、今回テストを行った環境も前回までと同様 vagrant で作成した下記の環境です。PHP が動作する Web サーバーは別途設定をお願いします。ですが、Altaxはまこと残念ながら依存するパッケージのアップデートが必要なようで、PHP7 では動作できませんでした。ご使用にはご注意ください。

$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
$ php --version
PHP 5.6.29 (cli) (built: Dec  8 2016 08:42:35)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Altax のインストール

チュートリアルを見ながらインストールを進めます。下記コマンドで/usr/local/bin/altaxへインストールができるようです。適宜権限にはお気をつけください。

$ curl -L https://raw.github.com/kohkimakimoto/altax/master/installer.sh | sudo bash -s system

 

インストール後、実行をしてみます。

$ altax --version
Altax version 3.0.15 - ce5bcfb4203f6ee1e864712583d263fbc3277b1f

Altax is an extensible deployment tool for PHP.
Copyright (c) Kohki Makimoto <kohki.makimoto@gmail.com>
Apache License 2.0

Altax の設定

今回の「 Grass grew 」も下記のようなデプロイ手順が必要です。

  1. リモートサーバでソースコードを github から clone してくる
  2. composer install で Twig などの依存ライブラリを入れる
  3. php-fpm、nginx を再起動しておく

上記のことを Altax がやってくれるように設定を行います。まずは初期設定を行うために init のコマンドを叩きましょう。任意のディレクトリで下記コマンドを実行してください。最低限必要なファイルを作成してくれます。

$ altax init
Created file: /home/vagrant/altax/.altax/config.php
Created file: /home/vagrant/altax/.altax/composer.json
Created file: /home/vagrant/altax/.altax/.gitignore
$ tree -a
.
└── .altax
    ├── .gitignore
    ├── composer.json
    └── config.php

1 directory, 3 files

 

作成された config.php を修正します。基本的にチュートリアルに載っていたものを使用していますが、コマンドを追加しています。また接続先のサーバへはログインできるように設定をしておいてください。

▼ .altax/config.php: 接続先や実行されるコマンドの設定

<?php
// Autoloading for plugin command classes.
if (is_file(__DIR__ . '/vendor/autoload.php')) require_once __DIR__ . '/vendor/autoload.php';

// 接続先サーバ
Server::node("localhost", array("host" => "192.168.100.10"));

// タスクの登録
Task::register("deploy", function($task){

    // デプロイ先
    $appDir = "/var/www/altax";

    $task->exec(function($process) use ($appDir){

        // デプロイ先のディレクトリがなければ作成してclone
        // 既に存在すればpull
        $commands = array();
        if ($process->run("test -d $appDir")->isFailed()) {
            $commands[] = "sudo git clone https://github.com/masakuni-ito/grass-grew.git $appDir";
            $commands[] = "sudo chown -R vagrant:vagrant $appDir";
            $commands[] = "cd $appDir";
            $commands[] = "sudo /usr/local/bin/composer install";
        } else {
            $commands[] = "cd $appDir";
            $commands[] = "git pull";
        }

        $commands[] = 'sudo /bin/systemctl restart php-fpm.service';
        $commands[] = 'sudo /bin/systemctl reload nginx.service';
        $process->run($commands);
    }, array("localhost"));

});

Altax でデプロイをする

それではデプロイをしてみましょう。デプロイは altax deploy のコマンドで実行できます。

$ altax deploy
[localhost:7016] Run: test -d /var/www/altax
[localhost:7016] Run: sudo git clone https://github.com/masakuni-ito/grass-grew.git /var/www/altax && sudo chown -R vagrant:vagrant /var/www/altax && cd /var/www/altax && sudo /usr/local/bin/composer install && sudo /bin/systemctl restart php-fpm.service && sudo /bin/systemctl reload nginx.service
Cloning into '/var/www/altax'...
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
  - Installing twig/twig (v1.31.0)
    Loading from cache

Generating autoload files

 

デプロイ成功!

すべてのコマンドが連結して実行されるようですね。ブラウザで確認すると、確かに動作しています。

Altax はデフォルト機能では世代管理までを勝手に実行はしてくれないようです。ロールバック等を行う際には独自で実装するか手作業になるでしょう(デプロイツールだけには問題がとどまらないので、どちらにせよアプリケーションのロールバックは簡単ではないでしょう)。

本稿まとめ

今回で 4 つめの PHP デプロイツール Altax のご紹介でした。自分の環境では PHP7 で動作できなかったことが残念ですが、コマンドを書くということからシンプルで設定自体も非常に分かりやすかったのと、やはり学習コストを考えるに「日本語は最強」と思いました。

[全 4 回 総まとめ]PHP デプロイツールを試してみて

「 Deployer 」「 Rocketeer 」「 Magallanes 」そして今回の「 Altax 」と、シリーズを通して 4 種類のデプロイツールを試してみましたが、いかがでしたでしょうか。デプロイには悪魔が住んでいると思っていて、えてして原因不明瞭な失敗が起きたり、成功しているように見えて数日後に失敗が露見したりすることがあったりします。今回ご紹介したいずれのツールも固定化されるべき作業をソースコードに落とせるので、デプロイ作業の属人化解消やミスの最小化に役立ってくれるものと思います。

そして何よりも PHP アプリケーションのためのPHPデプロイツール。インストールは簡単でメンテナンスも PHP エンジニアができるはず!

今後の開発に導入していきます!

 

関連記事




まさくに
この記事を書いた人
まさくに

バックエンドエンジニア

おすすめ記事

Recommended by