企業級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;
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章