2021-10-21 centos7+ nginx + uwsgi(包含一个配置上的天坑)
首先粘贴一下NGINX的资料站
官网
http://nginx.org/
中文资料
http://www.nginx.cn/doc/index.htm
这次安装采用如下简单方法,注意这个是CENTOS7的方式,其他系统还是要按照官方网站指引走。
sudo yum install yum-utils
vim /etc/yum.repos.d/nginx.repo
建立这个新文件并在里边添加以下内容并保存
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
sudo yum-config-manager --enable nginx-mainline
sudo yum install nginx
至此算是安装完成了,下面记得关闭防火墙systemctl stop firewalld
- 尝试用系统模式启动下
systemctl start nginx
插播补充知识点:这里罗列一些通过系统管理的命令,备查systemctl status nginx 查看nginx状态systemctl start nginx 启动nginx服务systemctl stop nginx 关闭nginx服务systemctl enable nginx 设置开机自启systemctl disable nginx 禁止开机自启
- 查看一下信息
ps -aux | grep nginx
- 没问题的话关闭它,然后进行配置
systemctl stop nginx
- nginx 的默认配置目录文件为:/etc/nginx/nginx.conf
- 执行
vim /etc/nginx/nginx.conf
去配置一下
user nginx; #用户名,这个在配置自己的配置时应该改成自己的登录账号名,比如root
# user root;
worker_processes auto; # 工作进程,设置多一些可以提高并发能力error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http { #HTTP请求include /etc/nginx/mime.types; #这里是能支持的类型列表 下面的10是这个文件的展开default_type application/octet-stream;#默认类型log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' #这里是日志的格式access_log /var/log/nginx/access.log main; #日志输出的位置sendfile on;#tcp_nopush on;keepalive_timeout 65; #连接时间,超时设定#gzip on;include /etc/nginx/conf.d/*.conf; #这个配置在下面11.展开,如果配置自己的则这个include 删除 ,我在下面12. 位置粘贴一个自定义修改配置
}
vim /etc/nginx/mime.types
打开支持的列表看看,这些都是支持的类型
types {text/html html htm shtml;text/css css;text/xml xml;image/gif gif;image/jpeg jpeg jpg;application/javascript js;application/atom+xml atom;application/rss+xml rss;text/mathml mml;text/plain txt;text/vnd.sun.j2me.app-descriptor jad;text/vnd.wap.wml wml;text/x-component htc;image/png png;image/svg+xml svg svgz;image/tiff tif tiff;image/vnd.wap.wbmp wbmp;image/webp webp;image/x-icon ico;image/x-jng jng;image/x-ms-bmp bmp;font/woff woff;font/woff2 woff2;application/java-archive jar war ear;application/json json;application/mac-binhex40 hqx;application/msword doc;application/pdf pdf;application/postscript ps eps ai;application/rtf rtf;application/vnd.apple.mpegurl m3u8;application/vnd.google-earth.kml+xml kml;application/vnd.google-earth.kmz kmz;application/vnd.ms-excel xls;application/vnd.ms-fontobject eot;application/vnd.ms-powerpoint ppt;application/vnd.oasis.opendocument.graphics odg;application/vnd.oasis.opendocument.presentation odp;application/vnd.oasis.opendocument.spreadsheet ods;application/vnd.oasis.opendocument.text odt;application/vnd.openxmlformats-officedocument.presentationml.presentationpptx;application/vnd.openxmlformats-officedocument.spreadsheetml.sheetxlsx;application/vnd.openxmlformats-officedocument.wordprocessingml.documentdocx;application/vnd.wap.wmlc wmlc;application/wasm wasm;application/x-7z-compressed 7z;application/x-cocoa cco;application/x-java-archive-diff jardiff;application/x-java-jnlp-file jnlp;application/x-makeself run;application/x-perl pl pm;application/x-pilot prc pdb;application/x-rar-compressed rar;application/x-redhat-package-manager rpm;application/x-sea sea;application/x-shockwave-flash swf;application/x-stuffit sit;application/x-tcl tcl tk;application/x-x509-ca-cert der pem crt;application/x-xpinstall xpi;application/xhtml+xml xhtml;application/xspf+xml xspf;application/zip zip;application/octet-stream bin exe dll;application/octet-stream deb;application/octet-stream dmg;application/octet-stream iso img;application/octet-stream msi msp msm;audio/midi mid midi kar;audio/mpeg mp3;audio/ogg ogg;audio/x-m4a m4a;audio/x-realaudio ra;video/3gpp 3gpp 3gp;types {text/html html htm shtml;text/css css;types {text/html html htm shtml;text/css css;text/xml xml;image/gif gif;image/jpeg jpeg jpg;application/javascript js;application/atom+xml atom;application/rss+xml rss;text/mathml mml;
- 展开
vim /etc/nginx/conf.d/*.conf
里边的内容如下
server {listen 80; #监听端口server_name localhost; #服务器ip地址,如果是阿里云就填上公网IP#access_log /var/log/nginx/host.access.log main;location / {root /usr/share/nginx/html; # 默认主页的路径位置index index.html index.htm;#默认主页的具体文件名}#error_page 404 /404.html;
- 自定义配置
vim /laobao/nginx1.conf
,用这个配置, 静态页面
user root; #用户名,这个在配置自己的配置时应该改成自己的登录账号名,比如root
worker_processes 1; # 工作进程,设置多一些可以提高并发能力
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {worker_connections 1024;
}
http { #HTTP请求include /etc/nginx/mime.types; #这里是能支持的类型列表 default_type application/octet-stream;#默认类型log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' #这里是日志的格式access_log /var/log/nginx/access.log main; #日志输出的位置sendfile on;#tcp_nopush on;keepalive_timeout 65; #连接时间,超时设定#gzip on;#include /etc/nginx/conf.d/*.conf; #这个配置如果配置自己的则这个include 删除 ,其实这个include 是个包引用server {listen 80; #监听端口server_name localhost; #服务器ip地址,如果是阿里云就填上公网IP#access_log /var/log/nginx/host.access.log main;location / { #======一般主要是配置这里====================root /root/laobao/templates; # 项目路径index index.html index.htm;#入口页名称}error_page 500 502 503 504 /50x.html; #出错后的具体配置location = /50x.html {root /usr/share/nginx/html;}}}
配置好了以后启动NGINX使用nginx -c 绝对文件路径
来启动服务比如我这次的启动命令为
nginx -c /root/laobao/nginx1.conf
这个命令启动后,如果想关闭服务用nginx -s quit
额外插入一些知识点:nginx -t 不运行,仅测试配置文件nginx -c configpath 从指定路径加载配置文件nginx -t -c configpath 测试指定配置文件
配置文件的块名意思:
main 全局设置events{ 工作模式,连接配置...
}
http{ http的配置...upstream xxx{ 负载均衡配置...}server{ 主机设置...location xxx{ URL匹配...}}
}
mian
user nginx; worker进程运行的用户和组worker_processes 1; 指定Nginx开启的子进程数,多核CPU建议设置和CPU数量一样的进程数error_log xxx level; 用来定义全局错误日志文件,通常放在var中,level有 debug,info,notice, warn,error,critpid xxx; 指定进程id的存储文件位置
events
指定工作模式和以及连接上限events{use epoll;worker_connections 1024;
}use 指定nginx工作模式epoll 高效工作模式,linuxkqueue 高效工作模式, bsdpoll 标准模式select 标准模式worker_connections 定义nginx每个进程的最大连接数正向代理 连接数 * 进程数反向代理 连接数 * 进程数 / 4linux系统限制最多能同时打开65535个文件,默认上限就是65535,可解除 ulimit -n 65535
http
最核心的模块,主要负责http服务器相关配置,包含server,upstream子模块include mime.types;设置文件的mime类型include xxxconfig; 包含其它配置文件,分开规划解耦default_type xxx; 设置默认类型为二进制流,文件类型未知时就会使用默认log_format 设置日志格式sendfile 设置高效文件传输模式keepalive_timeout 设置客户端连接活跃超时gzip gzip压缩
server
用来指定虚拟主机listen 80; 指定虚拟主机监听的端口server_name localhost; 指定ip地址或域名,多个域名使用空格隔开charset utf-8; 指定网页的默认编码格式error_page 500 502 /50x.html 指定错误页面access_log xxx main; 指定虚拟主机的访问日志存放路径error_log xxx main; 指定虚拟主机的错误日志存放路径root xxx; 指定这个虚拟主机的根目录index xxx; 指定默认首页
location
核心中的核心,以后的主要配置都在这主要功能:定位url,解析url,支持正则匹配,还能支持条件,实现动静分离语法location [modifier] uri{...}modifier 修饰符= 使用精确匹配并且终止搜索~ 区分大小写的正则表达式~* 不区分大小写的正则表达式^~ 最佳匹配,不是正则匹配,通常用来匹配目录常用指令alias 别名,定义location的其他名字,在文件系统中能够找到,如果location指定了正则表达式,alias将会引用正则表达式中的捕获,alias替代lication中匹配的部分,没有匹配的部分将会在文件系统中搜索
反向代理
proxy_pass URL; 反向代理转发地址,默认不转发header,需要转发header则设置proxy_set_header HOST $host;
proxy_method POST; 转发的方法名proxy_hide_header Cache-Control; 指定头部不被转发 proxy_pass_header Cache-Control; 设置哪些头部转发proxy_pass_request_header on; 设置转发http请求头proxy_pass_request_body on; 设置转发请求体
upstream
负载均衡模块,通过一个简单的调度算法来实现客户ip到后端服务器的负载平衡写法 upstream myproject{ip_hash;server 127.0.0.1:8000;server 127.0.0.1:8001 down;server 127.0.0.1:8002 weight=3;server 127.0.0.1:8003 backup;fair;}
负载均衡算法weight 负载权重down 当前server不参与负载均衡backup 其它机器全down掉或满载使用此服务ip_hash 按每个请求的hash结果分配fair 按后端响应时间来分(第三方的)
- uwsgi的安装
pip install uwsgi
- 在目标虚拟环境下同时目标项目目录下建立uwsgi.ini 配置文件
vim uwsgi.ini
[uwsgi]
#使用nginx连接时 使用
#socket = 0.0.0.0:8080
#直接作为WEB服务器使用
http=0.0.0.0:5001
#配置工程目录
chdir =/root/laobao
#配置项目wsgi目录,相对于工程目录
#WSGI-file=OnlineStore/wsgi.py #这个部分是DJANGO用的
#下面适用于flask项目部署,这个记得是配置文件相对入口文件的相对路径,因为两个文件平级所以直接写app.py
wsgi-file=app.py
#router#绑定的核心,一般都是app ,天坑在这里,注释千万别写下面这行后面,他会把注释也给你解释进去执行。。。。。
callable=app
#配置进程,线程信息
#进程数
processes=4
#线程数
threads=10
#准许线程
enable-threads=True#主进程
master=True#进程号
pidfile=uwsgi.pid
# 守护和日志
daemonize=uwsgi.log
这个坑在上面配置的callable=app
这行,如果在这行后面写注释,绝对会出错,显示 Internal Server Error 。。。
配置完毕后在项目根,运行服务:uwsgi --ini uwsgi.ini
查询进程:ps -aux | grep uwsgi
关闭服务:uwsgi --stop uwsgi.pid
另外,在该目录下还会生成两个文件,就是配置里最后两行的进程号和日志,日志能够显示具体问题,出错了多看看好了
至此,uwsgi部署完毕进入下一个修改连接环节
为了能够与NGINX配合,首先修改uwsgi配置文件第一行
- 注释掉http那行,启用socket这行,
#使用nginx连接时 使用
socket = 0.0.0.0:5001
#直接作为WEB服务器使用
#http=0.0.0.0:5001
作为服务器ip应该是0.0.0.0 端口可以任意指定但要注意两点 1.如果和NGINX配合那么要和NGINX配置的端口保持一致 2 .如果作为web服务使用记得在云服务器安全组打开对应端口
16. 在目标项目下建立nginx2.ini 配置文件,这里其实前边基本都通用就在server部分有改动
user root; #用户名,这个在配置自己的配置时应该改成自己的登录账号名,比如root
worker_processes 1; # 工作进程,设置多一些可以提高并发能力
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {worker_connections 1024;
}
http { #HTTP请求include /etc/nginx/mime.types; #这里是能支持的类型列表 下面的10是这个文件的展开default_type application/octet-stream;#默认类型log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' #这里是日志的格式access_log /var/log/nginx/access.log main; #日志输出的位置sendfile on;#tcp_nopush on;keepalive_timeout 65; #连接时间,超时设定#gzip on;#include /etc/nginx/conf.d/*.conf; #这个配置在下面11.展开,如果配置自己的则这个include 删除 ,其实这个include 其实是个包引用server {listen 80; #监听端口server_name 47.105.72.112; #服务器名称#access_log /var/log/nginx/host.access.log main;root root/laobao;location /static {alias /root/laobao/static;}location / {include /etc/nginx/uwsgi_params; # 项目路径uwsgi_pass localhost:5001;#入口页名称}}
}
server{}的改动为:
server {listen 80; #监听端口server_name 47.xxx.xx.xxx; #服务器名称#access_log /var/log/nginx/host.access.log main;root root/laobao; #这个root指定了项目根目录location /static { #这个是静态目录,用来打通IP路由和本地文件联通的配置,其实就是把 ip/static/xx.jpg对应到 /root/laobao/static/xx.jpg上,这样就可以在浏览器搜索上直接请求静态文件了alias /root/laobao/static; #这个是静态目录的别名}location / { #这里是绑定uwsgi的具体配置include /etc/nginx/uwsgi_params; # 指定使用uwsgi_params,这个Python用的,这个文件夹里还有别的语言的配置文件,咱就用这一个就行了uwsgi_pass localhost:5001;# 配置入口,端口这里一定要和uwsgi的配置端口一致}}
然后把nginx 和 uwsgi服务都在项目环境以及项目根目录下用对应的配置启动,如果没出错,就可以访问了,本次配置绑定的80端口,这种端口不用填端口号,当然,随便改,改外网就该监听端口,改内部就改localhost后面的端口就行。
补充一个USWGI负载均衡,首先要明白USWGI是框架容器,所以要多配制几个不同的端口并启动比如我启动5001,5002两个端口USWGI服务总共10个线程左右,然后配置NGINX的负载均衡部分如下。
# 如果使用的是 uwsgi
upstream mycom{ip_hash;server 127.0.0.1:5001; #负载均衡服务器群server 127.0.0.1:5002;
}server {listen 8080;# 表示最大允许的body体大小client_max_body_size 100m;location / { include uwsgi_params;uwsgi_pass mycom; #连接上面配置的负载均衡}
}
2021-10-21 centos7+ nginx + uwsgi(包含一个配置上的天坑)相关推荐
- 【小5聊】微信公众平台用户信息相关接口调整,不再返回性别和地区信息(2021.10.21)
应该是为了进一步加强用户隐私信息以及过度的用户性别地区营销而进行的接口调整 2021.10.12 发布通知,平台预计10月20日完成调整,请开发者及时进行调整适配,避免影响相关服务及用户体验 各位同行 ...
- 如何配置nginx+uwsgi+django?(知乎上面的看着不错)
作者:知乎用户 链接:https://www.zhihu.com/question/27295854/answer/36365005 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- nginx+uwsgi+django1.6 配置过程
1.安装nginx 参考:http://lihuipeng.blog.51cto.com/3064864/798172 2.安装django: tar xvf Django-1.6.2.tar.gz ...
- Linux Centos7 Nginx的安装与配置、反向代理、负载均衡、https配置
Nginx的安装 1.nginx安装包下载地址 http://nginx.org/en/download.html 2.把nginx安装包上传到Linux系统上 2.1 Xhell 自带上传工具. 2 ...
- Centos7+nginx+uwsgi来部署我的Django项目
前不久写了个小的博客项目,想着将它部署到服务器上去,因为是第一次部署项目,有很多的东西都不这么懂,走了很多的弯路,现在部署成功了,怕以后忘记了就记录下笔记 首先我的项目结构如下: 关于服务器的远程连接 ...
- java之21点游戏(只包含一个玩家和一个庄家,是否抓牌,没有黑杰克)
完整代码在最后面. 运行截图 首先,21点游戏的游戏需要,: 玩家和庄家两个数组(若是多个玩家则增加数组,并把原玩家代码进行复制粘贴,再修改一点点就好),并且游戏开局,先发庄家一张牌, ...
- 2021.10.21 练习题
7 递归法计算两个数的最大公约数(4分) 题目内容: 利用最大公约数的性质计算.对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数, ...
- Functional Options: Go中实现优雅的API的方法 | Gopher Daily (2021.10.22)
每日一谚:学会不要马上增加太多的功能,要把核心思想建立起来并进行测试 - Leah Culver Go技术生态 Go很大可能在go 1.19版本中支持编译器的FGO(feedback-guided o ...
- Nginx+UWSGI+Django配置全过程
Nginx + uwsgi + Django 安装配置 一.安装Nginx uwsgi Django 安装tengine yum install pcre-devel -y wget http://t ...
最新文章
- 构建Dubbo-2.0.7源码
- localStorage和cookie的跨域解决方案
- 菜鸟学习计划浅谈之Linux系统
- 广西农产品(广州)交易会 农业大健康·林裕豪:签约农商对接
- 在场景中输出横向或纵向压缩的中文字符
- GBDT是如何成为推荐系统顶级工具人的?
- game module 停止运行_详解流量复制解决方案--NGINX的ngx_http_mirror_module模块实现
- python数据结构与算法13_python3数据结构与算法
- CHIL-ORACLE-创建视图
- java程序包怎么更新,从Java 8升级到Java 11-软件包sun.util不存在
- nyoj20吝啬得过度(DFS)
- HP 288 Pro G5 BIOS降级F5
- eNSP初学者配置以太网2种链路端口:access、trunk
- 《失控》对当下的互联网投资有哪些借鉴意义
- chromecast协议_如何将Chromecast用作快速信息仪表板
- 【便签纸】记录一下对比excel列表的小工具代码
- 打包docker镜像推送到远程服务器并部署到k8s
- 一个身居中国的法国程序员谈Python与PHP
- 【离散数学】关于欧拉图与哈密顿图的讨论
- Winsoft ComPort for Android Prolific-SEO狼术
热门文章
- 光猫+路由器如何映射端口
- Unity GPS定位之逆地理编码(获取经纬度并转换成地理位置)
- 很多人问如何把网页封装成app呢?
- 光交删zone注意事项
- 云架构Linux运维,【Linux云计算架构:第三阶段-Linux高级运维...
- linux镜像使用什么pe安装系统,Linux系统ISO镜像文件可不可以用pe启动盘来安装
- 金职院计算机网络技术中外合作有什么不一样,金华职业技术学院学费多少
- 狂野飙车8:极速凌云 for Mac v1.0.2 Asphalt 8 好玩的赛车游戏
- Linux 管理面板云帮手、APPNODE与宝塔哪个好
- Android http请求 工具类