
一些关于django的常用命令:
1)创建django项目
django-admin startproject myproject
manage.py文件:这是管理Django项目的重要命令行工具,它主要用于启动项目、创建应用和完成数据库的迁移等。 settings.py文件:这是Django项目的配置文件,包含了项目的基本信息、静态文件路径、模板路径、中间件等。 urls.py文件:这是Django项目的路由文件,用于定义URL与视图函数之间的映射关系。 wsgi.py文件:这是Django项目的WSGI接口文件,用于将请求转发给相应的视图函数。
2)创建一个应用
python manage.py startapp student
3)运行这个django项目
python manage.py runserver
4)数据库配置
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "student", #数据库名称
"USER":"root", #数据库账户名
"PASSWORD":"123456",#数据库密码
"HOST":"127.0.0.1",#数据库地址
"POST":"3306", #数据库端口
数据库管理软件:navicat15下载
链接:https://pan.baidu.com/s/1LO-gtfT7Di9l4YdqGrW5TA?pwd=1207 提取码:1207
打开安装包选择合适的的版本安装:
右键管理员打开注册机:
点击patch找到安装路径:
打开navicat点击注册:
激活不管用,点击手动激活:
请求代码复制到框内:
最后显示激活成功!
在centos7.9中部署gitee上的django3.2项目。
一、部署
1.1 下载基础镜像
[root@localhost ddd]# docker pull centos:7.9.2009
7.9.2009: Pulling from library/centos
2d473b07cdd5: Already exists
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7.9.2009
docker.io/library/centos:7.9.2009
[root@localhost ddd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wupeiqi/jd 1.0 50ed80baaf47 3 days ago 2.31GB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos 7.9.2009 eeb6ee3f44bd 2 years ago 204MB
1.2 构建镜像
删除下载的镜像
docker rmi [镜像ID]
删除vim下的文件
:!rm <文件名>
执行yum源更新命令:
yum clean all
yum makecache
yum update
卸载安装包
rpm -e 包名
查看包版本
rpm -q 包名
1.2.1 编写Dockerfile(bug改正版)
注:文件内大多错误都是源的问题,换个源试试
# Base images 基础镜像
# FROM centos:7.6.1810
FROM centos:7.9.2009
#MAINTAINER 维护者信息
MAINTAINER wupeiqi@live.com
# 替换 YUM 源为阿里云镜像
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo && \
sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo
# 更新软件包索引及安装 gcc
RUN yum -y update && yum -y install gcc
# Python依赖
RUN yum install -y zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel openssl openssl-devel xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel mysql-devel python-devel libffi-devel
# wget
RUN yum install wget -y
# 目录
RUN mkdir -p /data/
WORKDIR /data/
# SQLite升级
RUN wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz --no-check-certificate
RUN tar -zxvf sqlite-autoconf-3420000.tar.gz
WORKDIR /data/sqlite-autoconf-3420000
RUN ./configure
RUN make && make install
ENV LD_LIBRARY_PATH="/usr/local/lib"
# Python3.9环境
WORKDIR /data/
RUN wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
RUN tar -xvf Python-3.9.5.tgz
WORKDIR /data/Python-3.9.5/
RUN ./configure
RUN make && make install
RUN pip3.9 config set global.index-url https://pypi.douban.com/simple/
# git
RUN yum install git -y
RUN git config --global user.name "武沛齐"
RUN git config --global user.email "wupeiqi@live.com"
# git拉代码
WORKDIR /data/
RUN git clone https://gitee.com/wupeiqi/blog.git
# 虚拟环境
RUN pip3.9 install --upgrade pip
RUN pip3.9 install virtualenv --index-url https://pypi.org/simple
RUN virtualenv /envs/dj --python=python3.9
RUN /envs/dj/bin/pip3.9 install django==3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 运行项目
WORKDIR /data/blog
CMD ["/envs/dj/bin/python","manage.py","runserver","0.0.0.0:9000"]
创建文件夹以及Dockerfile
[robot2@localhost ~]$ cd /opt/
[robot2@localhost opt]$ ls
containerd dd rh
[robot2@localhost opt]$ mkdir ddd
mkdir: 无法创建目录"ddd": 权限不够
[robot2@localhost opt]$ su - root
密码:
上一次登录:四 7月 18 21:03:34 CST 2024pts/1 上
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir ddd
[root@localhost opt]# ls
containerd dd ddd rh
[root@localhost opt]# cd ddd/
[root@localhost ddd]# ls
[root@localhost ddd]# vim Dockerfile
[root@localhost ddd]# ls
Dockerfile
[root@localhost ddd]#
1.2.2 构建镜像
docker build -t wupeiqi/jd:2.0 . -f Dockerfile
1.2.3 启动容器
# 测试启动
docker run -p 80:9000 wupeiqi/jd:2.0
# 端口占用
[root@localhost ddd]# docker run -p 80:9000 wupeiqi/jd:2.0
docker: Error response from daemon: driver failed programming external connectivity on endpoint jolly_carver (bad5ca3664d7893b7c3e9d0c91df0c40d614ce7b7d4c347009f5557650f8bb41): Bind for 0.0.0.0:80 failed: port is already allocated.
[root@localhost ddd]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0f309d8ecee7 wupeiqi/jd:1.0 "/envs/dj/bin/python…" 3 days ago Up 3 days 0.0.0.0:80->9000/tcp, :::80->9000/tcp cool_leakey
[root@localhost ddd]# docker stop 0f3
0f3
# 正经启动
[root@localhost ddd]# docker run -d -p 80:9000 wupeiqi/jd:2.0
65962e087c724fb186a71707450ec463769802379dfeb0bd6b61e0d220c75f6d
[root@localhost ddd]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65962e087c72 wupeiqi/jd:2.0 "/envs/dj/bin/python…" 2 minutes ago Up 2 minutes 0.0.0.0:80->9000/tcp, :::80->9000/tcp loving_elgamal
[root@localhost ddd]# docker stop 659
659
[root@localhost ddd]# docker rm 659
659
[root@localhost ddd]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ddd]#
1.3 制作和导出
后期在项目部署时,会经常使用:CentOS + Python3.9.5 的环境,为了避免每次都编译生成,我们可以自己制作一个【CentOS + Python3.9.5 】的基础镜像,便于后续使用。
1.3.1 编写Dockerfile
# Base images 基础镜像
FROM centos:7.6.1810
# FROM centos:7.9.2009
#MAINTAINER 维护者信息
MAINTAINER wupeiqi@live.com
# 替换 YUM 源为阿里云镜像
RUN sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo && \
sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-Base.repo
# 更新软件包索引及安装 gcc
RUN yum -y update && yum -y install gcc
# Python依赖
RUN yum install -y zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel openssl openssl-devel xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel mysql-devel python-devel libffi-devel
# wget
RUN yum install wget -y
# 目录
RUN mkdir -p /data/
WORKDIR /data/
# SQLite升级
RUN wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz --no-check-certificate
RUN tar -zxvf sqlite-autoconf-3420000.tar.gz
WORKDIR /data/sqlite-autoconf-3420000
RUN ./configure
RUN make && make install
ENV LD_LIBRARY_PATH="/usr/local/lib"
# Python3.9环境
WORKDIR /data/
RUN wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
RUN tar -xvf Python-3.9.5.tgz
WORKDIR /data/Python-3.9.5/
RUN ./configure
RUN make && make install
RUN rm -rf /data/Python-3.9.5
RUN pip3.9 config set global.index-url https://pypi.douban.com/simple/
1.3.2 构建镜像
docker build -t robot1207/centos76py39:v1 . -f Dockerfile
1.3.3 本地导出和导入
构建好的镜像可以打包至本地压缩包,可以发送给其他人导入使用。
-
导出
[root@localhost xx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wupeiqi/centos76py39 v1 f4b22e618359 7 minutes ago 1.76GB wupeiqi/jd 2.0 8c243e881331 2 hours ago 2.31GB wupeiqi/jd 1.0 50ed80baaf47 4 days ago 2.31GB ubuntu latest ba6acccedd29 2 years ago 72.8MB centos 7.9.2009 eeb6ee3f44bd 2 years ago 204MB [root@localhost xx]# docker save -o centos76py39.tgz wupeiqi/centos76py39 [root@localhost xx]# ls centos76py39.tgz Dockerfile Dockertfile -
2.查看当前正在运行的容器docker ps 已退出的容器,可以使用如下命令进行查看: docker ps -a 删除docker中的容器可以使用如下命令: docker rm 容器id -
导入
[root@192 data]# 删除镜像,一定要提前把容器删除(ps -a) [root@192 data]# docker rmi f16 [root@192 data]# [root@192 data]# [root@192 data]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 18.04 5a214d77f5d7 20 months ago 63.1MB centos 7.6.1810 f1cb7c7d58b7 4 years ago 202MB [root@192 data]# [root@192 data]# [root@localhost xx]# docker image load -i centos76py39.tgz Loaded image: wupeiqi/centos76py39:1.0 [root@192 data]# [root@192 data]# [root@192 data]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wupeiqi/centos76py39 1.0 f16ab6d9d538 3 minutes ago 1.53GB ubuntu 18.04 5a214d77f5d7 20 months ago 63.1MB centos 7.6.1810 f1cb7c7d58b7 4 years ago 202MB
1.3.4 发布和下载
-
注册hub.docker.com账号
-
在docker中登录 & 上传镜像
-
[root@192 data]# [root@192 data]# docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: robot1207 Password: Login Succeeded [root@localhost xx]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE robot1207/wupeiqi/centos76py39 v1 f4b22e618359 2 hours ago 1.76GB wupeiqi/centos76py39 v1 f4b22e618359 2 hours ago 1.76GB ubuntu latest ba6acccedd29 2 years ago 72.8MB centos 7.9.2009 eeb6ee3f44bd 2 years ago 204MB [root@localhost xx]# docker tag f4b22e618359 robot1207/centos76py39:v1 [root@localhost xx]# docker push robot1207/centos76py39:v1 The push refers to repository [docker.io/robot1207/centos76py39] 5f70bf18a086: Pushing 1.024kB 2b7dfb19a0a5: Pushing [==================================================>] 6.144kB 9aecf59c9c2e: Pushing 2.56kB 23867b6b8007: Pushing [==================================================>] 373.6MB 36b8f78de47b: Pushing [==================================================>] 946.7kB 34f79d4a15ba: Waiting -
报错如下:
denied: requested access to the resource is denied,
正确引用
-
docker tag 镜像id 用户名/版本号 docker push 用户名/版本号 -
后续使用
docker pull wupeiqi/centos76py39:1.0
二、阿里云
g123456789
-
操作指南
-
制品描述
2.1 登录阿里云Docker Registry
$ docker login --username=robot_code registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 2 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:[镜像版本号]
2.3 将镜像推送到Registry
$ docker login --username=robot_code registry.cn-hangzhou.aliyuncs.com$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:[镜像版本号] $ docker push registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:[镜像版本号]
上传成功
Login Succeeded [root@localhost xx]# docker tag f4b22e618359 registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:v1 [root@localhost xx]# docker push registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:v1 The push refers to repository [registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39] 5f70bf18a086: Pushed 2b7dfb19a0a5: Pushed 9aecf59c9c2e: Pushed 23867b6b8007: Pushed 36b8f78de47b: Pushed 34f79d4a15ba: Pushed 8e9c884553de: Pushed bbcd778faeef: Pushed 9d51e9b6ced0: Pushed ae044b5fa76e: Pushed 3b83ab2e0a44: Pushed 6779582afa80: Pushed 81669b9013ed: Pushed 685dca010144: Pushed a49033c7ac5d: Pushed c48ff904dcf5: Pushed 89169d87dbe2: Pushed v1: digest: sha256:370b2543f1f1cadd68a42a826717babdb6b2b3358aa9c76df75941ea1267e09f size: 4714 [root@localhost xx]#
三 实践:django+uwsgi+nginx
在centos7.6服务器上,部署:django3.2 + uwsgi + nginx 环境 。
3.1 下载基础镜像
[root@localhost xx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos 7.9.2009 eeb6ee3f44bd 2 years ago 204MB
[root@localhost xx]# docker pull registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:v1
v1: Pulling from robot1207/centos76py39
tatus: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:v1
registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:v1
[root@localhost xx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39 v1 f4b22e618359 3 hours ago 1.76GB
ubuntu latest ba6acccedd29 2 years ago 72.8MB
centos 7.9.2009 eeb6ee3f44bd 2 years ago 204MB
3.2 构建镜像
3.2.1 代码
https://gitee.com/wupeiqi/blog.git
blog.conf
worker_processes 2; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; upstream django { server 127.0.0.1:8001; } server { listen 80; listen [::]:80; # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; location /static { alias /data/allstatic; } location /media { alias /data/media; } location / { uwsgi_pass django; include uwsgi_params; } } }
run.sh
/envs/blog/bin/uwsgi --ini ./uwsgi.ini & >/dev/null nginx -c /etc/nginx/myblog.conf -g 'daemon off;'
uwsgi.ini
[uwsgi] socket = 127.0.0.1:8001 chdir = /data/blog/ wsgi-file = blog/wsgi.py processes = 2 virtualenv = /envs/blog/
3.2.2 编写Dockerfile
#Base images 基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/robot1207/centos76py39:v1
#MAINTAINER 维护者信息
MAINTAINER wupeiqi@live.com
# git
RUN yum install git -y
RUN git config --global user.name "武沛齐"
RUN git config --global user.email "wupeiqi@live.com"
# git拉代码 /data/blog
WORKDIR /data/
RUN git clone https://gitee.com/wupeiqi/blog.git
# 虚拟环境
WORKDIR /data/blog/
RUN pip3.9 install --upgrade pip
RUN pip3.9 install virtualenv --index-url https://pypi.org/simple
RUN virtualenv /envs/blog --python=python3.9
RUN /envs/blog/bin/pip3.9 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 收集静态资源 /data/allstatic/
WORKDIR /data/blog/
RUN /envs/blog/bin/python manage.py collectstatic
# 安装uwsgi
RUN /envs/blog/bin/pip3.9 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装nginx
WORKDIR /data/blog/
RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx
# 易错点
RUN cp /data/blog/blog.conf /etc/nginx/myblog.conf
# 运行项目
WORKDIR /data/blog
# CMD ["/envs/blog/bin/uwsgi","--ini","uwsgi.ini"]
# CMD ["nginx","-c","/etc/nginx/myblog.conf","-g","daemon off;"]
CMD ["/bin/sh","run.sh"]
3.2.3 构建镜像
docker build -t wupeiqi/dj3 . -f Dockerfile1 --no-cache
3.2.4 启动容器
# 测试启动
docker run -p 80:80 --rm web
# 正经启动
docker run -d -p 80:80 wupeiqi/dj3:latest

[root@localhost xx]# docker run -d -p 80:80 wupeiqi/dj3:latest
d1a2467ee33b80131048f5a62b903f98d186302cfcd3e6ca21f26f85df12f911
[root@localhost xx]# docker exec -ti d1a bash
[root@d1a2467ee33b blog]# pwd
/data/blog
[root@d1a2467ee33b blog]# cd ..
[root@d1a2467ee33b data]# ls
Python-3.9.5 Python-3.9.5.tgz allstatic blog sqlite-autoconf-3420000 sqlite-autoconf-3420000.tar.gz
[root@d1a2467ee33b data]# cd allstatic/
[root@d1a2467ee33b allstatic]# ls
admin v1.png
[root@d1a2467ee33b allstatic]#
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://blog.grover.top/2024/08/23/django%e5%ae%9e%e8%b7%b5/
共有 0 条评论