Для целей пересборки приложения есть ли способ сделать chown для директории /shared/uploads более эффективным? Есть ли какое-то обходное решение?
- mkdir -p tmp/pids
- mkdir -p tmp/sockets
- touch tmp/.gitkeep
- mkdir -p /shared/log/rails
- bash -c "touch -a /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
- bash -c "ln -s /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log"
- bash -c "mkdir -p /shared/{uploads,backups}"
- bash -c "ln -s /shared/{uploads,backups} $home/public"
- bash -c "mkdir -p /shared/tmp/{backups,restores}"
- bash -c "ln -s /shared/tmp/{backups,restores} $home/tmp"
- chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
- exec:
cmd:
- "cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf"
- "rm /etc/nginx/sites-enabled/default"
- "mkdir -p /var/nginx/cache"
- replace:
filename: /etc/nginx/nginx.conf
from: pid /run/nginx.pid;
В настоящее время только эта строка занимает более 10 минут (более 200 000 загрузок). Без неё пересборка была бы вполне быстрой.
Я помню, что этот вопрос уже поднимался ранее, @mpalmer . Есть ли какая-то умная опция «пропускать эти файлы, если права доступа к ним уже выглядят корректно» для этой команды?
mpalmer
(Matt Palmer)
13.Март.2020 01:25:01
3
Да, скорее всего, именно это привело к появлению следующей строки в web.template.yml:
find $home ! -user discourse -exec chown discourse {} \+
В данном случае, я думаю, команда должна выглядеть примерно так:
find /shared/log/rails /shared/uploads /shared/backups /shared/tmp ! -user discourse -or ! -group www-data -exec chown discourse:www-data {} \+
Круто, можем ли мы что-то сделать, чтобы это стало возможным?