最近实在快要闲出病了,于是就各种折腾。搭建两个系统(一个zentao禅道
、一个Gogs git server
),顺便温习一下nginx
和linux
相关的知识。仅以此篇记录我在搭建zentao禅道
过程遇到的坑。
服务器环境
- CentOS 7.4
- lnmp 1.5(php-7.2.4、mysql-5.9.59、nginx-1.12.2)
安装禅道
- 安装
lnmp
请参考 lnmp安装(觉得自己越来越懒了),lnmp 下载地址。安装差不多需要30分钟,请稍安勿躁。 - 添加网站,执行命令:
lnmp vhost add
,相关操作请参考 添加、删除虚拟主机及伪静态管理。 - 安装 禅道开源版,这个就比较简单了。采用源码包安装,详细信息请参考 使用源码包安装(各系统通用),这里就不复制、粘贴了,没有那个必要。
- 到这一步,系统基本已经完事了,可以正常使用了。唯一的遗憾的是,你只能通过
http://domain/www/index.php
或者http://domain/zentaopms/www/index.php
才能正常访问禅道,直接访问域名只会403
,不要急,继续往下看。
其中要说明的是在安装禅道时,可能出错的地方有Session存储目录
检查不通过。这个只需要解除php.ini
文件中的;session_save_path=/tmp
注释(去掉前面的分号)。
优化访问地址
- 以下操作,假设将压缩文件
ZenTaoPMS.xxxx.zip
中zentaopms
目录下所有文件都copy到网站根目录下。 修改
nginx
配置文件(/usr/local/nginx/conf/vhost/domain.conf
),将root
配置节修改如下:root /home/wwwroot/domamin/www;
修改
my.php
(/home/wwwroot/domain/config/my.php
),修改内容如下:$config->webRoot = '/'; # 原内容为:$config->webRoot = getWebRoot();
到这一步,主要设置已经结束,但遗憾的是,访问域名,返回
500
错误。我这里遇到的情况是由于lnmp
设置了 防跨目录设置,解决方案有两种:- 一种是使用
xxxx/lnmp1.5/tools/remove_open_basedir_restriction.sh
(lnmp
解压缩目录)执行命令移除; - 第二种是直接是
/usr/local/nginx/conf/fastcgi.conf
里将fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"
这一行给注释掉或者删除,然后重启nginx
(service nginx restart
)。
- 一种是使用
错误信息,大体如下:
Warning: require(): open_basedir restriction in effect. ... Fatal error: require(): Failed opening required ...
关于问题排查
- 可能其它人和我遇到不是同一个问题,下面说一下,我是如何定位错误源的
首先需要设置
php.ini
文件以显示错误信息,要修改的内容如下:error_reporting = E_ALL | E_STRICT ; 原值为 E_ALL & ~E_DEPRECATED & ~E_STRICT display_errors = On ; 原值为 Off display_startup_errors = On ; 原值为 Off
- 修改完成后执行
service php-fpm restart
,使其快速生效。
- 修改完成后执行
上面一切做完后,错误还是没有出来,原因是禅道关闭了错误信息,修改
index.php
文件(/home/wwwroot/yourdoamin/www/index.php
),要修改的内容如下:error_reporting(E_ALL); # 原值为error_reporting(0) 不显示错误
- 至此,已经结束了,没有其它问题的话,程序能正常运行了。好累,洗洗睡吧!
本文由 waynelone 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。