0、配置docker、git环境与django项目创建

源码地址https://gitee.com/pxlsdz/hyld

演示地址http://121.199.59.80/hyld/

项目搭建

租一台具有公网IP的云服务器,并且配好Docker环境,采用git管理版本文件。

前期搭建可以参考:

  1. SSH免密登录
  2. git 常用命令
  3. 云服务器配置与安装
  4. docker实用配置与安装教程

配置环境

  1. 将镜像上传到自己租的云端服务器

    scp django_1_0.tar server_name:
    
  2. 登录自己的云端服务器 ,使用SSH免密登录

    ssh server_name
    
  3. 将镜像加载到本地

    docker load -i django_1_0.tar
    
  4. 创建并运行django:1.0镜像 (端口要自己去云平台放行-安全组) ,20000用于ssh登录,8000用于访问项目

    docker run -p 20000:22 -p 8000:8000 --name django_server -itd django:1.0
    
  5. 进入创建的docker容器

    docker attach django_server
    
  6. 设置root密码 ,与云服务器相同, 我们也不会在虚拟服务器中直接使用root权限, 会创建一个有sudo权限的用户,详细配置:云服务器配置与安装

    # 设置root密码
    passwd
    # 创建普通用户sdz
    adduser sdz
    # 给用户sdz分配sudo权限
    usermod -aG sudo sdz
    # 可切换到用户sdz中 
    su sdz
    
  7. ctrl p + ctrl q 挂起容器 (让虚拟服务器在后台运行):

  8. 返回AC terminal,为dockersdz用户配置别名和免密登录 ,详细介绍:SSH免密登录

    # 配置别名,注意添加端口号
    vim ~/.ssh/config
    # 为sdz用户一键添加公钥,免密登录 
    ssh-copy-id 别名
    
  9. 配置置一下docker环境

    scp .bashrc .vimrc .tmux.conf django:
    

Docker临时端口映射方法

方法

  1. 利用docker ps命令查看<container_id>(容器id)

  2. 查看容器IP:
    docker inspect <container_id> | grep IPAddress

  3. 宿主机配置iptables:

    iptables -t nat -A DOCKER -p tcp --dport <host_port> -j DNAT --to-destination <container_ip>:<docker_port>
    iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source <container_ip> --destination <container_ip> --dport <docker_port>
    iptables -A DOCKER -j ACCEPT -p tcp --destination <container_ip> --dport <docker_port>
    
  4. 查看是否映射成功: iptables -t nat -nvL

例如

将容器内22端口映射到宿主机20000端口

172.17.0.2   --->    container_ip
20000        --->    host_port
22           --->    docker_port

iptables -t nat -A DOCKER -p tcp --dport 20000 -j DNAT --to-destination 172.17.0.2:22
iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.17.0.2 --destination 172.17.0.2 --dport 22
iptables -A DOCKER -j ACCEPT -p tcp --destination 172.17.0.2 --dport 22

iptables -t nat -nvL(查看是否映射成功)

注:如果报错在命令前面加上sudo提升一下权限

缺陷:重启之后需要重新加

项目创建

  1. 打开tmux是个好习惯, 防止意外退出工作丢失.

  2. 创建django项目hyld

    django-admin startproject hyld
    
  3. 配置 git, 使用git维护项目,详细参考git 常用命令:

    • ssh-keygen 生成密钥用于连接到gitee或者ac git上面

    • gitee偏好设置中,打开ssh密钥,添加一下刚才生成的公钥。

    • git init 进到hyld中将其配置成git仓库

    • 打开gitee,在gitee上创建一个仓库(项目)按照下面的提示在gitee里面配置一下git

      git config --global user.name xxx
      git config --global user.email xxx@xxx.com
      git add .
      git commit -m "xxx"
      git remote add origin git@gitee.com:pxlsdz/hyld.git
      # 设置本地的branch_name分支对应远程仓库的branch_name分支
      git push --set-upstream origin master
      

编写项目

  1. 首先尝试运行项目: python3 manage.py runserver 0.0.0.0:8000

    • 运行成功, 在浏览器输入:IP:8000就可以访问了。

    • 网页提示需要将IP地址放入ALLOWED_HOSTS

    • 小技巧: 使用ag ALLOWED_HOSTS找到其所属文件以及在文件中的位置. 将我们的IP加入其中。

    • 至此我们就成功运行我们的项目了。

      image-20211212165748372

  2. 创建app

    • 小技巧: 使用git add .将所有修改文件加入暂存区时忽略某些文件。比如__pycache__是中间文件,只是用来加速运行的,是python系统生成的,不是完美源代码。在git仓库
      根目录创建.gitignore, 每行写入你希望忽略的文件名(可使用类型正则表达式的匹配模式),例如**/__pycache__

    • 我们输入IP:8000看到的网页是Django默认网页. 要编写我们自己的网页(代码), 需要创建app. (project提供配置文件; 我们在app编写模型和视图代码).

    • 云端开发习惯: 开两个tmux:一个tmux用于维护控制台, 接受运行过程中的信息; 另一个用于开发。
      我们可以Ctrl-a + d挂起当前tmux, 输入tmux再创建一个。之后用Ctrl-a + s在两个tmux间切换。

    • 生成一个app: python3 manage.py startapp game. 其中gameapp名.

      game文件中的内容:

      • admin.py: 存储管理员页面
      • models.py: 定义数据库表
      • views.py: 视图/函数
    • 登录django管理员界面

      • ctrl c 先关掉控制台

      • python3 manage.py migrate 同步一下数据库的修改,之后就可以正常进入IP地址:8000/admin

      • python3 manage.py createsuperuser 创建管理员账号

      • python3 manage.py runserver 0.0.0.0:8000 启动控制台
        IP地址:8000/admin 进到管理员登录界面,输入一下刚才创建的账号即可进到管理员界面

  3. 编写页面

    • game中关键的几个文件(夹),如果没有手动创建即可

      cd game
      touch urls.py
      mkdir templates
      
      • models.py: 数据存储格式, 如Class

      • views.py: 视图/函数逻辑, 例如点击网页中的按钮, 实际是调用在views中实现的函数.

      • urls.py: 路由, 根据不同网页地址判断调用什么函数.

      • templates: 文件夹, 存储页面格式. 如html.
        随着网站逻辑的增加, 上述的几个文件可以借助python很容易的扩展为文件夹(树形结构的文件).

    • views中写入返回字符串的函数(网页向views传入请求, 其返回一个字符串); 在game下的 urls中写入如果地址为IP:8000/..., 调用哪个函数, 此外要在app下的urls引入gameurls.

      # game 文件夹
      # 定义接口
      vim views.py 
      # 定义路由
      vim urls.py 
      
      # hyld 文件夹
      cd hyld 
      # 加入访问game的路由即可
      vim urls.py 
      
    • 大致顺序: 输入网址 --> hyld/urls --> game/urls --> game/views内的函数 --> 返回字符串至网页.

    • git保存提交分支,注意过滤掉.swp文件,具体修改代码请查看gitee

posted @ 2021-12-16 01:52  pxlsdz  阅读(94)  评论(0编辑  收藏  举报