我正在尝试在我的服务器上设置一个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;
}