一、安装uwsgi

# 安装环境
pip install uwsgi  -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

测试是否安装成功

# 创建文件
vi test.py

# 文件内容

#!/usr/bin/env python3
# coding:utf-8

import sys
 
def application(env,start_response):
    start_response('200 OK',[('Content-Type','text/html')])
    return 'Welcome to use uwsgi!!!'.encode()

运行:

目录/uwsgi --http 0.0.0.0:8997 --wsgi-f 目录/test.py

开放端口

sudo ufw allow 8997   //开放端口
sudo ufw reload           //重启防火墙,是配置生效
 
 
安装  firewalld 
apt install firewalld
 
# 开放8997端口
firewall-cmd --zone=public --add-port=8997/tcp --permanent
 
# 删除端口
firewall-cmd --zone=public --remove-port=8997/tcp
 
# 重启防火墙
firewall-cmd --reload
 
# 查看防火墙状态
 
#切换用户
sudo su root
 
#查看tcp
sudo netstat -tlpn

在浏览器中,访问: http://IP:8997 ,注意修改对应的 ip 地址

 运行访问结果


二、配置django启动的  uwsgi.ini文件

创建文件 uwsgi.ini  uwsgi 为文件名可以随便取

vi uwsgi.ini
[uwsgi]
# new_mailtrack  --》这是我的项目目录
socket = 127.0.0.1:8081
# 的项目目录 
chdir =  /home/yjc/Python/pyworke/new_mailtrack
# home = /home/mysite_env # 如果有虚拟环境,则需要指定虚拟环境目录; 没有则注释掉
module = new_mailtrack.wsgi:application
processes = 4
threads = 2

# 最大超时时间
harakiri = 60
# 最大请求数,到了后就会自动重启
max-requests = 5000
#   在失去权限前,将pid写到指定的pidfile文件中
# pidfile = /home/projectName/master.pid
#   使进程在后台运行,并将日志打到指定的日志文件或者udp服务器, 不配置日志就是前台运行,部署测试时可以先注释掉
# daemonize = /data/log/uwsgi/uwsgi.log 
# chmod-socket    = 664  # 如果没有权限访问uWSGI的socket,这里可以设置权限
# vacuum = True  
#指明你的虚拟解释器的第一层路径
# home = /home/yjc/Python/new_mailtrack_venv
#如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议
#http = 0.0.0.0:8082
#在退出uwsgi环境后,清空环境变量
vacuum = true
# 后台启动
#daemonize = yes
master = true
               

完整版

[uwsgi]
# 设置uwsgi的socket地址为本地IP地址(127.0.0.1)和端口号(8000)。
socket=127.0.0.1:8000
# 设置socket超时时间为10秒。
socket-timeout = 30
# 设置POST请求缓冲区大小为8192字节
post-buffering = 8192
# 设置POST请求缓冲区总大小为65536字节。
post-buffering-size = 65536
# 设置项目名称为 django_project。
project = django_project_demo1
# 设置项目主目录为/home/django_project。
home = /home/django_project
# 设置工作目录为项目主目录下的项目名称。
chdir = %(home)/%(project)
# 设置虚拟环境路径为项目主目录下的py3env文件夹。
virtualenv = %(home)/py3env
# 设置静态文件映射,将/static路径映射到项目主目录下的static文件夹。(可以不设置)
static-map = /static=%(chdir)/static
# 设置Django项目的WSGI文件路径为项目主目录下的wsgi.py文件。
wsgi-file = %(project)/wsgi.py
# 设置uwsgi为主进程。
master = true
# 设置uwsgi进程数为16个。
processes = 16
# 启用Thunder Lock,用于同步进程间的数据共享。
thunder-lock = true
# 设置uwsgi进程ID文件路径为项目主目录下的uwsgi.pid文件。
pidfile = %(chdir)/uwsgi.pid
# 设置uwsgi日志文件路径为项目主目录下的logs文件夹下的uwsgi.log文件。
daemonize = %(chdir)/logs/uwsgi.log
# 设置uwsgi日志文件最大大小为52428800字节。
log-maxsize = 52428800

 

               启动命令: uwsgi --ini  projectName_uwsgi.ini 

    停止命令: uwsgi --stop master.pid

    重启命令:uwsgi --reload master.pid


三、Nginx配置

nginx 我值做了简单的配置

server{
	listen 80 ;
	server_name localhost ;

	location / {
                 #代理8080端口
                  #proxy_pass   http://127.0.0.1:8080;
                  include uwsgi_params;
                 uwsgi_pass 127.0.0.1:8081;
	       }
           #静态文件目录  python manage.py collectstatic 收集的静态文件
           location /static/ {
                    autoindex on;
                   alias  /static;
          }

}

 最后启动项目:uwsgi --ini  uwsgi.ini

安装完毕后,可以使用以下命令关闭 uwsgi 进程

killall -9 uwsgi


四、收寄静态文件

1,再settings.py 中配置收集静态文件的路径

STATIC_ROOT = os.path.join(BASE_DIR, 'static_all')  # 两种方式都可以 (django中推荐使用)
STATIC_ROOT = '/var/static' 

 2、执行命令

python manage.py collectstatic

3、urls.py配置

from django.views import static


urlpatterns = [
    # path('admin/', admin.site.urls),
    re_path(r'^static/(?P<path>.*)$',static.serve, {'document_root': settings.STATIC_ROOT }, name='static'),
]

参考:Python/WSGI应用快速入门 — uWSGI 2.0 文档 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