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

news2024/7/7 17:01:08

一、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

在我们通过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的启动信息,如果有错,就要检查配置文件的参数是否设置有误

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++基础(2)——函数高级和函数对象

前言 本文主要介绍了C中函数高级相关的内容 3.1:函数默认参数 在函数定义的时候可以给形参赋初值,如果函数在调用的时候有传入参数,就使用传入的参数,如果没有就用默认的。 注意事项 1:如果某个参数有了默认值&…

Scilab安装与入门

说明:Scilab主要是用于信号处理,我本次用它来进行滤波仿真 地址: Scilab 2023.1.0 | Scilab https://www.scilab.org/download/scilab-2023.1.0 下载好了,进行安装看看 下一步,接受许可协议 选择安装路径到D盘下了…

chatgpt赋能python:Python数值互换:让你的编程更加高效

Python数值互换:让你的编程更加高效 Python是一种高级编程语言,其灵活性和易于学习的特点使其在科学计算、数据分析和人工智能等领域变得非常流行。作为Python的用户,很多时候你可能需要将数值类型之间进行转换,这样可以提高你的…

第6章 面向对象

第6章 面向对象 6.1. Scala包 ​ 包的命名 ​ 包的导入 Scala中基本的import导入语法和Java完全一致 import java.util.List import java.util._ // Scala中使用下划线代替Java中的星号Java中import导入的语法比较单一,Scala对此进行扩展,Scala中的im…

Cadence Allegro PCB设计88问解析(二十八) 之 Allegro中使用Anti Etch分割平面

一个学习信号完整性仿真的layout工程师 最近看到关于Anti Etch的设置,因为本人之前在layout设计是使用过这个命令。后来去到别的公司就不用了,从网上看到说这个命令是用来负片设计的。在这里在说下正片和负片的概念: 正片:是指在a…

Git团队代码规范

Git团队代码规范 1. 分支的定义2. 约束2.1 远程命名2.2 拉取代码2.3 新建Issues2.3 代码规范2.4 MR提交 本文章讲解Git代码管理中团队应该遵守的一些规则,让大家可以愉快的一起开发工作。 本篇文章需要结合Git代码提交规范-实践篇 一起食用哟~ 上一节我们已经讲了如…

Vue----Vue属性绑定

【原文链接】Vue----Vue属性绑定 通过v-bind:xxx 的方式即可实现Vue的属性绑定&#xff0c;比如如下代码&#xff0c;为div标签增加class属性&#xff0c;class的属性值通过msg变量提供 <template><div v-bind:class"msg">测试属性绑定</div> &l…

Java XML

目录 XML简介 XML文档结构 XML组成部分 XML规范 解析XML DOM4J解析实战 1.XML简介 &#xff08;1&#xff09;定义&#xff1a;可扩展标记语言 &#xff08;2&#xff09;特点&#xff1a;跨平台&#xff0c;跨语言/系统 &#xff08;3&#xff09;作用&#xff1a;传…

windows编译运行es源码1

一. 基础搭载环境 win10 jdk 11 \ jdk8 idea 2022 gradle 8.1.1 【建议4.5.1以上】 elasticsearch 7.8.0 源码及安装包 二. 安装gradle 1. 官网下载链接&#xff1a;https://gradle.org/releases/ 2. 解压设置环境变量 (1) GRADLE_HOME 环境变量指向你的 Gradle…

利用jmeter java sample端口转发实现对远程数据库的压力测试

1 需求背景 对数据库进行压力测试时&#xff0c;需要模拟同一时间大量的sql请求发送&#xff0c;借助于jmeter的 sql请求可以实现&#xff0c;但是对RDS来说&#xff0c;需要进行端口映射(跳板机)访问远程数据库,对于单线程手工测试来说&#xff0c;可以直接通过CRT进行端口跳转…

chatgpt赋能python:Python支持一行多写,让你的代码更简洁高效

