使用简单的Symfony应用程序来演示持续的传递管道。但是,我无法使用Magallanes完成部署。部署完成后,我需要每次都手动运行bin/console cache:clear --env=prod --no-debug
。我有以下环境配置:
#production
deployment:
user: root
from: ./
to: /var/www/foo/
excludes:
strategy: rsync
releases:
enabled: false
max: 2
symlink: current
directory: releases
hosts:
- foo
tasks:
pre-deploy:
on-deploy:
post-release:
post-deploy:
- composer/install
- general/manually:
- HTTPDUSER=`ps axo user,comm | grep -E \'[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx\' | grep -v root | head -1 | cut -d\ -f1`
- general/manually:
- setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var
- general/manually:
- setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var
- general/manually:
- chmod +x bin/console
- general/manually:
- bin/console cache:clear --env=prod --no-debug
正如您所看到的,许多手动任务可以获得正确的权限。我访问页面时收到的错误如下:
PHP Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "/var/www/omnia/var/logs/prod.log" could not be opened: failed to open stream: Permission denied'
我希望我的任务可以修复此权限问题,特别是最后一个问题,我打电话给cache:clear
。
怎么办?
答案 0 :(得分:1)
我不知道magallanes
在脚本结束时,您可以将www-data的权限设置为app/logs/*
和app/cache
。喜欢
chmod www-data -r app/logs app/cache
如果您更喜欢使用命令行,则必须使用--no-warmup for symfony来不创建任何内容。它不会解决日志问题
php app/console cache:clear --env=prod --no-warmup --env=prod