Django擴展 —— uwsgi+nginx部署

-- uwsgi+nginx部署(django)


-- 服務器環境配置

-- 導出虛擬環境的所有包

pip freeze > list.txt

-- 通過ftp軟件將項目以及list.txt文件傳到服務器

-- 安裝並創建虛擬環境

sudo apt-get install python-virtualenv
sudo easy_install virtualenvwrapper
mkvirtualenv 虛擬環境

-- 在虛擬環境中安裝所有的包

workon 虛擬環境
pip install -r list.txt

-- 更改settings.py中的debug設置

DEBUG = False
ALLOWED_HOSTS = ['*']


1.uwsgi

1.1 wsgi規範(python web server gateway interface)

# >> 相當於python3 manage.py runserver
# web服務器與python程序之間的接口;

1.2 uwsgi實現wsgi所有接口的一個服務器;

1.3 安裝uWSGI

pip install uwsgi

1.4 配置uWSGI,在項目中新建uwsgi.ini

1.4.1 配置:

[uwsgi]
# socket=外網ip:端口(使用nginx連接時,使用socket)
http= 127.0.0.1:8000  # 外網ip:端口(直接做web服務器,使用http)
chdir= ''  # 項目根目錄
wsgi-file= '' # 項目中wsgi.py文件的目錄,相對於項目根目錄
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log


1.4.2 啓動:uwsgi --ini uwsgi.ini

1.4.3 停止:uwsgi --stop uwsgi.pid

1.4.4 重啓:uwsgi --reload uwsgi.pid

1.4.5 使用http協議查看網站運行情況,運行正常,但是靜態文件無法加載


2.nginx

-- 作用

1.負載均衡;多臺服務器輪流處理請求;

2.反向代理;請求nginx服務器,再轉向我們的服務器;隱藏真實服務器;

-- 實現構架

# 客戶端請求nginx,再由nginx請求uwsgi,運行django框架下的python代碼;

2.1 安裝nginx

sudo apt-get nginx

# 或者下載壓縮文件:

# 解壓縮:
# tar zxvf nginx-1.6.3.tar.gz
# 進入nginx-1.6.3目錄依次執行如下命令進行安裝:
# ./configure
# make
# sudo make install

2.2 默認安裝到/usr/local/nginx目錄,進入此目錄執行命令

2.3 查看版本:sudo sbin/nginx -v

2.4 啓動:sudo sbin/nginx

2.5 停止:sudo sbin/nginx -s stop

2.6 重啓:sudo sbin/nginx -s reload

2.7 通過瀏覽器查看nginx運行結果

2.8 指向uwsgi項目:編輯conf/nginx.conf文件

# sudo gedit conf/nginx.conf
# 在server下添加新的location項,指向uwsgi的ip與端口(請求路徑)
# location / {
#     include uwsgi_params;將所有的參數轉到uwsgi下
#     uwsgi_pass 192.168.196.128:8080 # uwsgi的ip與端口;
# }

2.9 修改uwsgi.ini文件,啓動socket,禁用http

# socket=127.0.0.1:8000
# 重啓nginx、uwsgi
# sudo sbin.ngix / uwsgi --ini uwsgi.ini
# 在瀏覽器中查看項目,發現靜態文件加載不正常,接下來解決靜態文件的問題

3.靜態文件

# 靜態文件都會由nginx處理,不會將請求轉到uwsgi

3.1 配置nginx的靜態項,打開conf/nginx.conf文件,找到server,添加新location

# location /static {
# 轉向test5項目下這個路徑
# alias /var/www/test5/static/;
# }

3.2 在服務器上創建目錄結構“/var/www/test5/”

# test5與項目名稱相同;

3.3 修改目錄權限

sudo chmod 777 /var/www/test5

3.4 創建static目錄,注意順序是先分配權限,再創建目錄

mkdir static # chomod 777 static

3.5 修改settings.py文件

STATIC_ROOT='/var/www/test5/static/' # 用於採集靜態文件;
STATIC_URL='/static/'

3.6 收集所有靜態文件到static_root指定目錄

python manage.py collectstatic

3.7 重啓nginx、uwsgi

# /usr/local/nginx
# sudo sbin.ngix / uwsgi --ini uwsgi.ini


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章