centos 7.9 部署django项目

1、部署框架

主要组件:nginx、uwsgi、django项目

访问页面流程:nginx---》uwsgi---》django---》uwsgi---》nginx

2、部署过程

操作系统:centos 7.9

配置信息:4核4G 50G

内网 eip :10.241.103.216

部署过程:

步骤 命令 备注
1、安装依赖包 yum update -y yum -y groupinstall "Development tools" yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
2、搭建python3和pip3环境 参考连接:https://www.cnblogs.com/minglee/p/9227191.html 以下安装步骤需要绑定公网eip
3、安装django项目依赖包 pip freeze > requirements.txt # 将当前项目依赖包导入到requirements.txt中 将django项目源码压缩上传到vm,并解压 pip3 install django -i Simple Index --trusted-host mirrors.aliyun.com pip3 install -r requirements.txt -i Simple Index --trusted-host mirrors.aliyun.com # 使用国内源 检查django项目是否可以正常启动 python3 manage.py runserver 若能正常启动,则进行下一步,不能运行的话,检查以上步骤是否有遗漏 # 多数报 缺失依赖包或者依赖包的版本不符合要求信息
4、安装并配置uwsgi pip3 install uwsgi -i Simple Index --trusted-host mirrors.aliyun.com 在项目根目录创建uwsgi.ini 文件 [uwsgi] #添加配置选择 socket=127.0.0.1:8997 #配置和nginx连接的socket连接 chdir=/root/mysite/ #配置项目路径,项目的所在目录 wsgi-file=/root/mysite/mysite/wsgi.py #配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录名 processes=4 #配置启动的进程数 threads=2 #配置每个进程的线程数 master=True #配置启动管理主进程 pidfile=uwsgi.pid #配置存放主进程的进程号文件 daemonize=uwsgi.log #配置dump日志记录 运行uwsgi服务 uwsgi --ini uwsgi.ini # 若显示 [uWSGI] getting INI configuration from uwsgi.ini 信息,则表示uwsgi服务运行成功
5、 安装并配置nginx 安装nginx cd /home/ wget http://nginx.org/download/nginx-1.13.7.tar.gz tar -zxvf nginx-1.13.7.tar.gz cd nginx-1.13.7/ ./configure make make install 配置nginx cd /usr/local/nginx/conf/ cp nginx.conf nginx.conf.bak vim nginx.conf # 清空原文件内容 nginx.conf文件添加内容 events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 8002; server_name 127.0.0.1:8002; #改为自己的域名,没域名修改为127.0.0.1:80 charset utf-8; access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样 uwsgi_param UWSGI_SCRIPT mysite.wsgi; #wsgi.py所在的目录名+.wsgi uwsgi_param UWSGI_CHDIR /root/mysite/; #项目路径 } location /static { alias /root/mysite/static/; #静态资源路径 } } } 检验配置文件是否有错误 cd /usr/local/nginx/sbin/ ./nginx -t # 若没错,则执行下一条命令 ./nginx
6、修改项目中setting.py文件 ALLOWED_HOSTS = ['*'] # 允许所有主机进行连接访问网站
7、依次启动相关服务 在项目根目录下,运行 django项目 python3 manage.py runserver 0.0.0.0:8000 # 与本地运行不同,新增0.0.0.0:8000 运行uwsgi 服务 uwsgi --ini uwsgi.ini 运行nginx服务 cd /usr/local/nginx/sbin ./nginx ``` # 查看Uwsgi进程 ps -ef

3、部署效果

浏览器输入 内网eip:8000/home/ 即可访问平台网页

4、部署中遇到的问题总结

1、运行django项目时,报 "django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher" 错误信息

参考链接:关于django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3错误的处理办法_AAquiloo的博客-CSDN博客

解决办法:使用第三方包运行SQLite

pip install pysqlite3

pip install pysqlite3-binary

vim /usr/local/python3/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py

#from sqlite3 import dbapi2 as Database #注释

from pysqlite3 import dbapi2 as Database #新加

2、运行django项目时,报 "urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with OpenSSL 1.0.2k-fips"

解决办法1: 降低urllib3包的版本 # 本文采用的方法

pip3 uninstall urllib3

pip3 install urllib3==1.26.6

解决办法2: 升级openSSL 版本

yum install openssl-devel # 经测试后,安装后 版本依然是1.0.2 ,没用

3、运行django项目时,报 "ModuleNotFoundError: No module named '_ctypes' 错误

解决办法:yum install libffi-devel

重新编译python3.8

4、部署django项目后,浏览器访问网址,提示:DISALLOWEDHOST AT / INVALID HTTP_HOST HEADER. YOU MAY NEED TO ADD TO ALLOWED_HOSTS

解决办法 :进入项目后,找到并编辑setting.py

ALLOWED_HOSTS = ['*']

5、部署django项目后,页面样式未生效,提示静态文件404 not found错误

参考链接:usgi+nginx部署Django样式丢失问题处理 - CodeAntenna

Django项目部署上线解决样式丢失的问题-ry-代码改变世界博客

原因说明:对于本地运行django,setting.py中debug默认为true, 静态文件则从static_dir中访问;部署上线后,一般设置debug=False,这是就是生产环境,静态文件不会从static_dir中访问了,而是从static_root 中访问;

备注信息:部署后,其实仍可使用debug为true,从static_dir中访问 (本文使用的方法)

相关推荐
飞Link9 分钟前
【Django】Django的静态文件相关配置与操作
后端·python·django
weixin_430750931 小时前
OpenMediaVault debian Linux安装配置企业私有网盘(三) 静态ip地址配置
linux·服务器·debian·nas·网络存储系统
403240731 小时前
[Jetson/Ubuntu 22.04] 解决挂载 exFAT 硬盘报错 “unknown filesystem type“ 及只读权限问题的终极指南
linux·运维·ubuntu
Source.Liu1 小时前
【沟通协作软件】使用 Rufus 制作 Ubuntu 启动盘的详细过程
linux·ubuntu
Love丶伊卡洛斯1 小时前
Ubuntu 部署 STUN服务端
linux·运维·ubuntu
梁洪飞2 小时前
通过链接文件和Start.S学习armv7
linux·arm开发·嵌入式硬件·学习·arm
DN金猿2 小时前
使用ubuntu安装nginx时报错
linux·nginx·ubuntu
小赵还有头发2 小时前
安装Ceres与glog
linux·学习·无人机·ceres·glog
负二代0.03 小时前
Linux下的网络管理
linux·网络
s_daqing3 小时前
ubuntu(arm)安装redis
linux·redis·ubuntu