centos7下基于nginx+uwsgi部署Django项目

news2024/11/24 3:47:58

文章目录

        • 一:基础环境介绍:
        • 二:部署环境安装配置:
          • 1.基础依赖环境安装
          • 2.安装wegt,vim,unzip等必须命令
          • 3.安装python与pip(或者python多版本管理工具pyenv等)
          • 4.安装nginx
          • 5.安装uwsgi
        • 三:部署django项目:
          • 1.上传项目并安装项目模块并启动测试
          • 2.在项目里配置uwsgi.ini配置文件
          • 3.配置nginx
        • 四:备注
        • 五、部署报错:

一:基础环境介绍:

  • Centos:7.8(cat /etc/redhat-release查看版本号)
  • Python:3.9.5(python -V查看版本号)
  • Django:4.2(django-admin --version查看版本号)
  • Uwsgi:2.0.21(uwsgi --version查看版本号)
  • Nginx:1.20.1 (nginx -v查看版本号)
  • mysql-community-common-8.0(可自行安装)

二:部署环境安装配置:

1.基础依赖环境安装
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel 
ncurses-devel sqlite-devel readline-devel tk-devel
 gcc make gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2.安装wegt,vim,unzip等必须命令
yum -y install wget vim unzip
3.安装python与pip(或者python多版本管理工具pyenv等)
## 1.下载自己需要版本的python版本包
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
 
## 2.新建python3目录
mkdir /usr/local/python3
 
## 3.安装Python3压缩包,进入解压目录,指定安装目录,安装Python3
tar -xvf  Python-3.9.5.tar.xz
cd Python-3.9.5
./configure --prefix=/usr/local/python3
make && make install
 
## 4.安装Python3时,会自动安装pip,如果没有就手动安装
yum -y install python-pip
 
## 5.pip配置(更换pip的源)
(1)编辑pip.conf
[root@localhost ~]# cd ~ 
[root@localhost ~]# mkdir .pip 
[root@localhost ~]# vim pip.conf
 
 
 
[global] 
index-url = https://mirrors.aliyun.com/pypi/simple/ 
[install] 
trusted-host=mirrors.aliyun.com
 

 
(2) 安装依赖安装好pip
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum install python-pip
[root@localhost ~]# pip install --upgrade pip
 
## 6.升级下pip
pip install --upgrade pip
 
 
## 7.创建软链接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
 
 
## 输入python3测试是否安装成功
python -V
4.安装nginx
## 1.yum方式安装nginx
yum -y install nginx
 
## 2.查看nginx版本
nginx -v
 
## 3.启动nginx
systemctl status nginx  ## 查看nginx状态
 
systemctl start nginx   ## 开启nginx服务
 
systemctl stop nginx     ## 关闭nginx服务
5.安装uwsgi
## 1.安装uwsgi
pip3 install uwsgi
 
## 2.建立软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
 
## 3.查看uwsgi版本
uwsgi --version

三:部署django项目:

1.上传项目并安装项目模块并启动测试
## 1.pip导出项目依赖包
pip freeze > requirements.txt

## 2.上传文件到服务器
 
## 3.解压项目
unzaip tman.zip
 
## 4.pip安装项目依赖模块
pip3 install -r requirements.txt
 
## 5.通过python3 manage.py runserver运行一下项目,如果能正常启动则进行下一步,不能正常运行往上检查。
这里需要注意使用python3来执行manage.py,否则会出现报错情况!
2.在项目里配置uwsgi.ini配置文件

(1)在settings.py所在目录vim新文件项目名称.ini

在这里插入图片描述

(2)配置项目名称.ini文件

[uwsgi]
master=true
chdir=/var/tman
module=tman.wsgi
py-autoreload=1
lazy-apps=true  
socket=127.0.0.1:8000
processes=4
# pid文件,用于脚本启动,停止
pidfile=uwsgi.pid
buffer-size=32768
daemonize=uwsgi.log
log-maxsize = 5000000
vacuum = true
disable-logging = true

(3)检查settings.py配置并收集项目静态文件
一般都是这个配置,我的是基于vue的前后端分离项目:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'dist/static'),
]

STATIC_URL = 'static/'

url.py配置:

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/', include('tadmin.urls')),
    path('', TemplateView.as_view(template_name='index.html'))
]

