记录一次Typecho博客迁移
原本的博客服务器是微软的az100, 但是上面跑了别的服务搞得这台鸡内存几乎跑满了, 有时候点页面要等个半天. 于是想着要不迁移到别的服务器上去吧. 网上搜了下大半都是宝塔面板相关文章, 我是有点抵触面板这些的, 还是自己弄比较安心. 于是说干就干. 因为之前弄博客的时候不小心搞崩过, 这次还是比较小心的, 提前做了些功课.
迁移之前
首先由于我只是换服务器, 域名这些还是用原来的, 所以首先把域名解析到新服务器的IP. 解析生效后申请https证书, 申请方法可以参考这里.
申请完成后在nginx中写入下面的配置. 我这里typecho的路径是 /var/www/typecho
, 安装的php版本是7.4, 这些根据自己的情况修改就好了.
server {
# 你的端口和域名
listen 443 ssl;
server_name yourdomain.com;
# 你的证书位置
ssl_certificate your_dir/server_blog.crt;
ssl_certificate_key your_dir/server_blog.key;
# ssl验证相关设置, 这里给点示例
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSV1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
client_max_body_size 50m;
# typecho的路径
root /var/www/typecho;
index index.html index.htm index.php install.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ .*\.php(\/.*)*$ {
include fastcgi.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|mp3|wav|zip|rar)$ {
valid_referers none blocked yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
expires 30d;
}
access_log logs/typecho.log combined;
}
# http重定向到https
server {
listen 80;
server_name yourdomain.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
然后 systemctl restart nginx
重启nginx使配置文件生效. 在这里我遇到个问题就是找不到 "/usr/share/nginx/logs/typecho.log"
文件, 这个只要在这个目录touch这个文件就好了.
然后访问域名开始搭建typecho, 数据库的名字记得和原博客保持相同.
一些需要备份的东西
需要备份的其实只有两个: typecho目录下的usr文件夹和数据库.
进入到typecho目录, 然后使用tar打包usr文件夹.
tar -czvf usr.tgz usr
然后进入到数据库的目录, 备份数据库. 我用的是Sqlite3作为数据库, mysql的话数据导出导入的方法网上也能搜得到.
sqlite3 typecho.db .dump > sqlite_dump.sql
然后把 usr.tgz
和 sqlite_dump.sql
两个文件用 scp
命令复制到新服务器的typecho目录. 在typecho目录中解压 usr.tgz
覆盖原来的usr, 然后进入数据库目录读取sql文件的内容.
.read sqlite_dump.sql
这里我又遇到了问题, 弹出了一堆Error. 解决方法是不用新建博客时创建的数据库而是自己创建一个同名的数据库然后导入就好.
# 把新建博客时的数据库改名或删除
mv typecho.db typecho_backup.db
# 创建自己的数据库
touch typecho.db
# 进入数据库并导入备份内容
sqlite3 typecho.db
.read sqlite_dump.sql
然后访问自己的域名, 就可以看到迁移后的博客了.
逆境中的反思充满生命韧性。