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

一、uwsgi的安装与测试

1、uwsgi安装

pip install uwsgi

# 查看uwsgi版本号
uwsgi –version

如果服务器安装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的安装、配置与设置开机自启_第1张图片

二、 配置uwsgi

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

当然,uwsgi支持多种类型的配置文件,如xml,ini等

此处,使用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
 
# 以守护进程方式提供服, 输出信息将会打印到log中
daemonize = 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的启动信息,如果有错,就要检查配置文件的参数是否设置有误

总结uwsgi的安装、配置与设置开机自启_第2张图片

三、配置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 list-unit-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 

若在容器内部修改内核参数需先配置docker-compose.yml 否则可能会出现sysctl: setting key "net.core.somaxconn": Read-only file system 的提示

# 增加
privileged: true

sysctl命令相关补充

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

# 写入配置
sysctl -w xxx=xxx

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

你可能感兴趣的:(linux基础,Django框架,python,开发语言,uwsgi,Linux)