Как правильно развернуть CraftCMS 3 с помощью git?Я продолжаю получать разрешения - PullRequest
0 голосов
/ 12 марта 2019

Способ развертывания и обновления моего сайта craft 3 теперь заключается в том, чтобы перенести изменения в моем git-репо на пустой репозиторий на сервере, который имеет ловушку пост-получения, которая делает это:

#!/bin/sh
GIT_WORK_TREE=/home/ubuntu/www git checkout -f
cd /home/ubuntu/www && composer install --no-interaction --prefer-dist --optimize-autoloader

Но я не могу получить правильные разрешения.Git перезапишет режимы файлов, чтобы веб-сервер не мог записывать в нужные каталоги.

Есть ли другой способ развертывания или способ не допустить путаницы разрешений?

1 Ответ

1 голос
/ 13 марта 2019

Вы должны изучить https://deployer.org для развертывания craftcms поверх git, вот как я это делаю, исправляет все проблемы с разрешениями. Конфигурация развертывания может выглядеть следующим образом:

<?php
namespace Deployer;

require 'recipe/common.php';

// Project name
set('application', 'my_project');

// Project repository
set('repository', 'git@gitlab.com/website.git');

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

// Shared files/dirs between deploys 
set('shared_files', ['.env','config/license.key']);
set('shared_dirs', ['web/uploads', 'storage/logs', 'storage/backups']);

// Writable dirs by web server 
set('writable_dirs', ['web/uploads', 'storage/runtime', 'storage/logs', 'storage/backups', 'storage/runtime', 'web/cpresources']);
set('allow_anonymous_stats', false);

// releases
set('keep_releases', 3);

// Hosts

host('staging')
    ->hostname('example.com')
    ->port(22)
    ->user('root')
    ->set('deploy_path', '/var/www/staging'); 

host('production')
    ->hostname('example.com')
    ->port(22)
    ->user('root')
    ->set('deploy_path', '/var/www/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'
]);

after('deploy:failed', 'deploy:unlock');
...