Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)
這個部署,我真的是爬了好久的坑,才爬出來,所以給大家分享一下,避免入坑。
首先我們先了解一下相關知識:
wsgi:
?
一種實現python解析的通用接口標準/協議,是一種通用的接口標準或者接口協議,實現了python web程序與服務器之間交互的通用性。?
利用它,web.py或bottle或者django等等的python web開發框架,就可以輕松地部署在不同的web server上了;
?
uwsgi:
?
同WSGI一樣是一種通信協議?
uwsgi協議是一個uWSGI服務器自有的協議,它用于定義傳輸信息的類型,它與WSGI相比是兩樣東西。
?
uWSGI :一種python web server或稱為Server/Gateway?
uWSGI類似tornadoweb或者flup,是一種python web server,uWSGI是實現了uwsgi和WSGI兩種協議的Web服務器,負責響應python 的web請求。?
因為apache、nginx等,它們自己都沒有解析動態語言如php的功能,而是分派給其他模塊來做,比如apache就可以說內置了php模塊,讓人感覺好像apache就支持php一樣。?
uWSGI實現了wsgi協議、uwsgi協議、http等協議。 Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。
其次了解一下項目流程:
1.首先客戶端請求服務資源,
?
2.nginx作為直接對外的服務接口,接收到客戶端發送過來的http請求,會解包、分析,
?
如果是靜態文件請求就根據nginx配置的靜態文件目錄,返回請求的資源,
?
如果是動態的請求,nginx就通過配置文件,將請求傳遞給uWSGI;uWSGI 將接收到的包進行處理,并轉發給wsgi,
?
3.wsgi根據請求調用django工程的某個文件或函數,處理完后django將返回值交給wsgi,
?
4.wsgi將返回值進行打包,轉發給uWSGI,
?
5.uWSGI接收后轉發給nginx,nginx最終將返回值返回給客戶端(如瀏覽器)。
?
*注:不同的組件之間傳遞信息涉及到數據格式和協議的轉換
接下來請看詳細的安裝與配置步驟:
1.檢測yum是否完好:yum list
2.安裝python需要的依賴包:yum??-y install?zlib-devel?bzip2-devel?openssl-devel?ncurses-devel?sqlite-devel?readline-devel?tk-devel?gcc?make????(手敲,任何地方都別復制)
3.下載python包:
linux系統默認安裝了python
我們需要的版本是python 3.6.2,在centos上進行python2和3并存
wget?https://www.python.org/ftp/python?/3.6.2/Python-3.6.2.tar.xz
在根目錄的opt下可以查看下載好的python3.6.2的壓縮包
4.在opt下解壓python包:?tar -Jxvf Python3.6.2.tar.xz
5.進行安裝路徑配置并編譯安裝:
首先切換路徑:cd Python3.6.2
其次進行路徑配置: ./configure prefix=/usr/local/python3
最后編譯安裝:make && make instal??(需要挺長時間的)
6.進入根目錄下的usr/local下創建愛你python3和pip3的軟鏈接:
7.安裝django
8.安裝uwsgi
9.創建uwsgi的軟鏈接:
先切入到opt下,然后創建uwsgi的軟鏈接:
10.遷移我們自己的django項目:(我的項目是MyBlog)
我用的是xftp工具:
11.測試uwsgi和django的契合:
1.首先下關閉防火墻和selinux
2.切入到我們的項目目錄下,然后用uwsgi命令啟動項目:
?--http ?ip端口傳遞
???--file ??uwsgi文件位置
???--static-map ?靜態文件路由
?
上面我們采用的是命令的方式使用uwsgi啟動django,但是,不夠完美。我們可以構造配置文件進行操作。
12.使用uwsgi腳本啟動django
1.在/opt下創建script目錄
2.在script目錄下創建uwsgi.ini文件
3.配置uwsgi.ini文件
4.給uwsgi授權:
5.在script下啟動項目: uwsgi --ini uwsgi.ini
可以看到這樣也能啟動此項目:
13.安裝nginx:wget??http://nginx.org/download/nginx-1.12.2.tar.gz
下載成功:
14.解壓 nginx壓縮包
15.編譯安裝nginx
16.進入/usr/local下查看nginx
17.創建nginx軟鏈接
18.nginx和uwsgi通訊示意圖:
19.修改nginx的配置文件:
配置內容:(紅色的是與要修改的)
http {
????include ??????mime.types;
????default_type ?application/octet-stream;
?
????log_format ?main ?'$remote_addr - $remote_user [$time_local] "$request" '
??????????????????????'$status $body_bytes_sent "$http_referer" '
??????????????????????'"$http_user_agent" "$http_x_forwarded_for"'; 日志的格式
?
????#access_log ?logs/access.log ?main;
?
????sendfile ???????on;
????#tcp_nopush ????on;
?
????#keepalive_timeout ?0;
????keepalive_timeout ?65;
?
????#gzip ?on;
server {
????????listen ??????80;
????????server_name ?Qshop; 服務的名稱
?
????????charset utf-8; 編碼格式
?
????????access_log ?logs/host.access.log ?main; 訪問日志
?
????????gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; ?訪問內容的類型
?
????????error_log /var/log/nginx/error.log error; 錯誤日志,默認沒有,需要手動創建
?
????????location / {
?????????????include uwsgi_params; 加載uwsgi_params
?????????????uwsgi_connect_timeout 30; 連接的超時時間 不要加冒號不要加冒號不要加冒號
?????????????uwsgi_pass unix:/opt/script/uwsgi.sock; uwsgi.sock通訊的文件地址
????????}
?
????????location = /static/{
????????????alias /opt/Qshop/static; 靜態文件的目錄
????????????index index.html index.htm;
????????}
19.啟動uwsgi和nginx(先殺死當前狀態下的uwsgi和nginx)
kill -9 uwsgi
kill -9 nginx
先啟動uwsgi
再啟動nginx:
?
20.整個過程整理下來了,我覺得是非常詳細了,希望大家不要入坑。
————————————————
版權聲明:本文為CSDN博主「趙小七--」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43567965/article/details/89364046
來源:https://blog.csdn.net/weixin_43567965/article/details/89364046
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全力以赴的近义词(学以致用的近义词)
- 下一篇: 流行爱国歌曲励志抖音最火(流行爱国歌曲)