使用Magallanes部署基本的Symfony应用程序

时间:2017-01-20 23:18:22

标签: symfony deployment

使用简单的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

怎么办?

1 个答案:

答案 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