デプロイとは、開発したサイトなどのデータをサーバーにアップすることを言うのですが、これが意外に悩ましい。
Gitでプッシュしたら公開されると良いのですが、それだけだとどうしても厳しい場面がありました。
PHPのプロジェクトが多いので、PHP用デプロイメントツールDeployerというものを使ってみました。
Deployerの概念
ほかのデプロイツールもそうかもしれませんが、Gitのリポジトリで管理されたファイルをデプロイします。
つまり、デプロイのサーバーからGitサーバーやgithubにアクセスできる必要があります。
例えば、サーバーにGitをインストールしたり、ssh keyを配置したり、あらかじめ準備しないといけません。
最初、この辺りのことをよく理解していなくて、ハマりました。
Deployerの使い方
ざっと説明して見たいと思います。
Deployer — Deployment Tool for PHP
Deployerのインストール
サイトでは、ダウンロードして、グローバルの場所から実行するように説明しています。
デプロイ情報(サーバーやそのパスワードなど)とそのツールを、リポジトリなどで共有するかどうか、セキュリティ的にはよくないかもしれませんので、判断が難しいですが、データ一式をリポジトリ含めてしまいました。
その場合、deployer.pharを公式サイトからダウンロードして、プロジェクト内に設置すれば良いだけなので、そこは手軽です。
composerで管理できますが、プロジェクトのPHPのバージョンで上手くいかなかったので、普通にダウンロードするのが簡単です。
deploy.phpを作る
まず、deploy.phpを作る必要があります。
このファイルは、デプロイする内容を記述するもので、その内容をレシピと呼びます。
ターミナルなどで、プロジェクトに移動し、コマンドを実行すれば、deploy.phpが作成できます。
$ php deployer.phar init
その時、いくつかプロジェクトのタイプを選ぶことができるのですが、明確にあったプロジェクトが分からなければcommonになると思います。
デフォルト(common)では、レシピがひと通り入っています。
listコマンドを実行すると、レシピで設定されたデプロイのコマンド(タスク)が表示されます。
$ php deployer.phar list
deploy.phpの編集
deploy.phpをプロジェクトにあうように編集していきます。
一番大事なのは、リポジトリを設定することです。
set('repository', '');
あとは、デプロイするサーバーにアクセスできるように設定を記述します。
host('project.com') ->stage('production') ->set('deploy_path', '/var/www/project.com');
デプロイの手順をタスク化
DeployerのDocumentationを見ながら、デプロイの手順をタスク化していくことになります。
サーバーでコマンドを実行したり、手順をタスク化すれば次からは楽です。
desc('My task'); task('my_task', function () { run(...); });
リリースパスとデプロイパス
Deployerは、デプロイ先にいくつかリリースバージョンを保持するので、デプロイしたディレクトリが、公開する場所になりません。
デプロイしたディレクトリ内のcurrentを公開ディレクトリにしたり、httpd.confで設定する必要があります。
デプロイ!
準備ができたら、できるだけ詳細が分かるようにvvvをつけて、実行しましょう。
$ php deployer.phar deploy -vvv hostname
まとめ
レシピやタスクを作れてしまうと楽なのですが、それまでが大変でした。
他のツールも似たような感じなので、もっと楽なると個人的には嬉しいです。
では、また!
技術評論社
売り上げランキング: 4,087
コメント