服务器迁移记录 Seafile 和 Gitea 迁移记录

2019-03-25 265 Words Web Cloud

服务器迁移记录 Seafile 和 Gitea 迁移记录

原因

我长期以来一直使用 滴滴云 作为主力服务器使用,这台服务器是1 core 1 GB 的配置。带宽 10 M,按量计费。有两块 20g 硬盘构成。之所以选用滴滴云主要是价格非常便宜,这个配置只需要 22 块钱一个月,个人用户流量也用不了太多。非常便宜。

说起回归阿里云的原因,是由于一起事故引发的。前几日,我临时在滴滴云上部署了 iGEM 招新登记系统 系统。我参加了 2018 年的 iGEM 比赛。回国之后自然要招收新的同学,于是临时写了这样的一个网站。过了几天之后,突然在一天崩溃,文件系统损坏。现象是 ip ping 不通,ssh 登录不了,控制台显示机器失联。我从早上8点开始联系客服人员,直到下午三点左右才恢复工作。

此前,滴滴云也发生过一次乱扣费的现象。这些事情,让我认识到,滴滴云作为新的 IDC 厂家,技术上还是不稳固的。因此决定迁移回阿里云。

购买服务器

最终购买了一台 2C4GB 的服务器(钱包空了)。并准备开始把之前的服务迁移过来。之前的服务器上一共运行有四个服务,一个自建的博客系统,一个私有云,一个私有 git 库以及临时部署的招新系统。除了博客是 angular 静态页面,其他全部使用 docker 部署,因此迁移起来问题不大。

转移 Seafile

我使用了很久一段时间的 nextcloud ,可是一直觉得不能很好的真正利用上这个软件,于是决定该用 Seafile ,实测好用。Seafile 使用的官方 docker 镜像。转移主要有几个步骤。

第一是把镜像中 /shared 下的全部文件通过 scp 或者 rsyne 同步到新服务器对应位置。

修改 run.sh 把服务器运行起来。我一般习惯测试时使用 tmux 前台跑 docker 镜像。

docker run -it --name seafile\
  --net mynet\
  --ip 172.33.0.2\
  --restart=always -e SEAFILE_SERVER_HOSTNAME=cloud.ertuil.top\
  -e SEAFILE_ADMIN_EMAIL=<your email>\
  -e SEAFILE_ADMIN_PASSWORD=<your password>\
  -v /opt/seafile:/shared\
  seafileltd/seafile:latest
mysqldump -uroot -p123 --opt ccnet_db > ccnet_db.sql
mysqldump -uroot -p123 --opt seafile_db > seafile_db.sql
mysqldump -uroot -p123 --opt seahub_db > seahub_db.sql
docker exec -it seafile bash
mysql -uroot ccnet_db < ccnet-db.sql
mysql -uroot seafile_db < seafile-db.sql
mysql -uroot seahub_db < seahub-db.sql
server {
        listen 80;
        server_name cloud1.ertuil.top cloud.ertuil.top;
        client_max_body_size 4G;
        location / {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Credentials' 'true';
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://172.33.0.2;
        }
}
​
server {
    listen 443;
    server_name cloud.ertuil.top cloud1.ertuil.top;
    ssl on;
    ssl_certificate /root/keys/cert.pem;
    ssl_certificate_key /root/keys/privkey.pem;
    client_max_body_size 4G;
    location / {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://172.33.0.2;
    }
}
docker run -d --name git\
        --net mynet\
        --ip 172.33.0.3\
        -v /opt/gitea:/data\
        -p 3000:3000\
        -p 2222:22\
        --restart=always\
        gitea/gitea:latest
​
server {
        listen 80;
        server_name ertuil.top www.ertuil.top my.ertuil.top;
​
        rewrite ^(.*)$  https://$host$1 permanent;
​
}
​
server {
        listen 443;
        server_name ertuil.top www.ertuil.top my.ertuil.top;
​
        ssl on;
        ssl_certificate /root/keys/cert.pem;
        ssl_certificate_key /root/keys/privkey.pem;
​
        location / {
                root /opt/blog;
                try_files $uri $uri/ /index.html @router;
        }
​
        location @router {
                rewrite ^.*$ /index.html last;
        }
}
​