企业级Nginx服务器配置使用

写在前面

安装和配置流程

安装
配置
推荐博文:https://www.cnblogs.com/fengff/p/8892590.html
nginx服务器的配置文件在/etc/nginx文件夹下;
主要需要注意的文件有:
conf.d/
modules-available/
modules-enabled/
nginx.conf
sites-available/(通过软链接到enabled文件夹中,源文件在此)
sites-enabled/
uwsgi_params(uwsgi服务器的配置)

配置文件有几个,一般的读取顺序为:
①nginx.conf——>②conf.d/——>③sites-enabled/default或者/…

配置文件的内容结构:
mian
events
http
------server
----------------location
------ server
------upstream

因此一般的配置更改的方法:
①在nginx.conf文件中加入Service部分
②直接在conf.d文件夹中新增一个conf结尾的配置文件
④在原来存在的default文件中新增Service部分
⑤在available中新增配置文件,并且链接到enable文件夹中

常用的命令
sudo nginx
-s stop
-s reload(平滑启动—即在启动状态下更新配置文件)

反向代理的两种形式:
location——>1
动态分配——>2(upstream)

uwsgi服务器配合nginx

启动 uwsgi --ini uwsgi.ini
uwsgi重启 uwsgi --reload uwsgi.pid
uwsgi停止 uwsgi --stop uwsgi.pid

supervisor

推荐博文
简单介绍
Supervisord
主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。该服务的配置文件在/etc/supervisor/supervisord.conf
启动supervisord
supervisord -c /etc/supervisord.conf
supervisorctl -c /etc/supervisord.conf
重新启动
supervisorctl reload

supervisorctl status
supervisorctl reload
supervisorctl start service_name

Supervisorctl
客户端的命令行工具,提供一个类似shell的操作接口,通过它你可以连接到不同的supervisord进程上来管理它们各自的子程序,命令通过UNIX socket或者TCP来和服务通讯。用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。服务端也可以要求客户端提供身份验证之后才能进行操作

Web Server
supervisor提供了web server功能,可通过web控制进程(需要设置[inet http server]配置项)
在supervisord.conf中设置通过web可以查看管理的进程,加入以下代码(默认即有,取消注释即可)
[inet_http_server]
port=9001
username=user
password=123

通过http://ip:9001/网址访问即可控制进程消息、状态

supervisor–>uwsgi–>nginx
利用目前这样一个的流程,supervisor启动的进程是uwsgi命令来启动服务器程序,配合nginx实现动态分配和反向代理

1、supervisor
【注意是虚拟环境的启动程序】
cd /etc/supervisor/conf.d
vi service.conf

[program:test_http]
command=/home/wh/Environments/Service/bin/python (可以是虚拟环境的Python)/home/Environments/Service/F_main.py 
directory=/home/Environments/Service
priority=1
numprocs=1
autostart=true
autorestart=true
startretries=10
exitcodes=0
stopsignal=KILL
stopwaitsecs=10
redirect_stderr=true

2、uwsgi
cd /home/wh/Environments/Service/bin
source activate
uwsgi /home/wh/Works/ServiceWeb/uwsgi_flask.ini
Service_name.ini文件内容
停止进程:pkill -f -9 uwsgi

[uwsgi]
# uwsgi 启动时所使用的地址与端口,也可以使用.sock文件的方式
socket = 127.0.0.1:8080
# 指向网站目录
chdir = /home/wh/Works/ServiceWeb
# python 启动程序文件
wsgi-file = Web_flask.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 1
# 线程数
threads = 1
#状态检测地址--可以web检测状态
stats = 127.0.0.1:8081
#项目flask日志文件
logto = /home/wh/Works/ServiceWeb/logflask.log

3、nginx服务器的配置
3.1 有反向代理

upstream myservers {
    server 192.168.30.5:80 weight=1;
    server 192.168.30.6:81 weight=1;
    server 192.168.30.7:82 weight=1;
    server 127.0.0.1:8080 weight=5;
}

server{
    listen    80;
    server_name   192.168.1.104; #反向代理服务器的IP或者域名/etc/hosts
    
    location / {
        proxy_pass http://myservers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    } 
}

没有反向代理–针对Python应用两种方式

# 第一种方式 :uwsgi
server {
    listen 8080;
    server_name 192.168.1.104;
    charset utf-8;
    client_max_body_size 75M;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8080;
    }
}

# 和 proxy_pass动态请求转发到9000端口(转发给Python应用):
   location / {
       proxy_pass       http://127.0.0.1:9000;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章