创建工作用户wky并赋予sudo权限
登录到服务器:
ssh root@xxx.xxx.xxx.xxx # xxx.xxx.xxx.xxx替换成服务器的公网IP
创建wky用户:
adduser wky # 创建用户wky
usermod -aG sudo wky # 给用户wky分配sudo权限
配置wky用户的别名免密登录方式
返回本地终端,配置wky用户的别名wkyserver(之后再使用服务器时,可以直接使用别名wkyserver):
创建文件 ~/.ssh/config,在里面添加:
Host wkyserver
HostName xxx.xxx.xxx.xxx # xxx.xxx.xxx.xxx替换成服务器的公网IP
User wky
免密登录(密钥登录):
创建密钥:ssh-keygen,然后一直回车即可。
一键添加公钥:ssh-copy-id wkyserver
使用别名免密登录wky用户:ssh wkyserver
配置新服务器的工作环境
将本地的配置传到新服务器上:
scp .bashrc .vimrc .tmux.conf server_name: # server_name需要换成自己配置的别名
例如在windows终端:scp D:\GitRepository\serverconfig\.vimrc wkyserver:
在git bash终端:scp /d/GitRepository/serverconfig/.bashrc wkyserver:
安装tmux和docker
登录自己的服务器,然后安装tmux:
sudo apt-get update
sudo apt-get install tmux
打开tmux。(养成好习惯,所有工作都在tmux里进行,防止意外关闭终端后,工作进度丢失)
然后在tmux中根据官方文档安装docker即可。(官方文档:https://docs.docker.com/engine/install/ubuntu/)
将当前用户添加到docker用户组
为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组(官方文档:https://docs.docker.com/engine/install/linux-postinstall/):
sudo usermod -aG docker $USER
执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。
Docker 官方镜像仓库在国外,国内访问慢或超时,需配置国内镜像源(如阿里云、网易云):登录阿里云官网 → 进入「容器镜像服务」→ 「镜像加速器」→ 复制专属加速地址(每个账号不同)。
创建docker容器
docker容器方便迁移,推荐项目都写在docker容器中。它相当于一个新的服务器,因此重复前面的操作,继续创建工作账户wky。(docker镜像使用django_lesson_1_0.tar)
进入本地Terminal(这里用git bash),然后:
scp /d/GitRepository/serverconfig/django_lesson_1_0.tar wkyserver: # 将镜像上传到自己租的云端服务器
ssh wkyserver # 登录自己的云端服务器
docker load -i django_lesson_1_0.tar # 加载镜像
docker run -p 20000:22 -p 8000:8000 --name django_server -itd django_lesson:1.0 # 创建容器,20000端口用于ssh登录,8000端口用于调试
docker attach django_server # 进入创建的docker容器
adduser wky
usermod -aG sudo wky
去云平台控制台中修改安全组配置,放行端口20000和8000。
然后ctrl+p, ctrl+q挂起容器,回到云服务器层
ssh wky@localhost -p 20000 # 在云服务器层ssh连接到docker层的wky,测试20000端口是否开放
然后logout(ctrl+d)回到云服务器层,再logout回到本地终端,配置容器中的wky用户的别名免密登录方式
配置别名djangoserver:
cd .ssh
vim config
添加:
Host djangoserver
HostName 39.99.43.230
User wky
port 20000
配置免密登录
ssh-copy-id djangoserver
现在可以直接ssh djangoserver
回到本地终端:将配置文件.bashrc .vimrc .tmux.config传到djangoserver(也可以在云服务器wkyserver传,因为云服务器也传入了这些配置文件,只不过云服务没有配置别名和免密登录,不能用djangoserver)
更换云服务器时,迁移容器
登录到云服务器ssh wkyserver
docker [container] commit CONTAINER django_lesson:1.1 # 将容器CONTAINER刻成镜像django_lesson:1.1
docker save -o django_lesson_1_1.tar django_lesson:1.1 # 将镜像django_lesson:1.1导出到本地文件django_lesson_1_1.tar中
chmod +r XXX.tar # 加上可读权限
回到本地终端
scp wkyserver:django_lesson_1_1.tar . # 传到本地
增加端口映射
登录到云服务器ssh wkyserver
docker [container] commit CONTAINER django_lesson:1.1 # 将容器CONTAINER刻成镜像django_lesson:1.1
docker stop CONTAINER
docker rm CONTAINER
docker run -p 20000:22 -p 8000:8000 -p 5015:5015 --name django_server -itd django_lesson:1.1 # 创建容器
在安全组中增加端口