原本的博客服务器是微软的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.tgzsqlite_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

然后访问自己的域名, 就可以看到迁移后的博客了.

Tags: none

1 Comment

  1. 逆境中的反思充满生命韧性。

Leave a comment...