Python支持一行多写&#xff0c;让你的代码更简洁高效 Python是一种简洁而又灵活的编程语言&#xff0c;它支持一行多写代码&#xff0c;让你的代码更加简洁高效。当你需要在一行代码中写入多个语句时&#xff0c;使用一行多写可以让你的代码更加易读和易维护。这篇文章将介绍…

NUCLEO-F411RE RT-Thread 体验 (4) - GCC环境 LED控制以及CMD命令的添加

NUCLEO-F411RE RT-Thread 体验 (4) - GCC环境 LED控制以及CMD命令的添加 1、LED的控制 前面pin驱动移植后&#xff0c;我们使用rt_pin_mode() rt_pin_write() 控制gpio拉高拉低&#xff0c;从而控制LED灯的闪烁。 整个pin的初始化流程在rt_hw_board_init里。 rt_hw_pin_init…

梅林固件启用自定义DDNS(以cloudflare为例)

参考&#xff1a; In-a-dyn 组件&#xff1a;In-a-dynhttps://github.com/RMerl/asuswrt-merlin.ng/wiki/DDNS-services In-a-dyn配置示例https://github.com/troglobit/inadyn/tree/master/examples原理&#xff1a; 原版梅林固件即Asuswrt-Merlin 自384.7开始&#xff0c;引…

JDK自带的构建线程池的方式之newSingleThreadExecutor

newSingleThreadExecutor从名称上就可以知道这个是一个单例的线程池。在这个线程池中只有一个线程来处理任务。 就可以使用在业务涉及到顺序消费的时候。 newSingleThreadExecutor的代码展示 可以从这个在Executors中的静态方法newSingleThreadExecutor可以发现&#xff0c;该…

chatgpt赋能python:Python数值区间判断

Python数值区间判断 Python是一种高级编程语言&#xff0c;具有强大的数值计算和处理功能。在Python中&#xff0c;经常需要进行数值区间判断&#xff0c;以确定一个特定的数值是否位于指定的范围内。本文将介绍Python中常用的数值区间判断方法&#xff0c;并对其进行详细的讲…

SpringBoot操作Word实现文字替换和盖章(提供Gitee源码)

前言&#xff1a;在日常的工作当中&#xff0c;避免不了会涉及到一些Word文件方面的操作&#xff0c;这篇博客将使用SpringBoot整合开源Apache来操作Word&#xff0c;分享的都是目前实际当中会经常用到的一些功能代码都实际测试过&#xff0c;只分享干货&#xff0c;大家一键复…

AI加持、共建共享...亚马逊云科技重新定义云安全

我们正在进入数字化时代&#xff0c;无数传统企业正在飞速走上云端&#xff0c;无数基础设施服务在云的加持下焕发全新的活力。AI、物联网、大数据等新兴技术逐步落地应用&#xff0c;IaaS、PaaS、云原生技术日渐成熟&#xff0c;“云”正在快速扩容。2021年&#xff0c;我国云…

#10035. 「一本通 2.1 练习 1」Power Strings

Power Strings 题意简述&#xff1a; 求一个字符串由多少个重复的子串连接而成。 例如 ababab 由三个 ab 连接而成&#xff0c;abcd 由 abcd 由一个 abcd 连接而成。 输入格式 本题多组数据。 每一组数据仅有一行&#xff0c;这一行仅有一个字符串 s s s。 输入的结束标…

蓝牙GATT协议介绍

前言 现在低功耗蓝牙&#xff08;BLE&#xff09;连接都是建立在 GATT (Generic Attribute Profile) 协议之上。GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范&#xff0c;这些很短的数据段被称为属性&#xff08;Attribute&#xff09;。 GAP 详细介绍 GAT…

鉴源论坛丨汽车电子ISO 26262:2018标准概述(一)

作者 | 郭建 上海控安可信软件创新研究院特聘专家 版块 | 鉴源论坛 观模 摘要&#xff1a;安全在汽车研发中是关键要素之一&#xff0c;辅助驾驶、车辆的动态控制等功能的研发和集成都需要加强安全系统研发&#xff0c;同时&#xff0c;需要为满足所有预期的安全目标提供证据…