Django实践

Ryder 2024-8-23 25 8/23

Django实践

Django实践

一些关于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

image-20240724081531002

[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]#
- THE END -

Ryder

4月24日21:50

最后修改:2025年4月24日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论