2019-09-30 thinkPHP项目部署linux系统 W

2019-09-30  本文已影响0人  追寻1989

最近在部署一个私人项目,遇到了不少坑,现在记录下来,这里更多的是分享一下技巧:

前言

项目的框架是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程序自己篡改我们的配置文件

image.png

重启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),也可安装后在系统设置里更改

image.png
可安装多版本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增加防火墙端口,云服务器上增加安全组规则

image.png
最重要的是,不管你已经是配置好的站点还是新建的站点,都要在对应的站点配置里选择你前面配置过的web端口保存设置,重启web后才会生效:
image.png
image.png

WDCP针对站点增加伪静态规则

首先在Rewrite规则管理增加伪静态规则配置文件:

image.png
在想要对应的站点配置选择你增加的伪静态规则:
image.png
这时候查看nginx配置你会发现这里多出了一行(意思是导入你刚才选择配置的规则文件):
如果没有需要自己添加导入的代码:
include /www/wdlinux/wdcp/rewrite/xxxxx(你刚才添加的配置文件名称).conf;

手动添加保存后,重启WEB服务即可解决问题

image.png

WDCP 创建数据库,并且让数据库可以远程访问

image.png

WDCP修改mysql,root用户的密码(安全需要)

image.png

wdcp 安装和切换其他版本的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
上一篇下一篇

猜你喜欢

热点阅读