我已成功部署 Ruby on Rails 应用程序,并按照 Assets 管道指南设置 Assets 编译和压缩。我的服务器日志中似乎出现了缓存问题。

似乎在尝试 mkdir 缓存文件夹时我的权限被拒绝?这里发生了什么?我该如何解决这个问题?

nginx/logs 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' 

tmp 文件夹用户/权限...

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; 
        } 

请您参考如下方法:

nginx.conf中设置一个user指令:

user www-data; 

然后更新您的应用的权限以归该用户所有:

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

注意:另请注意,如果您使用的是 Capistrano 或其他类似的部署系统,您还必须更新该配置以现在使用同一用户。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!