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中访问 (本文使用的方法)

相关推荐
IC 见路不走1 小时前
LeetCode 第91题:解码方法
linux·运维·服务器
翻滚吧键盘1 小时前
查看linux中steam游戏的兼容性
linux·运维·游戏
小能喵1 小时前
Kali Linux Wifi 伪造热点
linux·安全·kali·kali linux
汀沿河2 小时前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly35002 小时前
centos7 ping127.0.0.1不通
linux·运维·服务器
华子w9089258592 小时前
基于 Python Django 和 Spark 的电力能耗数据分析系统设计与实现7000字论文实现
python·spark·django
小哥山水之间3 小时前
基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
linux
ldj20203 小时前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
翻滚吧键盘3 小时前
opensuse tumbleweed上安装显卡驱动
linux
cui_win4 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip