•  93

Deploy Altego CMS

Instrukcja uploadu przygotowanej strony działającej na systemie Altego, przy użyciu deployer.org.

Jeśli znana jest nam obsługa biblioteki deployer.org i mamy ją prawdiłowo zainstalowaną to możemy przystąpić do konfiguracji "recepty" naszego systemu. Przed przystąpieniem do pracy dobrze jest skonfigurować klucze ssh'a do serwera oraz umieścić repozytorium w prywatnym repo np na https://gitlab.com/.

Inicjacja deployera

Uruchamiamy komendę dep init w katalogu naszego projektu lub tworzymy plik deploy.php. To właśnie w nim możemy umieścić gotowy kod:

<?php
namespace Deployer;

require 'recipe/common.php';

// Project name
set('application', 'example-site.com');

// Project repository
set('repository', 'link-do-repo');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true); 

// Shared files/dirs between deploys 
set('shared_files', []);
set('shared_dirs', ['tmp']);

// Writable dirs by web server 
set('writable_dirs', []);


// Hosts

host('adres-hostingodawcy')
    ->set('deploy_path', '~/domains/{{application}}/public_html');
    

// Tasks

desc('Deploy your project');
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'
]);

// [Optional] If deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

Ważne jest, aby wskazać katalog tmp jako dzielony, gdyż w nim znajdują się wszystkie pliki strony w wersji produkcyjnej. Wyłączamy opcję "vendor", gdyż domyślnie nie używamy zewnętrznych zależności.

Konfiguracja Altego

System automatycznie ukrywa pliki, które nie powinny znajdować się w publicznych repozytoriach. Jeśli pracujemy na prywatnym repo, musimy je dołączyć do projektu. Zakomentuj następujące linie w pliku .gitignore:

### production path ###
# /application/config/production
# install.txt

### temp files, ide files ###
*/logs/log-*.php
!*/logs/index.html
# prod */cache/*
!*/cache/index.html
!*/cache/.htaccess
*/nbproject
/nbproject/*
/nbproject/private/
# prod /tmp/*
# prod */tmp
# prod/third_party/
*sublime*

### third party files ###
# prod/application/third_party/res/views/*
# prod !*/application/third_party/res/views/enbfoods/*
# prod /modules/theme/
# prod !*/modules/theme/enbfoods

*/modules/install/
!*/modules/install/themes/admin.zip
!*/modules/install/themes/admin4.zip
!*/modules/install/themes/default.zip
Przekierowanie

Domyślnie deployer tworzy przekierowanie z folderu "current" do aktualnej wersji "release" w innym katalogu, dlatego należy ukryć ten folder poprzez modyfikacje pliku ".htaccess" (dot. Apache):

RewriteEngine on
RewriteCond %{HTTP_HOST} ^nazwa_domeny.pl$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.nazwa_domeny.pl$
RewriteCond %{REQUEST_URI} !current/
RewriteRule (.*) /current/$1 [L]

Następnie można użyć komendy dep deploy i jeśli wszystko poszło ok, nasza strona znajdzie się na sewerze!