最近公司有一个台服务器到期了要销毁,但上面有一个 gitea 服务还在跑,未来也有可能要用到,故需要迁移。

本文记录一下迁移过程。

要销毁的是 ubuntu 22.04,迁移的对象是一台 ubuntu 20.04。要是使用 snap,首先用 apt 安装。

apt install snapd

snap 安装完成,再安装 gitea。

snap install gitea

PS: 要吐槽一下国内的网络,不省心,估计受到 GFW 的影响,断断续续重试了好几次才装上。

需要注意的是,安装好的 snap 服务名称叫 snap.gitea.web,所以查看 gitea 状态的命令是:

service snap.gitea.web status

使用 lsof 命令可以看到 gitea 确实是跑在 3000 端口上的:

root@crowall.com:~# lsof -i:3000
COMMAND    PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
gitea   365263 root    3u  IPv6 258345863      0t0  TCP *:3000 (LISTEN)

先停止新安装的 gitea 服务:

service snap.gitea.web stop

备份老数据并迁移

在老服务器上备份一下 gitea 的数据:

cd /var/snap/gitea
zip -r gitea-common.zip common

把 gitea-common.zip 下载下来,上传到新服务器。

cd /var/snap/gitea
mv common common2
unzip gitea-common.zip

解压完成后,启动新服务器上的 gitea:

service snap.gitea.web start

迁移就完成了。

配置 nginx

由于我们的 http 是用 nginx 代理的,所以在新服务器上添加一下 nginx 配置:

server {
    listen 80;
    server_name gitea.tony-crowall.com;
    return 301 https://gitea.tony-crowall.com$request_uri;
}

server {
    listen 443 ssl;
    server_name gitea.crowall.com;

    client_max_body_size 100m;

    ssl_certificate   /etc/nginx/certs/gitea.tony-crowall.com.pem;
    ssl_certificate_key  /etc/nginx/certs/gitea.tony-crowall.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    gzip on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 3;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png;
    gzip_min_length 512;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6].(?!.*SV1)";

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

重载 nginx 配置:

service nginx reload

修改 DNS 解析

最后到阿里云修改 DNS 解析,改到新服务器的 IP。

当然,先要本地改一下 host 测试一下是否可用先。

标签: ubuntu, gitea