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 
安装nginxcd /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|grep uwsgi # 用kill方法把uwsgi进程杀死,然后启动uwsgi
killall -9 uwsgi# Nginx平滑重启方法
/usr/local/nginx/sbin/nginx -s reload

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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入学习SpringCloud Alibaba微服务架构,揭秘Nacos、Sentinel、Seata等核心技术,助力构建高效系统!

课程链接: 链接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwdj6ej 提取码: j6ej 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍: 📚【第01阶段】课程简介:全…

Android FrameWork 层 Handler源码解析

Handler生产者-消费者模型 在android开发中,经常会在子线程中进行一些耗时操作,当操作完毕后会通过handler发送一些数据给主线程,通知主线程做相应的操作。 其中:子线程、handler、主线程,其实构成了线程模型中经典的…

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA 在较低容量存储领域,EEPROM是常用的存储介质,可以通过直接或者文件操作方式进行读写。不同容量的EEPROM的地址对应位数不同,在发送字节的格式上有所区别。EEPROM是非快速访问存储&#xf…

vue2+Spring Boot2.7 大文件分片上传

之前我们文章 手把手带大家实现 vue2Spring Boot2.7 文件上传功能 将了上传文件 但如果文件很大 就不太好处理了 按正常情况甚至因为超量而报错 这里 我弄了个足够大的文件 我们先搭建 Spring Boot2.7 环境 首先 application.yml 代码编写如下 server:port: 80 upload:path:…

【佳佳怪文献分享】使用点云从半监督到全监督房间布局估计

标题:From Semi-supervised to Omni-supervised Room Layout Estimation Using Point Cloud 作者:Huan-ang Gao, Beiwen Tian, Pengfei Li, Xiaoxue Chen, Hao Zhao, Guyue Zhou , Yurong Chen and Hongbin Zha 来源:2023 IEEE Internation…

根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)

目录 一、数据库设计 1.1、数据库选择 1.2、环境配置 1.3、建库建表接口实现 1.4、封装数据库操作 1.5、针对 DataBaseManager 进行单元测试 一、数据库设计 1.1、数据库选择 MySQL 是我们最熟悉的数据库,但是这里我们选择使用 SQLite,原因如下&am…

手机出现 不读卡 / 无信号时应该怎么办?

当手机屏幕亮起,一般在屏幕最上方都会有代表手机卡状态的显示,其中网络信号和读卡状态的标识,依旧有很多人分不太清,更不清楚改怎么办了。 1、当我们的手机里有两张卡时,则会有两个信号显示 2、信号状态一般是由短到…

CSS自己实现一个步骤条

前言 步骤条是一种用于引导用户按照特定流程完成任务的导航条,在各种分步表单交互场景中广泛应用。例如:在HIS系统-门诊医生站中的接诊场景中,我们就可以使用步骤条来实现。她的执行步骤分别是:门诊病历>遗嘱录入>完成接诊…

ArcGIS Pro基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例全流程科研能力提升

目录 第一章 入门篇 GIS理论及ArcGIS Pro基础 第二章 基础篇 ArcGIS数据管理与转换 第三章 数据编辑与查询、拓扑检查 第四章 制图篇 地图符号与版面设计 第五章 空间分析篇 ArcGIS矢量空间分析及应用 第六章 ArcGIS栅格空间分析及应用 第七章 影像篇 遥感影像处理 第八…

Python random模块用法整理

随机数在计算机科学领域扮演着重要的角色,用于模拟真实世界的随机性、数据生成、密码学等多个领域。Python 中的 random 模块提供了丰富的随机数生成功能,本文整理了 random 模块的使用。 文章目录 Python random 模块注意事项Python random 模块的内置…

30行JS代码带你手写自动回复语音聊天机器人

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 前言 现如今生活中到处都是聊天机器人的身影,聊天机器人不仅仅能减少人工的聊天压力,而且十分的可爱有趣,安卓系统的小AI&#xf…

Springboot整合Mybatis调用Oracle存储过程

1、配置说明 Oracel11g+springboot2.7.14+mybatis3.5.13 目标:springboot整合mybatis访问oracle中的存储过程,存储过程返回游标信息。 mybatis调用oracle中的存储过程方式 2、工程结构 3、具体实现 3.1、在Oracle中创建测试数据库表 具体数据可自行添加 create table s…

Lodash——使用与实例

1. 简介 Lodash是一个一致性、模块化、高性能的JavaScript实用库。Lodash通过降低array、number、objects、string等等的使用难度从而让JavaScript变得简单。Lodash的模块方法,非常适用于: 遍历array、object 和 string对值进行操作和检测创建符合功能的…

字符个数统计(同类型只统计一次)

思路:因为题目圈定出现的字符都是 ascii 值小于等于127的字符,因此只需要定义一个标记数组大小为128 ,然后将字符作为数组下标在数组中进行标记,若数组中没有标记过表示第一次出现,进行计数,否则表示重复字…

简单线性回归:预测事物间简单关系的利器

文章目录 🍀简介🍀什么是简单线性回归?🍀简单线性回归的应用场景使用步骤:注意事项: 🍀代码演示🍀结论 🍀简介 在数据科学领域,线性回归是一种基本而强大的统…

Kali Linux助您网络安全攻防实战

Kali Linux:黑客与防御者的神器 Kali Linux是一款专为网络安全测试和攻防实践而设计的操作系统。它汇集了大量的安全工具,可以用于渗透测试、漏洞扫描、密码破解等任务,不仅为黑客提供了强大的攻击能力,也为安全防御者提供了测试和…

Kafka 入门到起飞 - 什么是 HW 和 LEO?何时更新HW和LEO呢?

上文我们已经学到, 一个Topic(主题)会有多个Partition(分区)为了保证高可用,每个分区有多个Replication(副本)副本分为Leader 和 Follower 两个角色,Follower 从Leader同…

爬虫逆向实战(十八)--某得科技登录

一、数据接口分析 主页地址:某得科技 1、抓包 通过抓包可以发现数据接口是AjaxLogin 2、判断是否有加密参数 请求参数是否加密? 查看“载荷”模块可以发现有一个password加密参数和一个__RequestVerificationToken 请求头是否加密? 无…

【Linux】Reactor模式

Reactor模式 Reactor模式的定义 Reactor反应器模式,也叫做分发者模式或通知者模式,是一种将就绪事件派发给对应服务处理程序的事件设计模式。 Reactor模式的角色构成 Reactor主要由以下五个角色构成: reactor模式的角色 角色解释Handle(句…

保姆级别讲解Python数据处理,你绝对能会

名字:阿玥的小东东 学习:Python、C/C 主页链接:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 1. 文件读取 2. 数据处理 3. 处理结果输出 总的来说 为了咱们让程序跑起来,我们需…