A deployer használata távoli gépek esetén a legelőnyösebb.
A távoli host gépen – a példa kedvéért – vegyünk fel egy karol nevű felhasználót:
adduser --home /srv/www/karol.net --shell /bin/bash karol
Ha a feladatokat távoli gépen szeretnénk futtatni, akkor szükségünk van egy host bejegyzésre.
namespace Deployer; require 'recipe/common.php'; task('teszt', function() { writeln('Helló Világ'); }); task('pwd', function() { $res = run('pwd'); writeln("Az aktuális könyvtár: $res"); }); host('192.168.5.103') ->user('karol') ->set('deploy_path', '/srv/www/karol.net/');
Futtatás:
dep pwd
➤ Executing task pwd karol@192.168.5.103's password: Aktuális könyvtár: /srv/www/karol.net ✔ Ok
Az automatikus kapcsolódáshoz a fejlesztői gépen
létre kell hozni egy kulcspárt (titkos és nyilvános), majd a
nyilvános kulcsot fel kell másolni a távoli gépre.
A példánkban a távoli gép 192.16810.11
, a felhasználó
pedig janos.
$ ssh-keygen $ ssh-copy-id janos@192.168.10.11
Minimális deploy:
<?php namespace Deployer; require 'recipe/common.php'; host('192.168.10.11') ->user('janos') ->set('deploy_path', '/var/www/html/htdocs'); task('deploy', [ 'deploy:prepare', 'success' ]);
... task('deploy', [ 'deploy:info', 'deploy:prepare', 'success' ]);
Futtatás:
dep deploy
Eredmény:
✈︎ Deploying HEAD on 192.168.10.11 ✔ Executing task deploy:prepare Successfully deployed!
Gépek:
... task('deploy', [ 'deploy:info', 'deploy:prepare', 'deploy:lock', 'deploy:release', 'deploy:update_code', 'deploy:shared', 'deploy:writable', 'deploy:vendors', 'deploy:clear_paths', 'deploy:symlink', 'deploy:unlock', 'cleanup', 'success' ]);
Futtatás:
dep deploy
A telepítés előkészítése. Ellenőrzi a deploy_path útvonalat. Ha nem létezik létrehozza. A következő könyvtárakat is ellenőrzi.
A zárolás nem engedi egy másik telepítés futtatását. A zárolás a .dep/deploy.lock fájl létrehozásával történik. Ha a telepítést a Ctrl+C billentyűkombinációval szakítottuk meg, akkor töröljük a fájlt dep deploy:unlock futtatásával. Ha a telepítés sikertelenül áll le, akkor a deploy:unlock automatikusan megtörténik.
Új release könyvtár készítése, a release_name config paraméter alapján. Olvassa a .dep/releases-t is, hogy megkapja az előző kiadások listáját.
Ha a deploy_path útvonal van egy korábbi kiadási hivatkozás, akkor az törlődik.
Az új verzió letöltése a git használatával. Ha a git 2.0 változatát használod és be van állítva a git_cache változó, ez a feladat a korábbi kiadás állományait használja, csak a megváltozott fájlok kerülnek letöltésre.
Saját átviteli stratégiához írja át a deploy.php feladatot:
task('deploy:update_code', function () { upload('.', '{{release_path}}'); });
Osztott fájlok és könyvtárak elkészítése a shared könyvtárból, a release_path-ban megadott helyre. Magad is létrehozhatsz shared_dirs és shared_files config paramétereket. A folyamat lépései a következők:
Ugyanezek a lépések következnek az osztott fájlokkal. Ha a rendszer támogatja a relatív szimbolikus hivatkozásokat, akkor azokat használja, egyébként abszolút hivatkozást.
Alapértelmezetten a writable_dirs-ben felsorolt könyvtárakat írhatóvá tesszük acl segítségével, a setfacl segítségével. Ez a művelet megpróbálja kitalálni a http_user nevét, vagy magunk is beállíthatjuk:
set('http_user', 'www-data');
Beállítás csak adott gépre:
host(...) ->set('http_user', 'www-data');
Ez a művelet a következő írhatósági módokat támogatja:
Egy mód beállítása:
set('writable_mode', 'chmod');
Sudo használata esetén:
set('writable_use_sudo', true);
A composer függőségek telepítése. A composer kapcsolóit konfigurálható composer_options paraméterrel.
A clear_paths-ban megadott könyvtárak törlése. Ez a művelet a sudo használatával futtatható, a clear_use_sudo paraméterrel.
A current szimbolikus link átirányítása a release_path-ra. Ha a távoli gép támogatja az atomi szimbolikus link váltást, akkor azt fogja használni.
Törli a .dep/deploy.lock állományt. Magad is futtathatod törölheted a fájlt a következő paranccsal:
dep deploy:unlock staging
A régi kiadások törlése a keep_releases kapcsolóval. A -1 korlátlan kiadásnak tekintendő.
Hány kiadás legyen megőrizve:
set('keep_releases', 10);
Üzenet a sikerről.
set('repository', 'git@192.168.5.104:username/repository.git');
A távoli git szerverre is töltsük fel nyilvános kulcsunkat. Például:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub janos@192.168.5.103
Ha hiba van a telepítési folyamatban, vagy probléma van a kiadással, csak futtassuk a következő parancsot:
dep rollback
A deploy után újraindítjuk a php7.0-fpm-t.
task('reload:php-fpm', function () { run('sudo /bin/systemctl reload php7.0-fpm'); }); after('deploy', 'reload:php-fpm');