小赖子的英国生活和资讯

英国QuickHostUK主机大升级 Ubuntu 16.04 + PHP7 方法和经验

阅读 桌面完整版

自从 Ubuntu 16.04 大版本更新后 每次SSH登陆的时候就会提醒用 do-release-upgrade 来进行更新. 我其实对于新的更新是不抗拒 甚至是欢迎的 但是第一次在更新提示有 25个包需要被删除 157个包会被安装 并且640个包会被升级..也得谨慎一些.

安装包509M 网速3分钟就能下完, 但是在服务器升级的时候 大约花了半个多小时, 这时候还是挺紧张的 生怕断电了或者升级崩溃, 要知道 我上面可放了6个网站…

安装过程有问到一些 配置文件的冲突, 比如我手动改了 /etc/init/dbus.conf 文件 然后就问你需要保留哪个文件, 这时候我建议是用新的 然后在登陆另一个终端把冲突的文件拷贝一份用于之后参考做修改.

升级PHP5.x 到PHP7.0

PHP7 速度至少是PHP5的两倍

因为做了功课 发现PHP5 下的一些代码在PHP7下是不能用的, 特别是我之前连接数据库为了方便 直接用 mysql_ 开头的方法 而这些函数在 PHP7 都被移除了, 这就导致了一些老代码老程序并不能用.

升级后PHP5 还是保留的, 导致在配置apache2的时候出现了一些冲突, 后来没办法直接通过 apt-get purge php5* 把所有 PHP5 的包都删掉 然后再装 PHP7.

搜索老代码 Legacy Code

强制升级是个 给自己 Review 老代码的机会, 可以通过以下 grep 命令来查找有问题的代码:

1
grep -l -r -e "mysql_" --exclude-dir="wp*" --exclude-dir="phpmyadmin" --exclude="wp*.php" --include=\*.php
grep -l -r -e "mysql_" --exclude-dir="wp*" --exclude-dir="phpmyadmin" --exclude="wp*.php" --include=\*.php

以上代码是寻找 mysql_ 的函数 比如 mysql_connect, mysql_query, mysql_result, mysql_fetch_row, mysql_real_escape_string 等等, 这些统统要改!! 参数-l是列出文件, 方便一个文件一个文件改, 当然你需要排除 wordpress 博客 因为问题不大, wordpress 的兼容性很好 虽然代码里还是有 但是执行的时候会判断PHP版本 比如 wp-db.php 就会判断PHP版本或者用 if (function_exists()) 来判断.

phpbb 论坛需要在 config.php 里把 $dbm 改成 “mysqli” 并且需要把 bbcode.php 里面的 preg_replace 给升级了或者自己改成 preg_replace_callback.

最主要的是需要到 wp-content/plugins 插件目录下看哪些第三方的插件有问题, 比如评论邮件回复 (Comment Reply Notification) 就有问题, 需要手动编辑插件PHP文件然后把 mysql_real_escape_string( 全部替换成 mysqli_real_escape_string($wpdb->dbh,

数据库 UTF8 编码

升级后发现 图片网站 乱码了, 搜索了半天 发现是表格的 字符整理方式不对 需要手动的把有问题的字段 通过以下SQL进行转换成UTF8. 建议先备份!

1
update table set column_name = convert(cast(convert(column_name using latin1) as binary) using utf8)
update table set column_name = convert(cast(convert(column_name using latin1) as binary) using utf8)

配置 mpm_event 模块

mpm_event 还是 apache2 性能最好的配置方式, 可以通过以下命令来配置:

1
2
3
4
5
apt install apache2 php  确保已经安装了
a2dismod mpm_prefork php7.0
a2enmod mpm_event proxy_fcgi
a2enconf php7.0-fpm
systemctl restart apache2 或 service apache2 restart
apt install apache2 php  确保已经安装了
a2dismod mpm_prefork php7.0
a2enmod mpm_event proxy_fcgi
a2enconf php7.0-fpm
systemctl restart apache2 或 service apache2 restart

效果

真的很快, 明显感觉 wordpress 后台控制快了很多. 并且VPS的CPU和内存用量平均变少了.

vps-low-memory-cpu-usage

我这个QuickHostUK主机 有点小贵 但是非常稳定 几乎都不用联系客服. 很放心. 可以通过这个链接注册.

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version