Django(Ngnix)項目部署 負載均衡
踩過不少坑,所以一定要看清楚自己的配置,地址這些都不能有錯
簡單的說就是本機當Ngnix,分配客戶端的請求給不同後端的伺服器,解決大量並發訪問服務問題
首先:
在本機與後端伺服器都要先安裝Uwsigi
sudo apt-get install libpython3.6-dev
pip install uwsgi
先在後端的各個伺服器上操作
1 先進入你創建的虛擬環境下 #注意!一定要安裝好項目所需要的環境
2把項目拷進去,cd 到項目文件夾里 #注意!項目不能用root用戶拷進來
3 pwd 複製這個路徑:
4 在這個項目目錄下建立uwsgi文件 記得是項目主目錄,也就是和Template等處於一個目錄下,別弄錯
sudo vim uwsgi.ini
5 在裡面寫入
[uwsgi]
socket=0.0.0.0:8000
#http=0.0.0.0:8000
chdir=/home/gms/project #這裡就可以粘貼你複製的項目路徑,一定不能錯!
wsgi-file=project/wsgi.py #項目下的wsgi.py的路徑
processes=1 #多少個進程可自定義
threads=2 #可自定義
master=true
pidfile=uwsgi.pid
daemonize=uwsgi.log
保存退出
6 cd 到有seeting.py文件的目錄下,也就是與你項目同名的文件,修改項目的settings.py 文件
DEBUG=FALSE
ALLOWED_HOSTS = ["*"]
STATIC_ROOT=』/var/www/myApp/static/』
#這個路徑可自定義,但要與本機創建的static目錄相同,可先到本機窗口先創建此目錄,在第二部分的第7條保存退出
7 確認本機創建static文件和配置好ngnix.conf文件後,把項目里的static文件里的東西遷移過去本機新創建的static文件里
cd .. #到達項目主目錄
python manage.py collectstatic #執行遷移前要確定本機有沒有創建好這個文件!
8 sudo uwsgi --ini uwsgi.ini 啟動服務
9 sudo ps -aux | grep uwsgi 查看啟動進程確定是否開啟
第二部分在本機操作
本機當 Nginx,分發客戶端的請求給後端的伺服器
1 安裝
sudo apt-get install zlib1g-dev
2 拿下安裝包,解壓 #解壓包可自取
鏈接:https://pan.baidu.com/s/1DF9MyD2Dms89Qe7dLbuAiQ 密碼:i70u
tar -xzvf nginx-1.11.3.tar.gz
tar -xzvf openssl-1.0.1.tar.gz
tar -xzvf pcre-8.41.tar.gz
3 進入Nginx解壓目錄
cd /home/gms/nginxFile/nginx-1.11.3/
4 輸入來配置環境
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gizp_static_module --with-prce=../prce-8.41 --with-openssl=../openssl-1.0.1
5 編譯
make
如果出現prce.h No such file or directory,就安裝 sudo apt-get install libpcre3 libpcre3-dev
負載均衡
6 安裝
sudo make install
7 打cd命令 回主目錄,創建一個static文件,存放項目的css,js,jq等文件 注意要在分發伺服器上把項目的static文件遷移過來
sudo mkdir -vp /var/www/myApp/static #可自己命名,要與下面nginx.conf配置的相同
Sudo chmod 777 /var/www/myApp/static/ #設置文件的許可權
8 配置nginx.conf 文件
vim /usr/local/nginx/conf/nginx.conf
內容
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 300;
gzip on;
#mycom指定負載均衡器的名稱 ,可自定義,後面會調用
upstream mycom{
server 47.106.37.80:8000 weight=1 max_fails=1 fail_timeout=300s;
#47.106.37.80:8000 注意:這是我自己分發的後端伺服器的IP和埠,記得修改
server ztwo.top:8000 weight=2 max_fails=2 fail_timeout=300s;
#ztwo.top:8000 注意:這是我分發的後端伺服器的IP和埠,記得修改
}
server {
listen 80;
server_name localhost 39.108.232.243:8000;
#注意39.108.232.243:8000這是自己的伺服器IP與埠
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass mycom; #注意:調用負載均衡器的名稱,上面定義的 需要同名
}
#配置你項目的static文件
location /static{
alias /var/www/myApp/static/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
8 啟動ngnix服務
sudo /usr/local/nginx/sbin/nginx
如果是改變了配置文件的話,再次啟動伺服器只要輸入
sudo /usr/local/nginx/sbin/nginx -s reload
9 查看進程確認是否開啟
sudo ps -aux | grep uwsgi
最後在瀏覽器直接輸入自己本機的IP或者域名加路由進行訪問即可
TAG:程序員小新人學習 |