一、uwsgi安装测试

1、uwsgi安装

pip install uwsgi

# 查看uwsgi版本号
uwsgiversion

如果服务器安装anconda,有可能安装不上去,建议使用以下命令

conda install -c conda-forge uwsgi 

2、测试uwsgi

创建test.py文件,并写下以下内容

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]

通过uwsgi运行文件

uwsgi --http :8001 --wsgi-file test.py

二、 配置uwsgi

我们通过Django创建web项目时,在子目录web下已经帮我们生成的 wsgi.py文件
所以,我们需要创建web_uwsgi.ini配置文件即可

当然,uwsgi支持多种类型配置文件,如xmlini

此处,使用ini类型配置

在项目目录新建文件夹script, 在script 文件下新建uwsgi.ini文件

# 配置服务器监听ip端口,让uWSGI作为nginx支持服务器的话,设置socket就行;
# 如果要让uWSGI作为单独的web-server,用http
#http = 0.0.0.0:8004
socket = 192.168.106.112:8000
 
# 配置项目目录(此处设置为项目的根目录chdir = /home/x/20180523_nginx/
 
# 配置入口模块 (django的入口函数模块,即setting同级目录下的wsgi.py)
#wsgi-file = o1_app/wsgi.py
module = o1_app.wsgi
 
# 开启master, 将会多开一个管理进程, 管理其他服务进程
master = True

# 监听队伍最大长度默认128
listen=128
 
# 服务开启进程数量
processes = 8
 
# 以守护进程方式提供服, 输出信息将会打印logdaemonize = uwsgi.log
 
# 服务进程开启线程数量
threads = 4
 
# 退出时候清空环境变量
vacuum = true

# log, 可以控制是否前台运行
daemonize = /home/x/20180523_nginx/script/log_uwsgi.log
 
# 进程pid
pidfile = /home/x/20180523_nginx/script/uwsgi.pid

#修改python代码时,自动重启uwsgi服务
#py-autoreload = 1 

接下来切换到项目目录的script下,通过uwsgi命令读取myweb_uwsgi.ini文件启动项目

uwsgi --ini uwsgi.ini

运行成功后的截图如下, 注意查看uwsgi的启动信息,如果有错,就要检查配置文件参数是否设置有误

三、配置nginx

接下来要做的就是修改nginx.conf配置文件vi /usr/local/nginx/conf/nginx.conf添加新配置内容(在/var/log新建文件夹nginx存放日志文件)

参考篇文章nginx配置:

总结Nginx的安装、配置与设置开机自启

四、uwsgi开机自启

将uwsgi变成服务直接用systemctl进行管理。
创建service方法(如果没有system文件夹,先创建文件夹,否则vim报错

vim /usr/lib/systemd/system/uwsgi.service
[Unit]
Description=uwsgi-uwsgi-support
After=network.target
Before=nginx.service

[Service]
ExecStartPre=/bin/sleep 60
ExecStart=/usr/sbin/start_uwsgi.sh
ExecReload=/bin/kill -HUP ( ps -ep | grep uwsgi)
Type=forking

[Install]
WantedBy=multi-user.target

开机自启

systemctl enable uwsgi.service

 创建其中的shell脚本

vim /usr/sbin/start_uwsgi.sh
#!/bin/bash -e
###BEGIN INIT INFO
# Provides:          adbd
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description:
# Description:       Linux ADB
### END INIT INFO
uwsgi --ini /root/app/sport/script/uwsgi_sport.ini

脚本赋权

chmod +x /usr/sbin/start_uwsgi.sh

设置开机自启动

systemctl enable uwsgi.service

查看是否正确启动 systemctl listunit-files |grep uwsgi 看下如下图就成功启动

启动uwsgi:

systemctl start uwsgi.service

uwsgi常用命令

启动uWSGI服务器
$ uwsgi --ini uwsgi.ini

重启uWSGI服务器
$ sudo service uwsgi restart

查看所有uWSGI进程
$ ps aux | grep uwsgi

停止所有uWSGI进程
$ sudo pkill -f uwsgi -9

重启uwsgi服务
$ uwsgi --reload *.pid

停止uwsgi服务
$ uwsgi --stop *.pid

五、uwsgi listen配置

配置uwsgi.ini中的listen选项,需先增大该系统参数然后提高uwsgi的监听队列长度,原因是listen队列长度不能超过系统参数规定的最大连接

# 修改
sysctl -w net.core.somaxconn=32768
sysctl -w net.ipv4.tcp_max_syn_backlog=8192

# 查看是否修改成功
sysctl -a 

若在容器内部修改内核参数需先配置dockercompose.yml 否则可能会出现sysctl: setting keynet.core.somaxconn“: Readonly file system提示

# 增加
privileged: true

sysctl命令相关补充

作用:在运行时配置内核参数
常用:

# 写入配置
sysctl -w xxx=xxx

# 载入sysctl配置文件,若-p后未指定路径,则载入/etc/sysctl.conf
sysctl -p

原文地址:https://blog.csdn.net/xun527/article/details/131306654

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32042.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注