# 记一次 solo 迁移

本篇博客迁移自 solo. 发表于 2018-11-01

# 背景

由于一些历史原因,我原来是将博客、网页部署在腾讯云的服务器上的,后来因为腾讯云的蜜汁服务体验,果断买了阿里云的服务器,不过由于腾讯云的域名时间有效期还很长,本着不要浪费的原则,我决定域名zhijianzhang.cn 继续使用,而将原服务器上的 solo 博客迁移到阿里云上。所以有了一个比较尴尬的场景:使用腾讯云购买的域名和阿里云的服务器。.

# 数据库迁移
  1. 在新的目标服务器的数据库中创建一个名为 solo 的数据库 imagepng

  2. 右键 Connection -> Data Transfer imagepng

  1. 选择配置之后,就 Next -> Start imagepng
  1. 迁移完了之后,目标服务器上有了 solo 数据表和数据 imagepng
# 项目文件迁移
  1. 压缩 solo 项目文件: sudo tar zcvf solo.tar.gz solo-2.9.4/ imagepng
  1. 通过 ubuntu 的 scp 命令向目标服务器传输这个压缩文件: scp -r solo.tar.gz root@xxx.yy.cc.rrr:/usr/local/workspace/. 输入密码之后就会开始慢慢传输文件 imagepng
  1. 去目标服务器上解压文件
    cd /usr/local/workspace/
    tar xzvf solo.tar.gz
    
    imagepng
  1. 启动 solo nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &, 启动就完事了,是不可能的。 imagepng

注意,我主要是为了操作方便,所以 mysql 的用户名和密码都是一致的,所以这里能直接不修改启动就行了。

# nginx 配置

其实这一步不算是迁移,就在新的服务器上为 solo 添加配置。 贴一下从 D 那抄的配置:

upstream backend {
    server localhost:8080; # Tomcat/Jetty 监听端口
}

server {
    listen       80;
    server_name  solo.zhijianzhang.cn; # 博客域名

    access_log off;

    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        proxy_pass http://backend$request_uri;
        proxy_set_header  Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  10m;
    }
}

imagepng

我这边主要是在 /etc/nginx/conf.d 中新建一个 solo.conf 文件,写入上面的配置之后 reload 一下 nginx 配置就行了。因为默认 /etc/nginx/nginx.confincludeconf.d 文件夹下的所有 .conf 配置文件的内容。

sudo nginx -t
sudo nginx -s reload
# 云解析

imagepng

这里不要奇怪为什么在腾讯云的控制台,上面说了,因为是腾讯云上购买的域名,要云解析到阿里云的服务器的话,需要将整个域名在阿里云重新进行备案(其实跟在阿里云重新购买并备案一个域名差不多),时间上大概也是一个月左右,备案通过之后还是在腾讯云的控制台进行管理云解析。

# 最后

如果顺利的话,一般经过上述步骤之后,访问同一个域名 (opens new window),就能看到熟悉的博客了。如果不顺利的话,emmmm .... 聪明的你一定会发现哪里出了问题的!

(这篇笔记算是写了两遍...., solo 竟然在没有写标签的情况下没有触发自动保存,页面一切写了大半小时的内容就没了...)

# 迁移过程的错误

迁移完了之后,需要写一篇博客看看数据能够正常保存。在发布博客的时候,有可能会出现如下的问题:

本来以为出现这个问题的原因是由于数据库的格式引起的,手动去修改数据库格式为 utf8mb4 之后生效了一会之后又不行了。后来改回原来的格式,发现重新新建的文章是可以保存成功的,出现这个原因只是单的这篇。

具体原因手动 @D