2012-02-13 2 views
2

Я успешно развернул приложение Ruby on Rails и выполнил руководство по конвейеру активов для настройки компиляции и сжатия активов. Кажется, у меня проблема с кешем, появляющаяся в журналах сервера.Rails Серверный кеш сервера Разрешение отклонено с помощью Nginx

Кажется, у меня есть разрешение на отказ при попытке выполнить mkdir папку с кешем? Что здесь происходит? Как я могу это решить?

Nginx/журналы error.log ...

cache: [GET /assets/grid.png] miss 
cache: [GET /] miss 
cache error: Permission denied - /var/www/redmeetsblue/releases/20120212234112/tmp/cache/B27 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir' 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:247:in `fu_mkdir' 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:221:in `block (2 levels) in mkdir_p' 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:219:in `reverse_each' 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:219:in `block in mkdir_p' 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:205:in `each' 
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/fileutils.rb:205:in `mkdir_p' 

ТМП пользовательские папки/разрешения ...

ls -alh /var/www/redmeetsblue/current/tmp 
total 12K 
drwxr-xr-x 3 root root 4.0K 2012-02-12 18:43 . 
drwxrwxr-x 13 root root 4.0K 2012-02-12 18:41 .. 
drwxr-xr-x 3 root root 4.0K 2012-02-12 18:43 cache 
lrwxrwxrwx 1 root root 33 2012-02-12 18:41 pids -> /var/www/redmeetsblue/shared/pids 
-rw-r--r-- 1 root root 0 2012-02-12 18:41 restart.txt 

часть моей nginx.conf ...

http { 
    passenger_root /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11; 
    passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p0/ruby; 

    include  mime.types; 
    default_type application/octet-stream; 

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
    #     '$status $body_bytes_sent "$http_referer" ' 
    #     '"$http_user_agent" "$http_x_forwarded_for"'; 

    #access_log logs/access.log main; 

    sendfile  on; 
    #tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 

    #gzip on; 

    server { 
     listen   80; 
     server_name  173.255.210.212; 
     root    /var/www/redmeetsblue/current/public/; 
     passenger_enabled on; 
     } 

    server { 
     listen  80; 
     server_name localhost; 

     #charset koi8-r; 

     #access_log logs/host.access.log main; 

     location/{ 
      root html; 
      index index.html index.htm; 
     } 
+0

У вас есть директива 'user' в вашем' nginx.conf' где угодно? Если нет, я считаю, что пользователь по умолчанию - 'www-data', который, очевидно, не имеет доступа к файлам root. –

+0

безупречный! У меня не было директивы пользователя - это было прокомментировано. Я решил это, удалив комментарий, изменив имя на www-data и sudo chown -R www-data/var/www/redmeetsblue/current/ –

+0

Отлично! Я добавил решение в качестве фактического ответа =). Обратите внимание, что только для хорошей формы вы должны, вероятно, «chown» весь каталог приложений ('redmeetsblue'), а не просто« текущий ». Я положил это в ответ, который я разместил. –

ответ

7

Установить a user директива в nginx.conf:

user www-data; 

Затем обновите разрешения вашего приложения, которые будут принадлежать этому пользователю:

sudo chown -R www-data /var/www/redmeetsblue 

Примечание: Кроме того, учтите, что если вы используете Capistrano или какой-либо другой системы развертывания, как это, вы также чтобы обновить эту конфигурацию, чтобы использовать этого же пользователя сейчас.