Команда rm не выполняется из-за отказа в доступе

в моем сценарии развертывания 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

Я предполагаю, что каталог создается apache во время выполнения, и ваш работающий пользователь capistrano не является частью группы apache? Единственный способ заставить это с помощью sudo. Вы должны убедиться, что ваш текущий пользователь Cap является частью группы apache, а umask по умолчанию для apache делает файлы доступными для чтения по группам.

pwaterz 12.02.2019 16:02
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
5 342
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это распространенная проблема, вызванная плохой конфигурацией сервера или запуском развертывания не тем пользователем. Вы пытаетесь выполнить скрипт с пользователем x, и права доступа к этому файлу принадлежат www-data, и ваш пользователь x не может удалить его, вы получите эту ошибку. Ваш пользователь должен иметь права на удаление этого файла. Пользователь, выполняющий скрипт, отличается от пользователя, выполняющего веб-запрос.

В моей конфигурации apache запускается app/app, и мой webserver_user также является app, и все файлы принадлежат app/app. Однако каким-то образом после доступа к веб-серверу файлы под /var/cache/prod/pools/ принадлежат root. Есть ли места, которые мне нужно проверить??

whitebear 12.02.2019 16:53

Настройте своего пользователя, который выполняет развертывание, чтобы пользователь имел право удалять файлы, созданные сервером apache. Ваше пользовательское «приложение» должно иметь права на удаление файлов, созданных веб-сервером, если веб-сервером является apache, тогда группа пользователей будет «www-data». Вы не можете изменить это с помощью конфигурации, которую администратор вашего сервера должен добавить для пользователя «приложения».

vytsci 12.02.2019 16:57

У вас может быть cron или какая-либо другая служба, которая запускается пользователем root. Тогда файлы кеша будут иметь root в качестве владельца.

vytsci 12.02.2019 17:00

Например, проект может иметь задачу супервизора, работающую от имени пользователя root или CRON. Существует несколько сценариев, в которых эти файлы могут принадлежать пользователю root.

vytsci 12.02.2019 17:02

ух ты!!! @vytsci вы правильно указали. У меня есть скрипт cron от root. Это должно быть причиной моих проблем.

whitebear 12.02.2019 17:15

Да, ваши сценарии CRON также должны запускаться пользователем «приложения», иначе у вас возникнут проблемы с разрешениями.

vytsci 12.02.2019 17:21

Большое спасибо, вы решили мою давнюю проблему.

whitebear 13.02.2019 10:14

@whitebear без проблем :)

vytsci 13.02.2019 10:14

Другие вопросы по теме