Почему при развертывании файлов, созданных capistrano, появляется ошибка «Отказано в доступе»? - PullRequest
0 голосов
/ 08 декабря 2011

У меня была ошибка failed: "sh -c 'cd /var/www. Затем исправили это, добавив следующее в deploy.rb ...

set :default_environment, {
  'PATH' => "/var/lib/gems/1.9.1/bin:$PATH"
}

Теперь я получаю эту новую ошибку.

 ** [out :: ip.address] Rails Error: Unable to access log file. Please ensure that /var/www/releases/20111208152807/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
 ** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
 ** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
 ** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
 ** [out :: ip.address] 
 ** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
 ** [out :: ip.address] mkdir -p /var/www/releases/20111208152807/public/assets
 ** [out :: ip.address] 
 ** [out :: ip.address] rake aborted!
 ** [out :: ip.address] 
 ** [out :: ip.address] Permission denied - /var/www/releases/20111208152807/public/assets/manifest.yml

Итак, я проверил разрешения для manifest.yml и production.log с помощью ls -lha и, да, они принадлежат root.

Развертывание capistrano выполняется пользователем linux (не root), которому принадлежит каталог / var / www . Я предполагаю, что это потому, что любая команда, создающая эти файлы, дает им право root.

ПОЯСНЕНИЯ : Я знаю, что, вероятно, простое развертывание с использованием root решит проблему, но я не хочу использовать root.

1 Ответ

5 голосов
/ 08 декабря 2011

У вас никогда не должно быть файлов веб-приложений, принадлежащих root. Они должны принадлежать непривилегированному пользователю.В то время как пользователь различается между веб-серверами и тем, как настроен ваш веб-сервер, обычно он равен www-data (для Apache) или nobody (для Nginx).

И чтобы удалить ошибку, которую вы хотите запуститькоманда, упомянутая в ошибке:

chmod 0666 /var/www/releases/20111208152807/log/production.log установит для файла права на чтение для каждого пользователя.

Эти разрешения могут быть немного разрешающими, поэтому вы можете ограничить их, если вы чувствуете, чтонеобходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...