230810迁移服务器
起因
腾讯云过期了,而且首单优惠只能买一次,续费价格太高了。于是我切换到阿里云。 但是我并没有找到快速迁移的方法(在两台轻量应用服务器之间),所以我一边迁移,一边写此文章记录其过程与经验。
首先备份
我利用Xftp
软件先把一些重要的文件备份到本地,一些文件由于过大无法直接在云服务器上面压缩(云服务器空间不够)
新服务器配置
首先一套sudo apt update
和sudo apt upgrade -y
更新。
ssh传输文件
然后我考虑将我的机器人整个文件夹迁移过来,尝试使用ssh
从阿里云连接腾讯云,结果不行。反过来尝试,可以,于是:
# 从服务器拷贝文件到本地命令:
scp -r [user]@[remote_host]:[remote_dir] [local_dir]
# 从本地传输文件到服务器:
scp -r [local_dir] [user]@[remote_host]:[remote_dir]
连接成功后会提示你输入密码,如果失败则会报出
ssh: connect to host 43.142.190.190 port 22: Connection refused
这种的错误。
重新安装halo
安装docker以及docker compose
根据dokcer安装文档以及docker compose安装文档安装。
安装mysql
由于halo使用的mysql,所以要重新安装mysql,直接一句:
sudo apt install mysql-server
就安装完成了。
接着完成初始化操作:
以下代码中,只有中文需要自己修改
- 进入mysql:
sudo mysql
- 重置root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
- 刷新权限
FLUSH PRIVILEGES;
如果需要远程登录则:
- 新建用户
create user 'root'@'%' identified by '密码';
- 授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
- 刷新权限
FLUSH PRIVILEGES;
- 先退出mysql,然后停止运行
sudo systemctl stop mysql
- 再修改配置文件(因为它默认禁止远程登录)
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 用#注释掉这个:
bind-address = 127.0.0.1
安装nginx proxy manager
使用ssh传输文件过去,然后直接运行
docker compose up -d
迁移yunzai-bot
由于文件太大,不如重新下载还快不少,于是我准备精简一下,正好做个小清理,把用不上的插件都删了。
du -h --max-depth=1
查看当前文件夹内的各文件占用空间大小
由于.git
文件太大,所以我打算重建仓库,直接删掉然后打包备份。
登录问题
得弄一个api
chromium问题
apt-get install ca-certificates fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils libxkbcommon0 -y
字体问题
apt install -y --force-yes --no-install-recommends fonts-wqy-microhei
apt-get install fonts-wqy-zenhei
ffmpeg配置
因为要弄点歌功能,所以就要安装ffmpeg,稳妥起见,使用aptitude安装
sudo aptitude install ffmpeg
接着使用whereis ffmpeg
获取路径,填入配置
其他问题
防火墙
网站还是访问不了,在排除了解析的问题后,推测是防火墙的问题。使用sudo ufw allow [端口]
命令,也可以直接使用sudo ufw disable
关掉防火墙(反正阿里云自己有防火墙,而且我对自用的服务器的安全性要求不高)。
内存满
输命令的时候卡死,一些命令也没有反应,也不是网络的问题,一看内存占用1.9G/2.0G。但是为什么我在腾讯云上面就不会这样呢?
于是我使用free -h
查看内存情况,发现腾讯云的swap为2G,阿里云的swap为0B。根据swap字面意思推测,应该是类似于虚拟内存的存在。
根据这篇文章,我设置了2G的swap空间,果然流畅了许多。
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo vim /etc/fstab
# 在末尾添加以下内容:
/swapfile swap swap defaults 0 0