美文网首页
2019-09-30 thinkPHP项目部署linux系统 W

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

作者: 追寻1989 | 来源:发表于2019-09-30 16:21 被阅读0次

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

    前言

    项目的框架是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

    相关文章

      网友评论

          本文标题:2019-09-30 thinkPHP项目部署linux系统 W

          本文链接:https://www.haomeiwen.com/subject/jmchpctx.html