【acwing】Django课程笔记之登录服务器及docker配置、git环境
注;本文中提到的终端均为acwing终端。
工程课 Linux-8.0. SSH的简易安全配置 - AcWing (避免服务器被偷家)
怎样修改远程登录的端口?_弹性云服务器 ECS_常见问题_登录与连接_远程连接类_华为云 (huaweicloud.com)
修改SSH端口
vim /etc/ssh/sshd_config 修改ssh的配置,设置新端口
service sshd restart 重启ssh服务(service sshd reload 用这个更好 service sshd restart 慎用_路明子正的博客 用不了的话还可以/etc/init.d/ssh reload)
设置安全组,放行SSH端口
ssh root@xxx.xxx.xxx.xxx -p yy # xxx.xxx.xxx.xxx替换成云服务器的公网IP,yy替换成ssh端口
sudo ufw status verbose 检查UFW状态(verbose参数可不加。当防火墙处于关闭状态时只会显示inactive)
启用UFW防火墙日志
sudo ufw logging on
sudo ufw logging medium #sudo ufw logging low|medium|high
日志文件在/var/log/ufw.log
在防火墙开放SSH端口:
sudo ufw allow ssh
sudo ufw allow xx #xx为ssh新端口
sudo ufw enable 开启防火墙
sudo netstat -tunlp | grep ssh 查看SSH侦听(监听)端口
Install Docker Engine on Ubuntu | Docker Documentation
终端中:
ssh root@xxx.xxx.xxx.xxx -p yy # xxx.xxx.xxx.xxx替换成云服务器的公网IP,yy替换成ssh端口
服务器中:
adduser acs # 创建用户acs
usermod -aG sudo acs # 给用户acs分配sudo权限
logout 退出ssh登录
终端中:
~/.ssh 后 vim config ,在其中
Host myserver1(别名,自定义)
HostName IP地址或域名
User 用户名
Port 修改后的ssh端口
创建密钥:ssh-keygen 然后一直回车即可。(仅第一次需要)
ssh-copy-id myserver1 后输入用户对应密码登录服务器即可实现免密登录
之后使用 ssh myserver1 即可实现免密登录
服务器中:
sudo apt-get update 软件更新
sudo apt-get install tmux 安装tmux
终端中:
scp .bashrc .vimrc .tmux.conf server_name: # server_name需要换成自己配置的别名(注意需要在home目录下)
输入tmux即可直接打开(按下ctrl+a后松开+d,挂起当前session。之后可用tmux a恢复)
服务器中在tmux中:
按照Install Docker Engine on Ubuntu | Docker Documentation中的流程安装docker
安装完毕后使用docker --version 命令查看版本,能显示版本号则表示已经安装完成。
服务器:
Linux post-installation steps for Docker Engine | Docker Documentation
将当前用户添加到docker用户组 sudo usermod -aG docker $USER
终端:
scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server_name: # 将镜像上传到自己租的云端服务器(Django课程应传django_lesson_1_0.tar文件)
ssh server_name # 登录自己的云端服务器
docker load -i docker_lesson_1_0.tar # 将镜像加载到本地
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 创建并运行docker_lesson:1.0镜像(将ssh原端口22映射到20000端口,如果服务器ssh端口已修改,则进行相应修改)
docker attach my_docker_server # 进入创建的docker容器
passwd # 设置root密码
(若服务器ssh端口修改,则也需要对docker容器中的ssh端口进行相应配置后重启ssh服务)
去云平台控制台中修改安全组配置,放行端口20000。
返回AC Terminal,即可通过ssh登录自己的docker容器:
ssh root@xxx.xxx.xxx.xxx -p 20000 # 将xxx.xxx.xxx.xxx替换成自己租的服务器的IP地址
然后,可以仿照上节课内容,创建工作账户acs。
最后,可以参考4. ssh——ssh登录配置docker容器的别名和免密登录。
报错:
kex_exchange_identification: read: Connection reset by peer
解决:docker容器中没有安装ssh,运行以下代码:
apt-get update
apt-get install ssh
sudo /etc/init.d/ssh start
遇到A new version (/tmp/fileYhwBDa) of configuration file /etc/ssh/sshd_config is available, but the version installed currently has been locally modified.时,
选择 install the package maintainer's version
在服务器中ssh root@localhost -p 20000 登录到docker容器中
在终端中ssh root@xxx.xxx.xxx.xxx -p 20000 登录到docker容器中
在docker中安装tmux,然后从终端传工作环境到docker中(Django镜像中已安装tmux,直接传配置文件即可)。
Django容器中:
django-admin --version 此命令可查看django版本(课程中提供的为3.2.8)
django-admin startproject acapp 建立项目
ls 查看文件夹
tree . 查看文件结构
cd acapp/ 进入项目文件夹
在项目文件夹acapp/下:
git init 初始化git
回到用户目录~下,使用ssh-keygen ,生成公私密钥对
gitLab中创建仓库(不勾选使用自述文件初始化仓库)后使用 Git 全局设置
git status 查看仓库状态
git add . 将所有待加入暂存区的文件加入暂存区
git commit -m "给自己看的备注信息" 将暂存区的内容提交到当前分支
vim README.md 编辑README.md文件
git status
git add . 将README.md文件加入到暂存区
git commit -m "add README" 提交到当前分区
git remote add origin git@git.acwing.com:xxx/XXX.git 将本地仓库关联到远程仓库
将~/.ssh/id_rsa.pub 公钥信息cat后,在gitlab中添加ssh密钥,以便实现免密登录
git配置ssh登陆后,却提示要输入用户名、密码的一种解决办法:更改remote协议
(git config --get remote.origin.url 查看remote协议,git remote set-url origin git@github.com:xxx/yyy.git修改remote协议,xxx用户名、yyy远程仓库名)
python3 manage.py runserver 0.0.0.0:8000 (建议带上0.0.0.0:8000)
访问服务器ip:8000后,提示You may need to add '服务器ip地址' to ALLOWED_HOSTS.
vim settings.py 将“服务器ip地址”以字符串形式添加到ALLOWED_HOSTS列表中。
__pycache__ 是python为了提高执行效率而自动生成的缓存文件夹(【Python】__pycache__文件夹是什么东西? - 知乎 ),git应忽略该文件夹。
在本地仓库根目录(即项目根目录)下 vim .gitignore 然后写入 **/__pycache__
git add .
git status
git commit -m "add allow host"
git push
python3 manage.py startapp game
git add .
git status
git commit -m "start app game"
git push
管理员页面打不开,因为数据库未迁移
python3 manage.py migrate 之后重启服务,即可进入管理员页面
python3 manage.py createsuperuser 创建管理员账户(密码的后续修改可以在管理员页面中进行)
进入game/
touch urls.py
mkdir templates
models存放数据结构class,views存放函数,urls路由 匹配网址和函数,templates网页模板