自从 Ubuntu 16.04 大版本更新后 每次SSH登陆的时候就会提醒用 do-release-upgrade 来进行更新. 我其实对于新的更新是不抗拒 甚至是欢迎的 但是第一次在更新提示有 25个包需要被删除 157个包会被安装 并且640个包会被升级..也得谨慎一些.
安装包509M 网速3分钟就能下完, 但是在服务器升级的时候 大约花了半个多小时, 这时候还是挺紧张的 生怕断电了或者升级崩溃, 要知道 我上面可放了6个网站…
安装过程有问到一些 配置文件的冲突, 比如我手动改了 /etc/init/dbus.conf 文件 然后就问你需要保留哪个文件, 这时候我建议是用新的 然后在登陆另一个终端把冲突的文件拷贝一份用于之后参考做修改.
升级PHP5.x 到PHP7.0
因为做了功课 发现PHP5 下的一些代码在PHP7下是不能用的, 特别是我之前连接数据库为了方便 直接用 mysql_ 开头的方法 而这些函数在 PHP7 都被移除了, 这就导致了一些老代码老程序并不能用.
- 所有mysql_函数需要换成mysqli_或者是PDO的方式, 参数顺序用法不一样 得每个地方都得人工代码审核并修改
- preg_replace 不支持 e 修改符, 得换成 preg_replace_callback
- PHP4中的 同名类构造函数必须改成 public function __construct
- 具体的还有很多…很多: 请英文官网:
升级后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和内存用量平均变少了.
我这个QuickHostUK主机 有点小贵 但是非常稳定 几乎都不用联系客服. 很放心. 可以通过这个链接注册.
loading...
上一篇: 英国Amazon的网上客服送了我30天Prime帐号
下一篇: 为啥没有PHP6?
首先,得买得起QuickHostUK主机
不贵, 最便宜的一个月6英镑