当前位置: 首页 > news >正文

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 

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

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

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

相关文章:

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 部署过程&…...

12 正则表达式 | HTTP协议相关介绍

文章目录 正则表达式re模块最基础操作(匹配开头)匹配单个字符匹配多个字符匹配开头结尾匹配分组对于group的理解r的作用re 模块高级用法compilesearchfindall易错点 sub直接替换函数替换 split 根据匹配进行切割字符串,并返回一个列表 python…...

【C语言】数组概述

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 🔥该篇将带你了解 一维数组,二维数组等相关知识。 目录: 📘前言:&#x1f…...

8. 实现业务功能--用户注册

目录 1. 顺序图 2. 参数要求 3. 接口规范 4. 创建扩展 Mapper.xml 5. 修改 DAO 6. 创建 Service 接口 7. 实现接口 8. 测试接口 9. 实现 Controller 9.1 密码加密处理 10. 实现前端界面 业务实现过程中主要的包和目录及主要功能: model 包:实体对象 d…...

深入浅出Pytorch函数——torch.nn.init.eye_

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

版本控制工具Git集成IDEA的学习笔记(第一篇Gitee)

目录 一、Gitee的使用 1、注册网站会员 2、用户中心 3、创建远程仓库 4、配置SSH免密登录 二、集成IDEA,Git项目搭建 1、本地仓库搭建 1)创建一个新项目 2)打开终端,在当前目录新建一个Git代码库 3)忽略文件 …...

【链表】 61. 旋转链表

61. 旋转链表 解题思路 首先计算出链表长度将链表长度进行取余遍历链表 对链表进行分割 得到两个子链表重新连接两个链表比如1 2 3 4 5 k 2 进行分割得到 1 2 3 和 4 5两个子链表 /*** Definition for singly-linked list.* public class ListNode {* int val;* Lis…...

深入浅出Pytorch函数——torch.nn.init.kaiming_uniform_

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

查询Oracle和MySQL数据库中当前所有连接信息

查询Oracle当前所有连接信息: SELECTs.sid AS 会话ID,s.serial# AS 序列号,s.username AS 用户名,s.osuser AS 操作系统用户,s.machine AS 客户端机器,s.program AS 客户端程序,s.status AS 会话状态,s.sql_id AS 正在执行的SQL_ID,t.sql_text AS 正在执行的SQL文本…...

Android glide框架及框架涉及到的设计模式

目录 原文链接Android glide框架 简单使用介绍Glide 框架整体结构设计Glide 框架的优点基本使用:Glide占位符 Android glide框架涉及到的设计模式 原文链接 Android glide框架 简单使用介绍 Glide:快速高效的Android图片加载库,可以自动加载…...

使用yolov5进行安全帽检测填坑指南

参考项目 c​​​​​​​​​​​​​​GitHub - PeterH0323/Smart_Construction: Base on YOLOv5 Head Person Helmet Detection on Construction Sites,基于目标检测工地安全帽和禁入危险区域识别系统,🚀😆附 YOLOv5 训练自己的…...

【BASH】回顾与知识点梳理(三十二)

【BASH】回顾与知识点梳理 三十二 三十二. SELinux 初探32.1 什么是 SELinux当初设计的目标:避免资源的误用传统的文件权限与账号关系:自主式访问控制, DAC以政策规则订定特定进程读取特定文件:委任式访问控制, MAC 32.2 SELinux 的运作模式安…...

vscode远程调试PHP代码

目录 一、准备工作 二、ssh连接和xdebug配置 1.ssh连接 2.xdebug配置 三、xdebug调试,访问 一、准备工作 1.安装vscode里面的两个扩展 2.安装对应PHP版本的xdebug 去xdebug官方,复制自己的phpinfo源码到方框里,再点击Analyse Xdebug: …...

flink1.17 实现 udf scalarFunctoin get_json_object 支持 非标准化json

特色 相比官方的json_value,该函数支持非标准化json,比如v是个object,但是非标准json会外套一层引号,内部有反引号. eg: {"kkkk2": "{\"kkkk1\":\"vvvvvvv\"}" } 支持value为 100L 这种java格式的bigint. {"k":999L…...

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)九:自定义组件封装下

一、本章内容 续上一张,本章实现一些自定义组件的封装,包括文件上传组件封装、级联选择组件封装、富文本组件封装等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 基于VUE3+Layui从头搭建通用后台管...

设计模式详解-装饰器模式

类型:结构型模式 实现原理:装饰器模式通过将对象包装在装饰器类中,并在保持类方法签名完整性的前提下,提供额外功能 作用:动态地给一个对象添加一些额外的职责。增加功能方面,装饰器模式比生成子类更灵活…...

Android5:活动生命周期

创建项目Stopwatch activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_w…...

第2章 数据结构和算法概述

2.3线性结构和非线性结构 数据结构包括: 线性结构和非线性结构 2.3.1线性结构 线性结构作为最常用的数据结构&#xff0c;其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构&#xff0c;即顺序存储结构(数组)和链式存储结构(链表)。顺序存储的线性表称…...

WPF国际化的实现方法(WpfExtensions.Xaml)

https://blog.csdn.net/eyupaopao/article/details/120090431 resx资源文件实现 resx资源文件&#xff0c;实现的过程比第一种复杂&#xff0c;但resx文件本身编辑比较简单&#xff0c;维护起来比较方便。需要用到的框架&#xff1a;WpfExtensions.Xaml 为每种语言添加.resx资…...

【Linux】—— 进程程序替换

目录 序言 &#xff08;一&#xff09;替换原理 1、进程角度——见见猪跑 1️⃣ 认识 execl 函数 2、程序角度——看图理解 &#xff08;二&#xff09;替换函数 1、命名理解 2、函数理解 1️⃣execlp 2️⃣execv 3️⃣execvp 4️⃣execle 5️⃣execve 6️⃣execve…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...