前言:需要有一个跳板终端(如 AC Terminal),同时熟悉scp传文件。本博客均以Acwing中运行的 Django 项目迁移为例
基础知识铺垫:
注意scp的文件传输始终就是相对于他自身的,都在本地终端进行操作,比如:
从本地—>云服务器:scp django_lesson_1_2.tar server1:
从云服务器—>本地:scp server1:django_lesson_1_2.tar .
一、在旧服务器(马上要过期了)中的操作
1、登录容器(一直工作的那个),关闭所有运行中的任务
一般是把tmux中所有启动的服务关闭
2、将容器保存成镜像,将CONTAINER_NAME替换成容器名称
docker commit CONTAINER_NAME django_lesson:1.2
3、将镜像django_lesson:1.2导出到本地文件django_lesson_1_2.tar中(就是把镜像打包成可以运输的tar文件)
docker save -o django_lesson_1_2.tar django_lesson:1.2
二、在自己的本地终端(如AC Terminal)中的操作
4、输入 logout
,退出旧服务器,回到本地终端,把旧服务器上打包好的镜像文件用scp下载到本地终端
scp server1: django_lesson_1_2.tar . //注意最后有一个点,表示当前文件夹
5、把下载到本地的镜像文件再传输到新服务器上
scp django_lesson_1_2.tar server2: //注意没有的冒号不能落下,表示传输到哪个服务器
三、在新服务器(新买的)中的创建容器操作
前期铺垫:
(1)在新买的毛坯服务器上装上docker;
(2)开辟非根目录工作用户(acs);
(3)配置免密登录;
(4)配置新服务器的工作环境。 具体怎么做:引用 Acwing 的linux
课程的服务器配置连接:阿里云新服务器环境配置
6、将镜像加载到新服务器中的 acs 工作用户的本地
docker load -i docker_lesson_1_2.tar
加载成功后,输入docker images
命令后的终端显示
REPOSITORY TAG IMAGE ID CREATED SIZE
django_lesson 1.2 fc9e8b64cfe4 25 hours ago 1.98GB
7、使用保存的镜像重新创建容器,同时开放一些必要的端口
docker run -p 20000:22 -p 8000:8000 -p 80:80 -p 443:443 --name CONTAINER_NAME -itd django_lesson:1.2
CONTAINER_NAME 一般命名为 -> `django_server`
注意:如原镜像的环境跟现在的一样,则8-9步可以省略
8、进入刚刚创建的docker容器,此时相当于又从新开辟了一个新服务器,只不过还需要加上新映射(20000 -> 22)
开放 的 20000
端口
docker attach docker_server
同时设置root密码
passwd
9、同样的,先在毛坯中配置一些基本操作,操作完成后即可在本地终端 ssh
登录到自己django
项目的开发工作区中了!
(1)开辟非根目录工作用户(acs);
(2)配置免密登录;
(3)配置新服务器的工作环境。
具体怎么做:引用 Acwing 的linux 课程的服务器配置连接:(https://www.acwing.com/blog/content/10867/)
四、在新服务器里的新容器中重新启动(恢复)自己的项目
10、启动nginx服务
sudo /etc/init.d/nginx start
11、 启动redis-server 服务
sudo redis-server /etc/redis/redis.conf
12、启动匹配服务(在 /home/acs/
目录下)
cd /acapp/match_system/src/
./main.py
13、启动django_channels 联机服务(在 /home/acs/acapp
目录下)
daphne -b 0.0.0.0 -p 5015 acapp.asgi:application
14、启动uwsgi 服务器服务(在 /home/acs/acapp
目录下)
uwsgi --ini scripts/uwsgi.ini
五、可以畅快地玩自己copy的术士之战了!!!
这下算真正意义上的完结撒花啦~
2023.6.25-2023.7.24