最近在部署一个私人项目,遇到了不少坑,现在记录下来,这里更多的是分享一下技巧:
前言
项目的框架是thinkPHP5.0,TP5.0框架的项目入口index.php不在根目录,在public底下:
image.png
image.png
发现问题
而刚好WDCP有个弊病,就是创建站点后项目文件都要部署在public_html底下,按照官方的原话讲如果不放底下项目将无法正常访问,那么既然public_html底下才是根目录,访问的时候肯定是访问这一层的内容,我们想要一进来就到public那么就要配置一下伪静态规则,或者将public改成public_html命名
解决问题
伪静态的设置
更改框架public文件名为public_html让wdcp去识别直接访问这个目录是一种不错的解决方案
但是也有一定的风险,万一框架中哪个文件引用了public文件夹呢?
所以,鉴于在不想改动框架结构的情况下,我们还是配置nginx是比较妥当的办法。
这里我们项目的的运行环境是 nginx-1.8.1 我们对nginx添加伪静态规则:
注意index.php的查找顺序不要把index.html放前面,否则会出现只加载标签不加载样式的尴尬问题。。百度又百度不到这里我踩了好久的坑。。。。
server {
listen 8081;
root /www/web/task/public_html/public; #配置站点根目录为public文件夹下,原本wdcp默认是在public_html,无法通过界面修改。。
server_name xxx.xxx.xxx.xxx:8081;
index index.php index.html index.htm; #这里一定要注意index.php的查找顺序(否则配置好后页面会没有样式。。。。),把index.php提前
location / {
#如果请求的文件没有匹配到,把匹配到的路径交给index.php处理,这是由于php开启了pathinfo,nginx无法处理要交给php处理路由
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
try_files $uri $uri/ /?$args;
}
(以下...配置省略)
....
}
配置完成后如果生效记得锁定配置文件,防止更新站点配置时被wdcp程序自己篡改我们的配置文件
重启web,访问项目地址但是是却是tp生成的500错误页,说明public底下的index.php入口文件已经可以正常访问了,还差点什么东西。。。
runtime文件读写权限设置
排查了很久,一直以为是伪静态规则写错了。无奈,百度一下thinkphp 500的报错,有人说可能是因为 thinkPHP没有runtime的写入权限,runtime是用来记录tp运行错误日志的,想想有道理,更改runtime权限为777,问题得到解决,重启了服务器,可以正常访问项目了。
无法上传文件排查(其他文件读写权限的设置)
其他文件夹读写权限设置,比如upload,这个如果整站有提供这个功能要配置777权限
其他错误排查
查看TP框架的runtime/log/下的错误日志查找具体问题
附录:WDCP的一些配置技巧
安装WDCP
wget http://dl.wdlinux.cn/lanmp_laster.tar.gz
tar zxvf lanmp_laster.tar.gz
sh lanmp.sh
默认安装N+A的引擎组合(nginx+apache),也可安装后在系统设置里更改
可安装多版本PHP更灵活应用,参考http://www.wdlinux.cn/bbs/thread-57643-1-1.html
安装完后,默认的后台管理地址如下:
http://ip:8080
用户名:admin 默认密码:wdlinux.cn
mysql默认的管理用户名:root 默认密码:wdlinux.cn
官网安装教程:
https://www.wdlinux.cn/wdcp/install.html
安装,升级wdcp、更改wdcp访问端口后无法正常访问:
第一步,确定安装或升级完成,在安装或升级过程中,是否有提示什么错误信息?
第二步,用netstat -lnpt查看端口,是否有wdcp的程序和端口号,如下图所示
image.png
那个8080就是端口号
A 如果有端口号,但打不开,请检查防火墙
B 如果没有端口号,重新启动下,如下
service wdcp restart(实测新版貌似不会生效,这是一个巨坑)
或
sh /www/wdlinux/wdcp/wdcp.sh start(实测生效,启动后wdcp打开正常)
看是否启动成功
重起成功后,重复第二步开始检查
参考链接:https://www.wdlinux.cn/bbs/viewthread.php?tid=52729&extra=&page=1
WDCP配置不同端口访问不同网站
站点配置里增加访问端口,记得在wdcp增加防火墙端口,云服务器上增加安全组规则
最重要的是,不管你已经是配置好的站点还是新建的站点,都要在对应的站点配置里选择你前面配置过的web端口保存设置,重启web后才会生效:
image.png
image.png
WDCP针对站点增加伪静态规则
首先在Rewrite规则管理增加伪静态规则配置文件:
在想要对应的站点配置选择你增加的伪静态规则:
image.png
这时候查看nginx配置你会发现这里多出了一行(意思是导入你刚才选择配置的规则文件):
如果没有需要自己添加导入的代码:
include /www/wdlinux/wdcp/rewrite/xxxxx(你刚才添加的配置文件名称).conf;
手动添加保存后,重启WEB服务即可解决问题
image.pngWDCP 创建数据库,并且让数据库可以远程访问
image.pngWDCP修改mysql,root用户的密码(安全需要)
image.pngwdcp 安装和切换其他版本的PHP
CentOS 7.X系列已不支持php 5.2/5.3的版本,如要使用5.2/5.3的老版本,可使用6.X的OS
只有单N或N+A组合的WEB引擎中,才支持多PHP版本及指定PHP,单apache引擎时无效
若是条件满足,请继续。若是不满足,请自行手动配置
安装方法如下:
wget http://down.wdlinux.cn/in/phps.sh
sh phps.sh 5.6.30
(其他版本请更换后面对应的数字,共支持7个版本的PHP,如5.2.17/5.3.29/5.4.45/5.5.38/5.6.30/7.0.18/7.1.4)
看到如下界面后说明安装成功,可以去面板设置一下自启,同时也需要在对应的站点配置里选择对应的PHP版本才会生效
image.png
image.png
网友评论