本帖最后由 透明的星尘 于 2022-1-25 16:31 编辑
之前skyfalco.club使用的服务器直接关闭了,于是俗人斋关闭了许久。最后的备份资料也是2020.05.09的,一年多的数据就这样消失了。月初整理电脑的时候,突然发现一个好朋友15年的日记。虽然有点不厚道,还是忍不住读了读,毕竟总是很好奇别人眼中的自己是什么样。其中还是有几段和自己相关的事情的,细节就不在这里讲了,只是读完之后特别感慨。毕竟15年自己经历了休学,和ex分手,做直播,决定quit等一系列巨大的波折,虽然日记里并没有记录这些,却让我意识到这么多年能挺过来,少不了这位朋友一直以来的关心。然后想写点什么,又不知道可以去哪里写,只能跟萌萌轻描淡写地说了几句。
于是就有了很强烈的复活俗人斋的念头,一方面是记录这些想说的话,我的确很需要一个很小众可以记录东西的平台,另一方面站长也说了“翻以前的东西就是容易笑死”,随着年龄的增长,生活压力越来越大,有这些东西看一看,还是挺欣慰的。
有了想法就要开始行动了,本来以为并不难的事情,却各种碰壁,来来回回折腾了将近10个工作日了。
首先是论坛放在哪?站长为了搭梯子搞了个服务器,但是梯子1.0的性能太差了,导致php和mysql同时打开就崩掉了,而且由于梯子1.0是shadows-sock架构的,还没怎么用就被GFW封掉了,服务器连着梯子一起阵亡。
于是站长又买了一个新的服务器梯子2.0,梯子2.0是基于Nginx构建的Trojan架构,通过Nginx的url解析,将墙外数据伪装成普通的http数据,基本不会被GFW察觉。然而就是这个高端的Nginx把我折腾惨了。nginx的原理是将不同特征的请求转给不同的后台程序去解析,安装了php和mysql之后,nginx并不会直接做好连接,甚至连http都要自己写,http还算顺利,但是php怎么都解析不了,php-fpm这些都在运行,最后发现是虚拟服务器配置的问题。- server {
- listen 80;
- listen [::]:80;
- server_name localhost;
- access_log /var/log/nginx/falco.star.access.log;
- error_log /var/log/nginx/falco.star.error.log;
- root /var/www/html;
- location / {
- index index.html index.php;
- }
- location /lrm{
- alias /home/lrm/;
- try_files $uri $uri/index.html $uri/index.php;
- }
- location ~ \.php$ {
- fastcgi_pass unix:/run/php/php7.2-fpm.sock;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
复制代码 问题出在第18行,大部分的教程都写的是“fastcgi_pass 127.0.0.1:8000”,也就是本地的8000端口。我最初以为是8000被防火墙禁用了,然后无论是白名单,还是干脆关掉防火墙,都无济于事。最后才发现,这个8000的写法是针对php5.6的,从7.0开始适用的fastcgi模块,就必须写对应的sock文件的位置了,总之改成上述的样子之后,终于能看到php写的hello world了。
本以为这样就好起来了,结果发现mysql怎么都连不上,还有一个php解析xml的bug。也是查了好多教程试了很多方法都没有成功,最后只能就此作罢。
想起建站初始的时候,我就随口说过这么一句话,实在是迫于无奈,我选择了将俗人斋迁移到化院课题组的服务器上。本来以为是个非常容易的过程,却又是各种碰壁,旧版论坛是php5.6 mysql5.7 discuz3.2的组合,而我在做课题组论坛的时候,安装的是php7.2+mysql8.0+discuz3.4。虽然可以通过IIS里修改模块映射,让不同的文件夹调用不同版本的php,但是没办法让两个版本的mysql同时生效。尝试了以下几个思路:
1.安装3.4版本,还原数据库文件,但是数据库文件无法识别,而且找不到restore.php,后来在3.2的安装包中找到了restore.php运行之后提示不是论坛备份的数据。
2.安装3.2版本,然后升级或者干脆就这么用,首先是在php7.2下安装,需要根据报错修改几个php7.0开始被淘汰的语法,后来成功运安装了,但是网站本身还是各种bug。后来在php5.6版本下安装,但是因为mysql密码设定的问题,总是连接不上;修改密码加密方式之后,连上了但还是各种报错,说是找不到数据库的各种表。因为服务器还有另一个论坛需要依赖mysql8.0,我这里也不敢对sql大动干戈,这条路也没走通。
3.本地安装3.2,最后又在自己的笔记本上构建了一个php5.6+mysql5.7的环境,装3.2,看似一切顺利,进入管理界面,就会出现fastcgi闪退的问题,其实弄到这一步,人已经有点接近崩溃了。这篇帖子的每一句话,基本上代表了几十分钟的查教程,排错,测试。
也好在没有因此放弃,再观察了一些现象之后发现,终于发现database的备份并不是论坛自己生成的,而是mysql的导出功能(mysqldump)生成的,最后我又在服务器上装了一个全新的3.4版本,然后把数据库备份文件用mysql的导入命令导入,就看到了一个朴素的俗人斋。
- ./mysql.exe -uroot
- >>>source $path$/backup_mysql_20200509.sql;
复制代码
根据我多年来与各种bug搏斗的经验,这已经是胜利的曙光了。然后把ucenter,data,static,template等文件夹里的内容还有favicon.ico等文件复制过去,后台更新缓存,修改ucenter的地址,就基本上是原来的样子了。门户主页显示小头像的地方并没有显示,打开模块代码,把{avatar_middle}改成{avatar_big}就可以了,这个问题之前也遇到过,不清楚为什么中尺寸读不出来。用手机登陆一下,发现一切也都正常工作,自此俗人斋迁移复活完毕。
----------------------------------------------------------------
简单总结一下自己这次使用的相对靠谱的论坛迁移步骤吧。
A.备份:
1.论坛本体:把论坛文件夹下的所有文件打包即可。得到bbs.zip
2.数据库:适用mysqldump命令:mysqldump --all-databases>backup.sql
迁移论坛需要用到bbs.zip和backup.sql文件。打开这个sql文件可以看到数据表前缀,比如pre_forom_post:xxxx,前缀就是pre。只要有这个文件,不记得也没关系。
B.迁移:
1.部署php,mysql.
2.安装纯净版的discuz,注意数据表前缀要和之前保持一致。
3.把backup.sql上传到服务器,运行mysql,输入命令:source $path$/backup.sql; 注意分号。然后会看到很多行数据表依次导入,一般需要几分钟,耐心等待即可。
4.把旧版bbs的部分文件夹覆盖新版bbs,大致内容如下:
uc_client/uc_server:存储用户头像等信息
template:论坛主题
static:一些静态的图片元素,比如本论坛的徽章系统
data:我也不知道有什么,也许不覆盖也可以
5.然后登陆bbs/admin.php,在站长那里修改ucenter的目录,把localhost改成域名或者ip即可,否则头像无法显示。
6.然后在工具选项卡里更新缓存即可。
用这种方法实现了视觉元素和数据库的独立迁移,版本适应性更强一些,也可以顺带升级了。网上提供的复制install.php重新安装的方法是针对3.2版本的,会带来很多因为历史遗留因素引起的后果,3.4可以用本帖的方法进行迁移。
|