334 文字
2 分
PHPのDeployerをCircleCI上で実行して自動デプロイ
概要
- PHPのDeployはファイルコピーなので、Railsのアプリケーションサーバが絡むデプロイに比べて楽で良い。
- CircleCI2.0上で、コンテナの準備を含めても1分で完了する。
- サンプルソースコード。
- Live app

CircleCIからDeployer

Setup
% cd phpapp% composer installCommand example
% time php vendor/bin/dep deploy test✈︎ Deploying master on blog.teraren.com✔ Executing task deploy:prepare✔ Executing task deploy:lock✔ Executing task deploy:release➤ Executing task deploy:update_codeCloning into '/home/matsu/Sites/teraren.com/phpapp/releases/2'...Counting objects: 36, done.Delta compression using up to 2 threads.Compressing objects: 100% (16/16), done.Writing objects: 100% (36/36), done.Total 36 (delta 12), reused 36 (delta 12)Connection to blog.teraren.com closed.✔ Ok✔ Executing task deploy:shared✔ Executing task deploy:writable✔ Executing task deploy:vendors✔ Executing task deploy:clear_paths✔ Executing task deploy:symlink✔ Executing task deploy:unlock✔ Executing task cleanupSuccessfully deployed! 15.56 real 0.65 user 0.60 sysSetup history
% composer init% composer require deployer/deployer --dev% php vendor/bin/dep init% vim deploy.php; vim hosts.ymlNginx側の設定。普通な感じで。
server { listen 80; listen [::]:80;
server_name phpapp.teraren.com;
location / { root /home/matsu/Sites/teraren.com/phpapp/current/webroot; index index.php index.html index.htm; access_log /var/log/nginx/phpapp.teraren.com main;
location ~ \.php { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }}まとめ
- DeployerとCircleCIの組み合わせはとても楽。
- AutoScale用の設定が無いので、AWSのCodeDeployと連携した方が良さそうです。
- CircleCI -> bastion -> Application server という構成のベストな設定は見つからなかった。自分でコマンドを色々書かないといけなさそうな気がする。それを考えるとCodeDeployに任せた方が楽な気がする。
PHPのDeployerをCircleCI上で実行して自動デプロイ
https://blog.teraren.com/posts/php-deployer/