в моем сценарии развертывания deploy.rb
lock "3.11.0"
set :application, "myapp"
set :repo_url, "ssh://[email protected]/home/app/myGit/myapp.git"
set :branch, 'master'
set :deploy_to, "/var/www/html/myapp"
#set :linked_files, %w{app/config/parameters.yml}
set :linked_dirs, %w{log vendor var node_modules public/build public/dlstore config/spool}
#somehow app/cache doesn't work...
set :format, :pretty
set :log_level, :debug
set :keep_releases, 3
after 'deploy:starting', 'composer:install_executable'
set :yarn_flags, "--prefer-offline --production --no-progress"
set :yarn_roles, :app
в production.rb
set :stage, :prod
set :symfony_env, "prod"
set :webserver_user, "app"
#set :controllers_to_clear, ["app_*.php"]
set :composer_install_flags, '--prefer-dist --no-interaction --optimize-autoloader'
server 'myapp.com', user: 'app', port: 22, roles: %w{app db web} # edit IP / Port and SSH user of your production server
SSHKit.config.command_map[:composer] = "php #{shared_path.join("composer.phar")}"
Я установил keep_releases 3, однако при развертывании у меня возникли проблемы с разрешениями.
Я не знаю, почему Aapache изменил разрешение,
Возможно ли принудительно выполнить rm при развертывании??
DEBUG [cd2bf6b1] cannot remove `/var/www/html/myApp/releases/20190212120003/var/cache/prod/pools/VQruNbwKF0/X/3/tCcgRMw5TEmYO-kHpJ0t'
DEBUG [cd2bf6b1] : Permission denied

Это распространенная проблема, вызванная плохой конфигурацией сервера или запуском развертывания не тем пользователем. Вы пытаетесь выполнить скрипт с пользователем x, и права доступа к этому файлу принадлежат www-data, и ваш пользователь x не может удалить его, вы получите эту ошибку. Ваш пользователь должен иметь права на удаление этого файла. Пользователь, выполняющий скрипт, отличается от пользователя, выполняющего веб-запрос.
В моей конфигурации apache запускается app/app, и мой webserver_user также является app, и все файлы принадлежат app/app. Однако каким-то образом после доступа к веб-серверу файлы под /var/cache/prod/pools/ принадлежат root. Есть ли места, которые мне нужно проверить??
Настройте своего пользователя, который выполняет развертывание, чтобы пользователь имел право удалять файлы, созданные сервером apache. Ваше пользовательское «приложение» должно иметь права на удаление файлов, созданных веб-сервером, если веб-сервером является apache, тогда группа пользователей будет «www-data». Вы не можете изменить это с помощью конфигурации, которую администратор вашего сервера должен добавить для пользователя «приложения».
У вас может быть cron или какая-либо другая служба, которая запускается пользователем root. Тогда файлы кеша будут иметь root в качестве владельца.
Например, проект может иметь задачу супервизора, работающую от имени пользователя root или CRON. Существует несколько сценариев, в которых эти файлы могут принадлежать пользователю root.
ух ты!!! @vytsci вы правильно указали. У меня есть скрипт cron от root. Это должно быть причиной моих проблем.
Да, ваши сценарии CRON также должны запускаться пользователем «приложения», иначе у вас возникнут проблемы с разрешениями.
Большое спасибо, вы решили мою давнюю проблему.
@whitebear без проблем :)
Я предполагаю, что каталог создается apache во время выполнения, и ваш работающий пользователь capistrano не является частью группы apache? Единственный способ заставить это с помощью sudo. Вы должны убедиться, что ваш текущий пользователь Cap является частью группы apache, а umask по умолчанию для apache делает файлы доступными для чтения по группам.