lnmp 搭建禅道小记

in Server with 0 comment

最近实在快要闲出病了,于是就各种折腾。搭建两个系统(一个zentao禅道、一个Gogs git server),顺便温习一下nginxlinux相关的知识。仅以此篇记录我在搭建zentao禅道过程遇到的坑。

服务器环境

安装禅道

  1. 安装lnmp请参考 lnmp安装(觉得自己越来越懒了),lnmp 下载地址。安装差不多需要30分钟,请稍安勿躁。
  2. 添加网站,执行命令:lnmp vhost add,相关操作请参考 添加、删除虚拟主机及伪静态管理
  3. 安装 禅道开源版,这个就比较简单了。采用源码包安装,详细信息请参考 使用源码包安装(各系统通用),这里就不复制、粘贴了,没有那个必要。
  4. 到这一步,系统基本已经完事了,可以正常使用了。唯一的遗憾的是,你只能通过 http://domain/www/index.php或者 http://domain/zentaopms/www/index.php才能正常访问禅道,直接访问域名只会403,不要急,继续往下看。
其中要说明的是在安装禅道时,可能出错的地方有Session存储目录检查不通过。这个只需要解除php.ini文件中的;session_save_path=/tmp注释(去掉前面的分号)。

优化访问地址

  1. 以下操作,假设将压缩文件 ZenTaoPMS.xxxx.zipzentaopms 目录下所有文件都copy到网站根目录下。
  2. 修改nginx配置文件(/usr/local/nginx/conf/vhost/domain.conf),将root配置节修改如下:

    root /home/wwwroot/domamin/www;
  3. 修改 my.php/home/wwwroot/domain/config/my.php),修改内容如下:

    $config->webRoot = '/';  # 原内容为:$config->webRoot = getWebRoot();
  4. 到这一步,主要设置已经结束,但遗憾的是,访问域名,返回500错误。我这里遇到的情况是由于 lnmp设置了 防跨目录设置,解决方案有两种:

    • 一种是使用 xxxx/lnmp1.5/tools/remove_open_basedir_restriction.shlnmp 解压缩目录)执行命令移除;
    • 第二种是直接是 /usr/local/nginx/conf/fastcgi.conf 里将 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/" 这一行给注释掉或者删除,然后重启nginxservice nginx restart)。
  5. 错误信息,大体如下:

    Warning: require(): open_basedir restriction in effect. ...
    Fatal error: require(): Failed opening required ...

关于问题排查

  1. 可能其它人和我遇到不是同一个问题,下面说一下,我是如何定位错误源的
  2. 首先需要设置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,使其快速生效。
  3. 上面一切做完后,错误还是没有出来,原因是禅道关闭了错误信息,修改 index.php文件(/home/wwwroot/yourdoamin/www/index.php),要修改的内容如下:

    error_reporting(E_ALL);  # 原值为error_reporting(0) 不显示错误
  4. 至此,已经结束了,没有其它问题的话,程序能正常运行了。好累,洗洗睡吧!
Comments are closed.