使用 ansible 部署重置生产环境中的 symfony 缓存文件权限

我正在使用 Symfony 5.0.7


我的实时部署 ansibleafter-symlink-shared.yaml文件:


---


- name: Set up infrastructure-related parameters

  template:

    src: '{{ playbook_dir }}/templates/.env_live.dist'

    dest: '{{ ansistrano_release_path.stdout }}/.env'



- name: Install Composer dependencies

  composer:

    command: install

    arguments: --classmap-authoritative

    no_dev: no

    optimize_autoloader: yes

    working_dir: '{{ ansistrano_release_path.stdout }}'


- name: Clear the cache

  command: 'php {{ release_console_path }} cache:clear --no-warmup --env=prod'


- name: Warm up the cache

  command: 'php {{ release_console_path }} cache:warmup --env=prod'


- name: Create DB if not exists

  command: 'php {{ release_console_path }} doctrine:database:create --if-not-exists --env=prod'

  register: create_db_output

  changed_when: create_db_output.stdout is not search('already exists. Skipped')


- name: Run migrations

  command: 'php {{ release_console_path }} doctrine:migrations:migrate --no-interaction --env=prod'

  register: run_migrations_output

  changed_when: run_migrations_output.stdout is not search('No migrations to execute')



- name: Install bundle assets

  command: 'php {{ release_console_path }} assets:install --symlink --env=prod {{ ansistrano_release_path.stdout }}/public'



- name: Copy build directory

  command: 'cp -a {{ ansistrano_release_path.stdout }}/public/build /var/www/project/public'

  tags:

    - deploy

部署工作完美,但是每次我部署到服务器时,我的生产环境都会遇到 500 错误。


我查看了我的prod.log文件以了解导致错误的原因,并得到以下信息:


这看起来像是一个权限问题,因为每次我部署时,都会出现这个错误。有没有可能我可以从 NGINX 的角度做一些事情来确保这个功能正常?或者这是一个可靠的解决方案?我试图避免在每次部署时手动修复这些错误。


沧海一幻觉
浏览 113回答 1
1回答

缥缈止盈

发生问题可能是因为 ansible 在root用户上运行,但 PHP 服务器没有尝试在剧本中添加更改目录所有权的最后一步- name: Fix user rights   command: 'chown -R www-data: /var/www/project/public'   tags:     - deploy在我的示例中,所有权授予用户www-data(默认),但在您的情况下可能会有所不同。对于检查正确的用户,使用命令cd /var/www/project && ls -la
打开App,查看更多内容
随时随地看视频慕课网APP