uwsgi 部署 django 项目 笔记

一、安装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 文档 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于如何使用uWSGI部署Django项目的简单步骤: 1. 安装uWSGIDjango 首先,你需要安装uWSGIDjango。你可以使用pip安装这些软件包。在命令行中输入以下命令: ``` pip install uwsgi pip install django ``` 2. 创建Django项目 创建一个Django项目,并确保它能够在本地运行。 3. 创建uWSGI配置文件 创建一个名为uwsgi.ini的文件,该文件将包含uWSGI的配置信息。在这个文件中,你需要定义Django应用程序的位置、uWSGI服务器的配置和其他必要的配置。这是一个示例uwsgi.ini文件: ``` [uwsgi] project = myproject base_dir = /path/to/my/project chdir = %(base_dir)/%(project) module = %(project).wsgi:application home = /path/to/my/virtualenv processes = 4 threads = 2 socket = /tmp/%(project).sock chmod-socket = 664 vacuum = true ``` 在这个文件中,你需要将project和base_dir替换为你的项目名称和项目路径。你还需要将home设置为你的虚拟环境的路径,如果你没有使用虚拟环境,则可以将其删除。processes和threads指定了uWSGI服务器使用的进程和线程数。socket定义了uWSGI服务器的套接字位置。chmod-socket将套接字的访问权限设置为664,这样你的Web服务器可以访问它。vacuum=true将在uWSGI服务器停止时清除套接字文件。 4. 启动uWSGI服务器 运行以下命令启动uWSGI服务器: ``` uwsgi --ini /path/to/your/uwsgi.ini ``` 5. 配置Web服务器 最后,你需要将Web服务器配置为将请求转发到uWSGI服务器。这个过程取决于你使用的Web服务器。如果你使用Nginx,你可以使用以下示例配置文件: ``` server { listen 80; server_name example.com; location / { include uwsgi_params; uwsgi_pass unix:/tmp/myproject.sock; } } ``` 在这个文件中,你需要将server_name替换为你的域名。uwsgi_pass指定了请求应该转发到的uWSGI服务器套接字位置。 这就是使用uWSGI部署Django应用程序的基本步骤。希望这可以帮助你开始。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值