Loading...

Sakura Frp 成功迁移至 Linux 服务器

之前 Sakura Frp 主站是搭建在 IIS 10.0 + PHP 5.4.45-nts + MySQL 5.7 的服务器上的,机器是 i5-6500。

PHP 5.4.45 安全性不够高,性能也很差,MySQL 在高并发请求下还是不够快。

于是琢磨了一下打算搬迁数据,更换到另一台 i7-4790 的服务器上。

首先是修改代码,由于历史遗留问题,代码里的 MySQL 查询函数都是 mysql_query,所以还要一点点修改。

新的服务器我使用 OneinStack 一键安装环境,方便快捷 

安装的新环境是 Apache 2.4 + PHP 7.2.6 + Mariadb 10.3,全都是最新版本。

装好 OneinStack 以后,创建好虚拟主机,我用的是 Let’s Encrypt,自动生成好证书。

然后我把网站文件拖进去,访问出现了 500 错误,看了一下 Apache Error Log,发现是缺少了 Mcrypt 扩展。

于是去 PECL 下载了一个 Mcrypt 源码,丢到服务器上编译。

[code lang=”bash”]yum install libmcrypt libmcrypt-devel mcrypt mhash -y
wget http://pecl.php.net/get/mcrypt-1.0.1.tgz
tar zxvf mcrypt-1.1.1.tgz
cd mcrypt-1.0.1
phpize
./configure
make && sudo make install[/code]

然后再次访问网站,还是 500 错误,再看看日志,原来是数据库没导入 ( 啊,又忘了

又跑去原来的 Windows 上导出数据库到 SQL,然后在新服务器上导入,结果导入的时候出现了一个错误。

This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de

百度了一下,是因为数据库开了 bin-log,这时候只要关掉就好了,所以需要执行下面的语句:

[code lang=”bash”]set global log_bin_trust_function_creators=TRUE;[/code]

再次导入 SQL 文件,没有出现任何问题。

接着再配置网站的 http 跳转到 https,在网站下写一个 htaccess 文件

[code]<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule page\/([A-Za-z0-9]+)\/$ /index.php?page=$1
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=302]
</IfModule>[/code]

至此完成了 HTTPS 跳转配置。

接下来还发现了一个问题,后台能够正常查询出添加的映射,但是无法新增映射,首页也无法评论,经过检查发现是 INSERT 的时候,VALUES 的 id 值为 “” 即空,但是在 Mariadb 10.3 中是不允许插入为空的值的,必须要用 NULL 替换,经过修改后正常了。

目前网站一切运行正常,暂时没有发现问题,如果大家在使用中遇到任何奇怪的 bug,欢迎告诉我。

发表评论

》表情