使用nginx而不是apache设置Joomla时出现随机错误


Getting random errors when setting up Joomla with nginx instead of apache

我正在尝试在我的服务器上设置一个joomla 3实例,我已经使用nginx与owncloud以及博客平台ghost。

我的第一次尝试实际上是相当成功的,它只是在最后一个安装步骤(创建配置文件)失败。我认为这是由于错误的权限,该文件无法创建。我写了一个简短的测试脚本来验证php5-fpm是否在文件夹中有写权限,并且它工作了。

经过几次失败的重试,没有日志文件,我决定删除目录并再次下载Joomla。从那以后,什么都没用了。每次我解压缩后(新下载的或相同的),我得到以下任意错误场景:

  • 我被重定向到installation/installation/index.php而不是installation/index.php
  • 我有关于丢失php文件的错误
  • 我有关于丢失php类的错误:
    • JApplicationBase
    • JApplicationWebClient
    • 一些视图类

每次解压缩并重新下载后,即使我没有更改nginx或php5-fpm的配置,错误也会发生变化。

下载并解压缩文件后,我使用以下命令正确设置joomla目录:

  • sudo chown -R joomla_user .
    • 可选,只有当我下载并解压zip与另一个用户-你看,我真的尝试了所有可能的组合
  • sudo chgrp -R www-data .
    • nginx运行为www-data,但joomla_user不在www-data组中。
    • 文件和文件夹只有nginx可读,但不可写。我认为这不是一个问题,因为写是由php完成的
  • sudo chmod -R g+s .
    • 确保以后所有上传的文件都能被nginx读取

我的nginx配置在sites-available(和sites-enabled)中是这样的:

server {
    listen 80;
    server_name joomla.server_url;
    root /home/joomla_user/www/joomla3;
    index index.php index.html index.htm default.html default.htm;
    # Support Clean (aka Search Engine Friendly) URLs
    location / {
            try_files $uri $uri/ /index.php?$args;
    }
    # deny running scripts inside writable directories
    location ~* /(images|cache|media|logs|tmp)/.*'.(php|pl|py|jsp|asp|sh|cgi)$ {
            return 403;
            error_page 403 /403_error.html;
    }
    location ~ '.php$ {
        fastcgi_pass unix:/var/run/php5-fpm-joomla_user.sock; 
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    # caching of files 
    location ~* '.(ico|pdf|flv)$ {
            expires 1y;
    }
    location ~* '.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
            expires 14d;
    }
}

php5-fpm pool-config基本上是默认配置的复制粘贴,更改了套接字名称和名称。

再次总结- php5执行工作,权限也允许创建和写入文件(至少在我检查的那些目录中),但是在安装开始时没有完成,现在我每次解压缩joomla3 zip文件后都得到真正随机的错误消息,即使我从他们的网站(http://www.joomla.org/download.html)下载id fresh(并直接通过wget到服务器)。

有人有在nginx上使用Joomla的经验吗?知道如何消除这些错误,让它运行吗?

更新:

我的PHP版本是5.4.4

PHP 5.4.4-14+deb7u8 (cli) (built: Feb 17 2014 09:18:47) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

昨天我和Joomla开发人员讨论了这个问题,他们建议目录权限问题,但是即使在Joomla目录中执行chmod -R u+rw .后,ist仍然存在。

我没有设法消除错误,但得到了使用tuxlite-script的建议。运行./domain.sh add joomla JOOMLA_SERVER_URL创建了一个包含所有必要目录的新配置。nginx-config还添加了一个SSL部分,在我的情况下引用了错误的证书文件。修复后,Joomla再次启动并运行。

我仍然有第一个问题- Joomla没有完成安装。这是由于fastcgi_read_timeout太短(默认为60秒)。把它改成多几分钟就行了。

我更改的最后一个配置是在joomla的nginx配置中:

location / {
        try_files $uri $uri/ /index.php?$args;
}

改为

location / {
        try_files $uri $uri/ /index.php?q=$request_uri;
}