服务器迁移流程
1、服务器端
1、服务器安全组设置
入口规则开端口22,443,80,8000-8888。(重要)
2、改主机名:hostnamectl set-hostname swj
3、apt update
4、apt upgrade
5、如内存不足,增加虚拟盘
6、查看架构 uname -p,管理员登录 sudo -i2、安装 docker
docker ali 源
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
docker -v
//注意,arm的cpu,dockerhub上的大部分镜像都是x86_64架构下的,在使用dockerhub等平台的镜像时,一定要注意其架构是否支持aarch64!docker mirror
//测试mirror有效性 sudo docker pull docker-0.unsee.tech/hello-world
//https://blog.csdn.net/u014390502/article/details/143472743
"https://",
//镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://iro0ypfv.mirror.aliyuncs.com",
"https://f24b8a86bbc248afa74f4e1a86815585.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://dockerpull.cn",
"https://docker-0.unsee.tech",
"https://docker.imgdb.de"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart dockerdocker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
注:直接下载docker-compose二进制文件安装,直接下载后上传/usr/local/bin可更快。https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-linux-x86_64
2、添加可执行权限
chmod +x /usr/local/bin/docker-compose
3、查看版本
docker-compose --version
4、登录ali镜像,以便拉取images
$ docker login --username=indal@126.com registry.cn-shenzhen.aliyuncs.com
5、
docker pull mcr.microsoft.com/dotnet/aspnet:8.0
docker-compose up nginx中,出错后,将目录nginx.conf删除,上传文件
nginx stream模块先不启动docker-compose.yml
bash
---
version: "3.4"
services:
nginx:
image: registry.cn-shenzhen.aliyuncs.com/shuze/nginx:1.26.0
container_name: base-nginx
volumes:
- /root/nginx/nginx.conf:/etc/nginx/nginx.conf
- /root/nginx/conf:/etc/nginx/conf.d
- /root/nginx/log:/var/log/nginx
- /root/nginx/cert:/etc/ssl/certificates
- /root/nginx/html:/usr/share/nginx/html
environment:
- TZ=Asia/Shanghai
network_mode: host #替代-port
restart: always
portainer:
image: registry.cn-shenzhen.aliyuncs.com/shuze/portainer-ce:2.20.3
container_name: base-portainer
ports:
- "8020:9000"
volumes:
- /root/portainer/data:/data
- /var/run/docker.sock:/var/run/docker.sock
restart: always
environment:
- TZ=Asia/Shanghai
redis:
image: registry.cn-shenzhen.aliyuncs.com/shuze/redis:7.0
container_name: base-redis
ports:
- "8022:6379"
command: --requirepass "password"
volumes:
- /root/redis/data:/data
- /root/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /root/redis/logs:/logs
restart: always3、nginx
docker exec -it base-nginx /bin/bash
docker exec base-nginx nginx -s reloadnginx gzip 开启,在 docker/etc/nginx/nginx.conf 文件中增加
gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_types application/json text/css text/javascript application/javascript text/xml application/xml application/xml+rss text/plain;
gzip_min_length 1000; # 最小压缩长度
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_vary on;nginx stream 模块,解决 redis、postgres 的 tcp 问题
# shuze.net.stream
upstream postgres {
server 120.79.58.102:8026;
}
upstream redis {
server 120.79.58.102:8022;
server 8.134.14.22:8022 down;
}
server {
listen 8222 ;
proxy_pass redis;
}
server {
listen 8226;
proxy_pass postgres;
}5、数据库初始化
!!!可以从Navicat Premium 16中直接传输。postgres比mysql对内存要求更小。mysql=>postgres,最终还是采用笨办法,把数据库导为json后再在vs中update-data后,导入json。总的来说比其它方法简单。
update-database
1、authserver
1)生成模块,从中把AUTHSERVER单独取出
abp new Shuze -t module --no-ui --database-provider ef -dbms MySQL -csf --connection-string Server=shuze.net;Port=3306;Database=ShuzeAuth;User=root;Password=;sslmode=none;CharSet=utf8;AllowUserVariables=True; --version 7.0.0
2)更换为mysql数据库
3)appsettings.json配置,种子设置
4)update-database
2、commonservice
1)
add-migration MysqlToPostgresInitCommon -c CommonServiceHttpApiHostMigrationsDbContext
add-migration MysqlToPostgresInitAuth -c AuthServiceHttpApiHostMigrationsDbContext
add-migration MysqlToPostgresInitFileStorage -c FileStorageHttpApiHostMigrationsDbContext
2)
update-database -Context AuthServiceHttpApiHostMigrationsDbContext
update-database -Context FileStorageHttpApiHostMigrationsDbContext
update-database -Context CommonServiceHttpApiHostMigrationsDbContext
dbcontext命令中以查询context
Remove-Migration
EF Core删除迁移的命令是Remove-Migration。一次只删除一个迁移,并且仅删除尚未应用到数据库的最新迁移。如果强行删除已经应用到数据库的迁移,会抛出异常。
删除尚未应用到数据库的最新迁移
直接运行Remove-Migration命令即可。
删除已经应用到数据库的迁移
假设我们已经按顺序应用了Migration1、Migration2和Migration3,想要删除Migration2和Migration3。
首先要撤销迁移对数据库造成的更改。即我们需要回滚Migration2和Migration3的更改,再执行迁移Migraiton1,将数据库的状态和当前需要回滚的模型状态搞成一致。实现方法很简单,想要回滚Migration2和Migration3,我们直接执行Update-Database Migration1即可。因为2和3是在1之后应用的,所以执行该指令可以直接撤销2和3的更改。EF Core还会从__EFMigrationsHistory表中删除2和3的迁移记录。
然后需要删除2和3的Migration代码文件。不应手动删除,应当使用命令Remove-Migration 文件名,即:
Remove-Migration Migration3
Remove-Migration Migration2
3、导入数据菜单数据,设置角色权限
api/CommonService/menu/importDataFromUploadTxt,
api/CommonService/menu/initRoleMenu
4、数据库恢复
5、postgresql
出错:UTC [747271] LOG: invalid length of startup packet
注意连接字符串为userid
出错:由于目标计算机积极拒绝,无法连接。
要检查网址及端口是否正确,连接字符串是否正确5、问题及处理
2g 内存不足处理
阿里云,内存不够(2g2m),监控里面系统磁盘 BPS(bit/s)突然飙升并且整个服务器卡死。
1创建名为 swapfile 、大小为 2G 的 swap 文件(执行需要几十秒):
dd if=/dev/zero of=/var/swapfile bs=1024 count=2097152
2用 mkswap 命令建立 swap 分区,并指定 swap 文件是刚才创建好的 /var/swapfile
mkswap /var/swapfile
3 激活 swap 分区, 如果出现提示【不安全的权限 0644,建议使用 0600】,可以忽略,也可以听从建议修改权限。
swapon /var/swapfile
chmod -R 0600 /var/swapfile
4开机自动挂载 swap 分区
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
echo "vm.swappiness = 10" >> /etc/sysctl.conf
reboothttps://blog.csdn.net/weixin_39334709/article/details/105536380
text
swapoff -v /var/swapfile