非前后端分离项目可以使用如下命令收集静态文件:

python manage.py collectstatic

基于vue使用如下命令进行前端打包:

npm run build

(4)启动测试,并查看日志

## 在当前目录启动
uwsgi -i tman.ini
 
## 启动之后查看进程
ps -ef | grep uwsgi

在这里插入图片描述
查看进程
在这里插入图片描述
查看日志
在这里插入图片描述

3.配置nginx
vim /etc/nginx/nginx.conf

nginx.conf配置

 server {
        listen       80;
        listen       [::]:80;
        server_name 192.168.75.188;
        charset utf-8;

        location /static/ {
          alias /var/tman/dist/static/;
          index index.html index.htm;
        }
  
        location / {
          include uwsgi_params;
          uwsgi_pass 127.0.0.1:8000;
        }
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

(4)启动nginx

[root@localhost tman]# nginx -t 
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost tman]# nginx -s reload

(5)访问项目http://192.168.75.188/#/

在这里插入图片描述

四:备注

之后项目重启只需要重启uwsgi之后再重启nginx即可,切记正式环境要关掉django的debug模式,防止报错源码被看到。

## 项目重启
killall -9  uwsgi
uwsgi -i tman.ini
nginx -s reload

uwsgi操作

uwsgi --ini uwsgi.ini
# 重启uswgi
uwsgi --reload uwsgi.pid
# 停止uwsgi
uwsgi --stop uwsgi.pid

五、部署报错:

(1)pip3安装mysqlclient==2.1.1报错

/bin/sh: mysql_config: command not found
/bin/sh: mariadb_config: command not found
/bin/sh: mysql_config: command not found

解决办法:

yum -y  install mysql-devel
Error: MariaDB-compat conflicts with 1:mariadb-libs-5.5.68-1.el7.x86_64
Error: Package: 1:mariadb-devel-5.5.68-1.el7.x86_64 (base)
           Requires: mariadb-libs(x86-64) = 1:5.5.68-1.el7
           Installed: MariaDB-compat-10.4.25-1.el7.centos.x86_64 (@mariadb)
               mariadb-libs(x86-64) = 1:10.1.48-1.el7.centos
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

解决办法:

yum remove MariaDB-common

(2)open() "/root/tman/dist/static/js/vendor.652814051b5133caa1e9.js" failed (13: Permission denied)

原因,nginx目录权限问题,我将项目放在root下,导致nginx权限不足,解决办法,将项目移到其他目录,如/var等

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

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

相关文章

json和CMake简单入门

Json 介绍 Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成&#xff…

Binder基本知识

1:IPC 原理 从进程角度来看 IPC 机制 每个 Android 的进程,只能运行在自己进程所拥有的虚拟地址空间。对应一个4GB 的虚拟地址空间,其中 3GB 是用户空间,1GB 是内核空间,当然内核空间的大小是可以通过参数配置调整的…

网络安全之密码学

目录 密码学 定义 密码的分类 对称加密 非对称加密 对称算法与非对称算法的优缺点 最佳解决办法 --- 用非对称加密算法加密对称加密算法的密钥 非对称加密如何解决对称加密的困境 密钥传输风险 密码管理难 常见算法 对称算法 非对称算法 完整性与身份认证最佳解决…

优维低代码:定制构件的打包及部署

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 连载…

用Python写一个BMI计算代码

