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

 更新时间:2024年04月01日 09:53:01   作者:唐僧骑白马  
Django是一个开源的Web应用框架,使用Python语言编写,主要用于搭建Web项目,本教程介绍如何在centos7下基于nginx+uwsgi部署Django项目的实现,感兴趣的可以了解一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一:基础环境介绍:

  • 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等

到此这篇关于centos7下基于nginx+uwsgi部署Django项目的实现的文章就介绍到这了,更多相关nginx uwsgi部署Django内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Nginx服务器中HTTP 301跳转到带www的域名的方法

    Nginx服务器中HTTP 301跳转到带www的域名的方法

    这篇文章主要介绍了Nginx服务器中HTTP 301跳转到带www的域名的方法,包括从HTTPS 301提示跳转等rewrite相关的方法,需要的朋友可以参考下
    2015-07-07
  • Nginx配置ssl证书(https)的全过程

    Nginx配置ssl证书(https)的全过程

    这篇文章主要介绍了Nginx配置ssl证书(https)的过程,在文中大家需要特别注意,如果有防火墙的话,记得开通443端口,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • 配置nginx保证frps服务器与web共用80端口的方法

    配置nginx保证frps服务器与web共用80端口的方法

    这篇文章主要介绍了frps服务端与nginx可共用80端口的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx0.5.33+PHP5.2.5(FastCGI)搭建胜过Apache10倍的Web服务器

    Nginx0.5.33+PHP5.2.5(FastCGI)搭建胜过Apache10倍的Web服务器

    Nginx 0.5.31 + PHP 5.2.4(FastCGI)搭建可承受3万以上并发连接数,胜过Apache 10倍的Web服务器的第2版,经过了多台服务器的测试。
    2009-10-10
  • 使用ngxtop实时监控Nginx日志文件的示例代码

    使用ngxtop实时监控Nginx日志文件的示例代码

    在Nginx日志分析领域,ngxtop是一款强大的实时监控工具,它能够即时解析Nginx的访问日志文件,提供直观、可定制的实时统计信息,帮助管理员更好地了解服务器的运行状况和Web流量,本文给大家介绍使用ngxtop实时监控Nginx日志文件的示例代码,需要的朋友可以参考下
    2024-01-01
  • nginx配置域名访问时域名后出现两个斜杠//的解决方法

    nginx配置域名访问时域名后出现两个斜杠//的解决方法

    最近这两天重新写了一下我的个人网站,在阿里云新买了一台服务器,配置好以后出现了一个问题,就是输入域名后域名地址会自动在后面追加两个斜杆,需要的朋友可以参考下
    2020-07-07
  • Nginx服务器安装及配置文件与使用详解

    Nginx服务器安装及配置文件与使用详解

    这篇文章主要介绍了Nginx服务器安装及配置文件与使用详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • nginx网站服务如何配置防盗链(推荐)

    nginx网站服务如何配置防盗链(推荐)

    这篇文章主要介绍了nginx网站服务如何配置防盗链,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Nginx已编译的nginx-添加新模块

    Nginx已编译的nginx-添加新模块

    这篇文章主要介绍了Nginx已编译的nginx-添加新模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • HipChat上传文件报未知错误的原因分析及解决方案

    HipChat上传文件报未知错误的原因分析及解决方案

    HipChat的功能类似于Campfire、Sazneo等在线协同工具,并且和Yammer以及Salesforce的Chatter等企业社交平台有一定相似之处。你可以为单个项目或者小组搭建自有的聊天室,也可以很方便的发起一对一聊天
    2016-01-01

最新评论

?


http://www.vxiaotou.com