WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总

导语:一位客户的环境是WDCP搭建的,版本为3.0,其中框架为Nginx+Apache+Mysql5.6+PHP5.6。由于客户的WordPress网站主题没有选择好,存在大量的数据查询与运算,导致在这个环境下面打开网页需要5秒钟。5秒的网页打开时间,还是因为使用了memcached+opcache,如果没有使用打开时间会在10秒以上。

叶子查了一下资料,发现可以将WDCP升级到V3.2后,可以选择PHP版本,这样就可以让网站运行在PHP7的环境之下,PHP7的性能比PHP5.6提高了3~5倍。这样的话,就可能提高网页的打开速度。

升级WDCP到3.2版本

升级WDCP很简单,登录WDCP后台,进入“后台首页”,在右侧的“系统信息”中,有一个“下载最新版”按钮,点击之后,就会自动在后台下载升级。

WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总
WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总

注意,升级后,WDCP后台会访问不了,那么重启服务器就可以了。

如果自动升级失败,那么就需要手动升级,方法:

  • SSH登录服务器
  • 执行:
    wget http://wdcp3.wdlinux.cn/down/update.sh && sh update.sh
    

注意,WDCP后台会访问不了并不是说你升级失败了,重启一下就可以,如果重启无效,那么手动升级一次再重启就好。

安装php7

WDCP升级完成后,点击后台的“网站管理”菜单,我们就可以看到多了一个“php版本管理”,全部显示未安装,这时,我们需要登陆服务器执行安装脚本。

WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总
WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总

下载安装

注意,它共支持7个版本的PHP,如5.2.17/5.3.29/5.4.45/5.5.38/5.6.30/7.0.18/7.1.4,全部安装如下:

wget http://down.wdlinux.cn/in/phps.sh
sh phps.sh

如果需要单独安装,方法如下:

wget http://down.wdlinux.cn/in/phps.sh
sh phps.sh 7.0.18

wget是下载脚本,只需要下载一次就可以了。注意,php是源代码安装,编译它需要较长的时间,请耐心等待。

WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总
WordPress站将WDCP面板升级到V3.2切换PHP7遇到的问题汇总

手动启动PHP

多版本PHP的手动启动|停止|重起,如:7.0.18

/www/wdlinux/phps/70/bin/php-fpm start
/www/wdlinux/phps/70/bin/php-fpm stop
/www/wdlinux/phps/70/bin/php-fpm restart

WDCP后台启动php

进入“php版本管理”,我们可以看到已经安装的php7,这时,点击“操作”栏下面的“启动”按钮,php7就启动了。

如果你希望开机自启动,点击“自启动”下面的“开”按钮,这样理论上就可以随服务器开机自启动了。

但是,注意,这样设置后,自启动是失败的。我们需要登录服务器,将rc.local加上执行权限才可以。这个php自启动是利用了rc.local文件。

登录服务器,我们可以先看一下rc.local文件的内容,执行命令:

cat /etc/rc.d/rc.local

我们可以看到:

……
touch /var/lock/subsys/local
/www/wdlinux/wdcp/phps/start.sh

最后面的那行命令就是启动多版本的php。

给/etc/rc.d/rc.local加上执行权限,执行命令:

chmod +x /etc/rc.d/rc.local

这样,开机自启动就设置完成了。

叶子在这里是遇到了坑,重启服务器后,总是不能自启动php-fpm,叶子利用systemctl定义了一个随机启动的服务,启动后会出现502错误,但直接执行php-fpm start后却不会出现502错误。

叶子认为可能配置启动服务参数有问题造成的,于是又想使用其他的方法来自启动,最后找到rc.local,发现wdcp配置的自启动命令在这里,然后看了一下权限,居然是400,于是就加上执行权限,这样自启动就可以了。

为网站选择php版本

登录wdcp后台,进入“网站管理”菜单,点击“站点列表”,找到你的网站,点击“编辑站点”按钮,进入后,会看到“PHP版本”的选择框,选择你安装并允许的php版本。

网站多次301重定向

这时,wdcp后台配置就完成了,叶子在浏览器中打开网页,发现网站提示“此网页包含重定向循环”,这个问题是nginx的vhost配置文件写得有问题,叶子发现网站在wdcp后台指定了example.com和www.example.com两个域名,example.com和www.example.com出现死循环了。

第一种解决方法:

登录wdcp后台,进入“网站管理”菜单,点击“站点列表”,点击“编辑站点”按钮,将example.com删除,只保留www.example.com,保存。这样就可以了。

第二种解决方法:

登录服务器,修改/www/wdlinux/nginx-1.10.3/conf/vhost/example.conf,改为:

server_name www.example.com example.com; if ($host != 'www.example.com' ) { rewrite ^/(.*)$ https://www.example.com/$1 permanent; }

参考:https://www.2cto.com/os/201508/428216.html

或者写成两个:

server {
    server_name example.com;
    return 301 http://www.example.com$request_uri;
}

server {
    server_name www.example.com;
}

参考:https://segmentfault.com/q/1010000009308220

需要重启nginx

service nginxd restart

文章页面出现404错误

解决301错误之后,叶子发现除了WordPress的首页和页面,所有的文章网址打开都出现404错误,这个原因是因为nginx的伪静态规则需要指定的原因。

打开/www/wdlinux/nginx-1.10.3/conf/vhost/example.conf,添加下面的代码:

        location / {  
                # wordpress 伪静态配置  
                try_files $uri $uri/ /index.php?$args;  
        }

整个文件内容看起来是这样的:

……
        index  index.html index.php index.htm;
        error_page  400 /errpage/400.html;
        error_page  403 /errpage/403.html;
        error_page  404 /errpage/404.html;
        error_page  503 /errpage/503.html;
        location / {  
                # wordpress 伪静态配置  
                try_files $uri $uri/ /index.php?$args;  
        }        

……

需要重启nginx

service nginxd restart

其他命令

service nginxd status

service httpd status

service httpd restart

启动Opcache

打开/www/wdlinux/phps/70/etc/php.ini,添加一行:

zend_extension=opcache.so

opcache.enable=1

重启php-fpm

/www/wdlinux/phps/70/bin/php-fpm restart

安装php的memcached扩展

注意,通过脚步安装的php7是没有代码memcached模块的,这时,我们需要自己安装一下:

cd /usr/local/src/

git clone https://github.com/php-memcached-dev/php-memcached (最新版本支持php7)

cd php-memcached

/www/wdlinux/phps/70/bin/phpize

./configure --with-php-config=/www/wdlinux/phps/70/bin/php-config  --with-libmemcached-dir=/usr/local/ --disable-memcached-sasl

make && make install

注意,如果提示没有git命令,先执行以下的命令:

yum install -y git

安装完成后,打开/www/wdlinux/phps/70/etc/php.ini,添加一行:

extension = /www/wdlinux/phps/70/lib/php/extensions/no-debug-non-zts-20151012/memcached.so

重启php-fpm

/www/wdlinux/phps/70/bin/php-fpm restart

网站访问速度提升

等所有的问题都解决完,开启memcached和opcache之后,网站提速相当明显,原来需要5秒才能打开的网页,现在1秒左右就能打开,php7性能提升令人惊讶。据说mysql5.7的性能提升也很大,到时在安装一下mysql。

结束

你学会了吗?如果有其他的问题,我们可以一起来探讨。

发表评论

邮箱地址不会被公开。 必填项已用*标注