Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:deploy:deployer:tavoli_gepek

< Deployer

Távoli gépek

Feladatok távoli gépen

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.

deploy.php
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

Automatikus kapcsolódás

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

Könyvtárak létrehozása

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'
]);
  • deploy:prepare
    • Ha a deploy_path útvonal nem létezik, a prepare létrehozza.
    • Ellenőrzi a következőket is:
      • releases – ebben a könyvtárban tárolódik a release
      • shared – minden release számára közös fájlok
      • .dep – Deployer metaadatok
  • success
    • A siker kiírása

Információk

...
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!

Komplett deploy

Gépek:

  • Adott a fejlesztői gép, ahol futtatjuk a dep utasítást.
  • Webhosting gép, ahova a terméket telepítjük.
  • Git tároló, ahonnan telepítjük a terméket.

...
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'
]);
  • deploy:prepare – könyvtárszerkezet biztosítása
  • deploy:lock – másik deploy folyamat nem futhat
  • deploy:release – új release könyvtár készítése
  • deploy:update-code – a git tárolóból letöltjük a kódot
  • deploy:shared – a közös fájlok feltöltése
  • deploy:writable – fájl jogok beállítása (chown, chgrop, chmod, acl)
  • deploy:vendors – composer függőségek telepítése
  • deploy:clear-path
  • deploy:symlink – a current telepítés cseréje az aktuális release-re
  • deploy:unlock – a lock törlése
  • cleanup – a régi nem kívánatos kiadások (release) törlése
  • success – üzenet a sikerről

Futtatás:

dep deploy

Deploy részletei

deploy:prepare

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.

  • releases – a kiadás ebben a könyvtárban tárolódik
  • shared – a kiadások közös állományai
  • .dep – metaadatok Deployer számára

deploy:lock

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.

deploy:release

Ú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.

deploy:update_code

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}}');
});

deploy:shared

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:

  • a release_path-ból a shared könyvtár másolása ha az nem létezik
  • könyvtár törlése a release_path-ból
  • szimbolikus link létrehozása a shared könyvtárból a release_path-ba.

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.

deploy:writable

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:

  • chown
  • chgrp
  • chmod
  • acl

Egy mód beállítása:

set('writable_mode', 'chmod');

Sudo használata esetén:

set('writable_use_sudo', true);

deploy:vendors

A composer függőségek telepítése. A composer kapcsolóit konfigurálható composer_options paraméterrel.

deploy:clear_paths

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.

deploy:unlock

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

cleanup

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);

success

Üzenet a sikerről.

Git tároló beállítása

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

Előző munkamenet visszaállítása

Ha hiba van a telepítési folyamatban, vagy probléma van a kiadással, csak futtassuk a következő parancsot:

dep rollback

Újraindítás

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');
oktatas/web/deploy/deployer/tavoli_gepek.txt · Utolsó módosítás: 2020/02/07 19:56 szerkesztette: admin