一、安装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'),
]