Rails 3.1 - разрешения после развертывания с помощью capistrano - PullRequest
1 голос
/ 28 декабря 2011

Я развертываю свое приложение на моем новом сервере Rails 3.1 с capistrano.

Когда я пытаюсь просмотреть страницу, я получаю сообщение об ошибке.
Глядя на error.log, вот что я вижу:

ActionView::Template::Error (Permission denied - /var/www/episodecalendar/production/releases/20111227204950/tmp/cache/55B):
    32:                 </div>
    33:                 <div id="footer">
    34:                   <div id="footer_content">
    35:                     <% cache("footer") do %>
    36:               <%= render :partial => "partials/footer" %>
    37:             <% end %>
    38:             </div>
  app/views/layouts/application.html.erb:35:in `_app_views_layouts_application_html_erb___3483336897212790867_58416560'

Очевидно, что файлы в папке /tmp не имеют «правильных» разрешений. Пример:

root@Ubuntu:/var/www/episodecalendar/staging/current/tmp/cache/assets/C0C/690# ls -la
total 12K
drwxr-xr-x 2 root root 4.0K 2011-12-27 21:33 .
drwxr-xr-x 3 root root 4.0K 2011-12-27 21:33 ..
-rw-r--r-- 1 root root 2.6K 2011-12-27 21:33 sprockets%2F31007441199035e09c0c45c33930cf06

Единственный способ это исправить, это chmod 777 tmp/ -R, и тогда сайт сразу загружается.

Я мог бы добавить исправление chmod в рецепт капистрано, но это похоже на уродливый взлом.
Почему папка / tmp не имеет «правильного» разрешения после развертывания и как я могу это исправить?

1 Ответ

2 голосов
/ 28 декабря 2011

Вместо того, чтобы разрешить всем доступ ко всем файлам и папкам в tmp chmod 777 -R tmp/, вы можете рассмотреть возможность обеспечения рекурсивного *1003* chown'd (chown -R user:group /var/www/episodecalendar/staging) любым пользователем, которому требуется доступдля запуска веб-сервера.

Я бы порекомендовал создать отдельного пользователя deploy@Ubuntu, чтобы (в отличие от root) проблемы с разрешениями стали очевидными быстро.

...