Django上课笔记——环境配置与项目创建
Posted 卷王2048
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django上课笔记——环境配置与项目创建相关的知识,希望对你有一定的参考价值。
Django上课笔记(一)——环境配置与项目创建
租阿里云服务器
在学生机里,我们可以选择租这一台
如果有条件的话可以买y总推荐的:
双十一三年只需180!!!
注意:如果可以选系统,一定要选择Ubuntu 20.04 64位
配置服务器
1.登录自己的云服务器
首先用AC Terminal
或电脑上的git bash
,用ssh
登录到你租的云服务器
ssh 用户名@公网IP
如果是阿里云,用户名默认为root
按照提示输入密码后,就登录到了自己的云服务器上
1.1创建新用户
如果直接用root账户操作,会有误操作的风险。所以一般新建一个用户,并给其root权限。避免翻车~~~~
创建一个新用户:
adduser 用户名
#创建时下面的信息都可以不填
给该用户分配root权限:
usermod -aG sudo 用户名
由root用户切换到指定用户:
su 用户名
由普通用户切换回root用户:
su
cd ~ #回到当前用户的家目录
注:root用户的目录在:/root
下,普通用户的目录在:/home/用户名
下
当然,你也可以配置免密登录简化登录过程。
1.2配置免密登录
一直按ctrl+d
回到AC Terminal
或电脑上的git bash
,然后:
cd ~/.ssh
在.ssh
目录下,新建一个config
文件,文件内容为:
Host 自己起的主机名
HostName 公网ip
User 用户名
Port 端口号
然后使用如下命令一键添加公钥:
ssh-copy-id myserver
2.配置docker环境
2.1.安装docker
-
先执行:
sudo apt-get update
如果提示没有
apt-get
这条命令,需要先下载这条命令: -
安装tmux:
sudo apt-get install tmux
-
同步配置文件:
回到AC Terminal
或电脑上的git bash
,然后:scp .bashrc .vimrc .tmux.conf 自己起的主机别名:
同步后,tmux和vim就有了熟悉的感觉_!_
-
进入docker官网
打开tmux,在tmux中安装,依次执行:
-
sudo apt-get update
-
sudo apt-get install \\ ca-certificates \\ curl \\ gnupg \\ lsb-release
-
curl -fsSL https://download.docker.com/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://download.docker.com/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 --version
如果正确输出版本号,大功告成!!!!
-
由于docker的很多命令需要sudo
权限,为了方便可以将当前用户加入安装中自动创建的docker用户组:
sudo usermod -aG docker $USER
2.2.建立docker镜像
acwing有统一的镜像,位置在:/var/lib/acwing/docker/images/
下
-
在
AC Terminal
中,将django镜像上传至自己的服务器:scp /var/lib/acwing/docker/images/镜像包名 自己起的主机别名:想保存的自己服务器上的文件路径
例如,我在别名为
ali
的服务器上创建了一个文件夹docker_images
,路径为~/docker_images
。要将AC Terminal
中/var/lib/acwing/docker/images/
下的django_lesson_1_0.tar
镜像保存在服务器中的docker_images
下,有:scp /var/lib/acwing/docker/images/django_lesson_1_0.tar ali:docker_images:
将
docker_images
下载到本地:scp -r 自己起的主机别名:要下载文件夹的路径 要下载至的路径
-
将镜像包导入到自己服务器的docker环境中:
docker load -i 镜像包路径
对于上例,有:
docker load -i docker_images/django_lesson_1_0.tar
待其加载好后,可以用
docker images
查看已经加载好的镜像 -
在云服务器官网上->控制台->自己服务器->
安全组
->配置规则
中,打开20000
和8000
端口(除端口范围和备注,其他选项和已有端口保持一致) -
用镜像创建并启动一个容器
docker run -p 20000:22 -p 8000:8000 --name django_server -itd django_lesson:1.0
这里,对于上过Linux基础课的同学,已经在20000端口运行了
docker_lesson
镜像的一个容器。对于这个问题,要给之前的容器换端口号映射。
tips:
给容器换端口号映射:-
查看所有容器:
docker ps -a
-
先将容器打包为一个镜像:
#:将容器CONTAINER导出到本地文件xxx.tar中 docker save -o 生成文件的存放路径(一般以.tar为后缀) 镜像名
注意这里是
镜像名
不是容器名
。因为导出容器实际上是导出容器的镜像,容器本身不能做迁移tips
:注意这两组语句的区别:#下面两句都是导出镜像/容器的镜像 docker save -o 生成文件的存放路径(一般以.tar为后缀) 镜像名 docker export -o 生成文件的存放路径(一般以.tar为后缀) 镜像名 #下面两句都是加载镜像/容器的镜像 docker load -i 要加载的镜像包的路径 docker import 要加载的镜像包的路径 给该镜像起的别名
区别:
export/import
会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
save/load
会保存完整记录,体积更大 -
将这个容器删除,删除前要保证该容器已经停止运行
# 查看所有容器 docker ps -a #关闭某个容器 docker stop 正在运行中的容器名 #删除某个容器 docker rm 容器名
-
用原来的镜像创建并启动一个容器,这时,就可以重新映射端口号:
docker run -p 端口号映射 --name 镜像名 -itd 给该镜像重命名的名字
-
-
启动并进入容器
#启动容器 docker start django_server #进入容器 docker attach django_server
-
重复
1.1创建新用户
和1.2配置免密登录
的过程,使AC Terminal
或电脑上的git bash
能直接登录到容器上 -
必须
attach
后,先按Ctrl-p
,再按Ctrl-q
挂起容器,ssh
才能登录成功
第一个Django项目
创建django项目
django-admin startproject 项目名
如:
django-admin startproject acapp
acapp
的项目结构:
.
`-- acapp
|-- acapp
| |-- __init__.py
| |-- asgi.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py
用git维护该项目
-
进到
acapp
文件夹下,执行命令:git init
-
生成密钥,用来连接仓库:
ssh-keygen
-
在acgit上创建一个账号,并创建一个新项目
注意:创建时要把使用自述文件初始化仓库
的勾去掉 -
跳转后,将
的两行命令执行一遍
-
将初始生成的文件提交git
git add . git commit -m "cerat project"
-
创建并编写
readme.md
文件 -
将自己服务器的公钥上传至acgit:
cat ~/.ssh/id_rsa.pub
把公钥粘贴到:
中的:
点击添加密钥
-
执行下图的箭头指的命令
-
再执行:
git push
根据提示,再执行:
git push --set-upstream origin master
至此,服务器的项目与远程的仓库连接了起来
运行项目
-
执行:
python3 manage.py runserver 0.0.0.0:8000
会发现项目顺利的跑了起来,但是,在地址栏里输入地址访问会报错。原因是没有把公网
ip
加到ALLOWED_HOSTS
里 -
配置
ALLOWED_HOSTS
:#全局搜索哪些文件里有字符串 ag 字符串
去到对应文件夹下,对应位置把自己的公网ip的
字符串
写进python的列表中在git仓库的根目录下,创建
.gitignore
文件,来配置不需要git管理的文件
,如:*/__pycache__
然后可以将该版本提交git
创建一个app
再开一个tmux窗口用来写项目,对应操作为:按下Ctrl + a后手指松开,然后按c:在当前session中创建一个新的window
切换窗口的操作为:按下ctrl + a后手指松开,然后按s:
,再按下方向键右键展开所有window
,再用方向键上下选择对应window
执行:
python3 manage.py startapp app名字
y总建议:一个项目只创建一个app
就生成了一个game
文件夹:
|-- __init__.py
|-- admin.py #管理员页面能看到哪些数据库
|-- apps.py
|-- migrations
| `-- __init__.py
|-- models.py #定义网站的各种数据库表
|-- tests.py
`-- views.py #存放视图层操作给各种函数
然后可以将该版本提交git
查看管理员页面
-
回到tumx中后台 的window
-
先把项目停止运行,然后把数据库的数据更新上去:
python3 manage.py migrate
-
再把项目跑起来:
python3 manage.py runserver 0.0.0.0:8000
-
在地址栏里输入
http://8.130.31.115:8000/admin
,进入管理员登录界面 -
创建管理员账户:
python3 manage.py createsuperuser
编写具体业务
-
在
game
文件夹下创建urls.py
文件,和templates
文件夹 -
在
game
下各个文件的作用:├── game │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations #存放html文件 │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ ├── urls.py #存放路由 │ └── views.py #存放视图操作的函数
-
编写
game
下的views.py
:from django.shortcuts import render from django.http import HttpResponse def index(request): line1 = '<h1 style="text-align: center">我的博客</h1>' line4 = '<a href="https://www.acwing.com/user/myspace/index/82975/">进入我的空间</a>' line5 = '<a href="https://git.acwing.com/codeRokie/acapp">进入项目仓库</a>' line3 = '<div><a href="/play/">测试跳转和返回</a></div>' line2 = '<img src="https://gitee.com/liuyutaocode/tao-blog-image/raw/master/img/bg_mask.jpg" width=2000>' return HttpResponse(line1 + line4 + line3 + line2 + line5) def play(request): line1 = '<h1 style="text-align: center">游戏界面</h1>' line3 = '<a href="/">返回主页面</a>' line2 = '<img src="https://cdn.acwing.com/media/user/profile/photo/82975_lg_521a445e8a.jpg" width=2000>' return HttpResponse(line1 + line3 + line2)
-
编写
game
下的urls.py
:from django.urls import path from game.views import index urlpatterns = [ path("", index, name="index") ]
-
编写
acapp
下的urls.py
:from django.contrib import admin from django.urls import path, include import game urlpatterns = [ path('',include('game.urls')), path('admin/', admin.site.urls), ]
访问过程:
用户请求
—>acapp/url.py
—>game/url.py
—>game/views.py
下的函数中
完结撒花~!
以上是关于Django上课笔记——环境配置与项目创建的主要内容,如果未能解决你的问题,请参考以下文章