Django + Nginx + uwsgi 高性能生产环境搭建 Python

本文详细介绍了如何在Linux系统中使用Nginx、uWSGI和Django搭建高性能的生产环境。通过一步步的操作指南,包括安装依赖、创建项目、配置uWSGI和Nginx,最终实现API接口和静态文件的访问。文章适用于Python后端开发者和Linux系统管理员。

前言: django在linux环境下的生产环境布置比较复杂,下面整理如下步骤,希望对小伙伴们有所帮助。以下为描述方便没有歧义,文件路径尽量使用绝对路径描述。具体文件操作可以cd到指定目录下操作。

目标: 在liunx系统中 使用  nginx + uwsgi +django 搭建生产环境。生成两个测试链接。一个api,一个静态文件链接。

版本信息: nginx 1.14.1 django 3.2.11 uwsgi  2.0.20 python 3.6.8  liunx系统8.0

准备:重装系统,使用putty登录,腾讯云服务器需要重置ssh密码,确保对应防火墙已经打开。我用的是8000端口

1  查看gcc版本: gcc -v
    * 没有gcc的系统需要安装gcc编译器

2  安装 django,uwsgi
    yum install python3-devel
    pip3 install django==3.2.11
    pip3 install uwsgi==2.0.20

3  查看是否安装成功:
    pip3 freeze|grep -i 'uwsgi'
    pip3 freeze|grep -i 'Django'

4   在/创建一个python项: django-admin startproject myserver

5   修改djannago设置:
    编辑文件 /myserver/myserver/settings.py:
        ALLLOED_HOSTS= []  # 列表加入云服务器公网ip
        LANGUAGE_CODE = ''zh-Hans"
        TIME__ZONE = 'Asia/Shanghai'
        STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)
        STATIC_ROOT = '/myserver/static'

5   创建静态文件目录: mkdir /myserver/static
6   在django项目中增添 测试用路由和静态文件:
    新建文件 /myserver/static/1.txt 编辑内容:我是来测试的
    修改文件 /myserver/myserver/urls.py: 
        urlpatterns = [
            path('test/', views.test)
        ]    
    新建文件 /myserver/myserver/views:
        from django.http import HttpResponse
        def test():
                return HttpResponse(' 您已经成功访问到此 测试接口')

6   检查django项目是否能正常运行: 
    cd /myserver
    python3 manage.py runserver 0.0.0.0:8000 
    测试接口 http://ip:8000/test  http://ip:8000/static/1.txt

7  在目录 /myserver/myserer 下 新建文件 uwsgi.ini  并编辑如下:
    [uwsgi]
    http=0.0.0.0:8000
    chdir=/myserver/
    wsgi-file=/myserver/myserver/wsgi.py
    process=2
    threads=2
    pidfile=uwsgi.pid
    daemonize=uwsgi.log
    master=True

9   使用uwsgi启动django: uwsgi --ini uwsgi.ini  
    ps aux|grep 'uwsgi'  检查是否启动成功
    测试接口 http://ip:8000/test  http://ip:8000/static/1.txt 

10  安装nginx:yum install nginx
    查看nginx版本:nginx -v 

11  配置Nginx:
    编辑文件: /etc/nginx/nginx.conf
    在 'server' 里面的 第一个localion 里面 添加:
        uwsgi_pass 127.0.0.1:8000;
        include /etc/nginx/uwsgi_params;
                 增加一个location:location /static/ {
                                      root /myserver;
                                   }
 *默认安装后自动启动。命令行输入nginx 则启动nginx服务

12 设置nginx反向代理:
12.1 修改文件 /myserver/myserer/uwsgi.ini:
    http=0.0.0.0:8000 改成  socket=127.0.0.1:8000
12.2 重启 uwsgi:
    uwsgi --stop uwsgi.pid
    *   ps aux|grep 'uwsgi'  检查 是否停止成功。
    *   如果进程仍然在说明没有stop成功。使用kill -9 进程id关闭进程。
    uwsgi --ini uwsgi.ini  
    *    ps aux|grep 'uwsgi'  检查 是否启动成功。
    *    如果有ini进程说明启动成功。没有成功检查配置文件,查看启动日志。

13 测试接口:  http://ip:8000/test    http://ip:8000/static/1.txt  

14 接口正常说明生成环境布置成功:修改 settings.py 关闭debug (然后需要重启 uwsgi)。

15 后续维护:
       修改django和uwsgi设置,需要重启uwsgi服务。
       修改nginx配置后需要 重启nginx服务。

谢谢观看,欢迎有兴趣的小伙伴一起交流学习。


           

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值