有粉丝问我怎么写一个BMI算法,安排 height float(input("请输入身高(米): ")) weight float(input("请输入体重(千克): ")) 计算BMI bmi weight / (height ** 2) 显示结果 print("您的…

MySQL8.0.32安装以及环境配置

文章目录一、安装MySQL二、错误集1. 如果操作失误,可以重新安装一、安装MySQL 下载MySQL的社区版的压缩包:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.32-winx64.zip 将压缩包解压到你要安装的目录中 将对应的安装路径添加到环境变量中…

Java面试核心知识点梳理(二)——Java集合

文章目录前言1. List1.1 ArrayList(数组)1.2 Vector(数组、线程安全)1.3 LinkedList(链表)2. Set2.1 HashSet(Hash表)2.2 TreeSet(二叉树)2.3 LinkHashSet&am…

3分钟通过日志定位bug,这个技能测试人必须会

♥ 前 言 软件开发中通过日志记录程序的运行情况是一个开发的好习惯,对于错误排查和系统运维都有很大帮助。 Python 标准库自带了强大的 logging 日志模块,在各种 python 模块中得到广泛应用。 一、简单使用 1. 入门小案例 import logging logging.ba…

国内Google翻译失效的解决方法(MAC/WIN)

Google宣布停止在中国大陆的翻译服务,原因是:使用率低??,这导致Chrome浏览器网页翻译失效。对于一些使用Chrome,经常鼠标下一秒就在大洋彼岸扒拉资料,且英语不太好的同学来说变得非常难受。为此…

【软考中级·网络工程师】校验码差错控制

差错控制🍉 无论通信系统如何可靠,都不能做到完美无缺。因此,必须考虑怎样发现和纠正信号传输重的差错。通信过程中出现的差错大致可以分为两类: 一类是由热噪声引起的随机错误;热噪声:一种由电子的热运动…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升

专题一 空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 ​ 专题二 ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化:地图符号…

无头盔PICO-unity开发日记3(UI按钮点击)

目录 1.UI界面加入组件 2.加入xr输入模块 3.设置光线投射遮罩 结果: 前提:做好一个ui界面 1.UI界面加入组件 画布加跟踪设备图形光线投射仪(tracked device graphic raycaster) 允许画布被追踪设备操纵 2.加入xr输入模块 sys…

C++ --模拟实现搜索二叉树

文章目录#搜索二叉树1. 搜索二叉树特点2. 操作分析2.0 结点结构2.1 插入2.2 升序查看2.3 查找2.4 删除2.5 前序拷贝构造3. 完整代码4. 时间复杂度分析5. 简单应用5.1 字典搜索5.2 统计次数#搜索二叉树 1. 搜索二叉树特点 若它的左子树不为空,则左子树上所有节点的…

Dockerfile及新型容器镜像构建技术

文章目录一、容器镜像分类1、操作系统类2、应用类二、容器镜像获取方法1、在dockerhub直接下载2、把操作系统中文件系统打包为容器镜像3、把正在运行的容器打包为容器镜像,即docker commit4、通过dockerfile实现容器镜像的自定义以及生成三、dockerfile1、dockerfil…

数据库管理系统PostgreSQL部署安装完整教程

PostgreSQL是一个开源的关系型数据库管理系统,它支持大量的数据类型和复杂的查询语言,可以用于各种应用程序。它是一个高性能的数据库,可以处理大量的数据,并且具有良好的可扩展性和可靠性。 目录 一.Linux系统安装PostgresSQL&a…

机器学习——线性模型之Softmax回归

问:Softmax回归模型是一种典型处理多分类任务的非线性分类模型 答:错误。Softmax回归是线性分类模型。实际上是逻辑回归的拓展,它将逻辑回归的二分类推广到了多分类,用逻辑回归的方法解决多分类问题。 线性模型——Softmax回归 …

Linux之基础IO

文章目录一.关于文件的共识二.复习C语言的文件操作1.打开文件2.向文件中写入数据3.向文件中追加数据三.有关文件的系统调用1.open(文件打开)2.write(向文件写入)3.read(读文件)四.文件描述符1.进程如何找到自己的文件2.为什么文件…

leetcode刷题(3)

各位朋友们大家好,今天是我leedcode刷题系列的第三篇,废话不多说,直接进入主题。 文章目录分割链表题目要求用例输入提示做题思路c语言代码实现Java代码实现相交链表题目要求用例输入提示做题思路c语言实现代码Java代码实现分割链表 leetcod…

KDSL-82轻型升流器

一、产品概述 KDSL-82 1000A大电流发生器是一种作为检验用的电流源,大电流试验器采用ARM芯片控制输出工艺和大容量的环形变压器,并且配有液晶屏显示的表计,同时显示一、二次电流、变比和秒表接点(或电位)的动作时间。外配铝合金机箱&#xff…

OceanMind海睿思受邀参加中小企业数字化转型发展论坛

近日,由江苏省企业信息化协会主办的中小企业数字化转型发展论坛于南京圆满结束。论坛重点邀请了南京市中小企业制造标杆、专精特新“小巨人”企业等相关信息化负责人和IT工作者共同探讨中小企业数字化转型的发展路径。 OceanMind海睿思作为南京地区大数据领域优秀代…