亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

詳解通過Nginx部署Django(基于ubuntu)

2024-08-30 12:28:28
字體:
來源:轉載
供稿:網友

Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比較常見的一種方式。

在這種方式中,我們的通常做法是,將nginx作為服務器最前端,它將接收WEB的所有請求,統一管理請求。nginx把所有靜態請求自己來處理(這是NGINX的強項)。然后,NGINX將所有非靜態請求通過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。

可見,uwsgi的作用就類似一個橋接器。起到橋梁的作用。

Linux的強項是用來做服務器,所以,下面的整個部署過程我們選擇在Ubuntu下完成。

一、安裝Nginx                                                                       

Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好。

Nginx同樣為當前非常流行的web服務器。利用其部署Django,我們在此也做簡單的介紹。

Nginx官網:http://nginx.org/

打開ubuntu控制臺(ctrl+alt+t)利用Ubuntu的倉庫安裝。

fnngj@ubuntu:~$ sudo apt-get install nginx #安裝

啟動Nginx:

fnngj@ubuntu:~$ /etc/init.d/nginx start #啟動fnngj@ubuntu:~$ /etc/init.d/nginx stop #關閉fnngj@ubuntu:~$ /etc/init.d/nginx restart #重啟

修改Nginx默認端口號,打開/etc/nginx/nginx.conf 文件,修改端口號。

 server {  listen    8088;  # 修改端口號  server_name localhost;  #charset koi8-r;   #access_log logs/host.access.log main;  location / {    root  html;    index index.html index.htm;  }

大概在文件36行的位置,將默認的80端口號改成其它端口號,如 8088。因為默認的80端口號很容易被其它應用程序占用。

然后,通過上面命令重啟nginx。訪問:http://127.0.0.1:8088/

django部署到nginx,nginx部署django項目,django,nginx,部署  

如果出現如上圖,說明Nginx啟動成功。 

二、安裝uwsgi                                                           

 通過pip安裝uwsgi。

root@ubuntu:/etc# python3 -m pip install uwsgi

測試uwsgi,創建test.py文件:

def application(env, start_response):  start_response('200 OK', [('Content-Type','text/html')])  return [b"Hello World"]

通過uwsgi運行該文件。

fnngj@ubuntu:~/pydj$ uwsgi --http :8001 --wsgi-file test.py

django部署到nginx,nginx部署django項目,django,nginx,部署

接下來配置Django與uwsgi連接。此處,假定的我的django項目位置為:/home/fnngj/pydj/myweb

 

復制代碼 代碼如下:

fnngj@ubuntu:~/pydj$ uwsgi --http :8001 --chdir /home/fnngj/pydj/myweb/ --wsgi-file myweb/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

 

常用選項:

http : 協議類型和端口號

processes : 開啟的進程數量

workers : 開啟的進程數量,等同于processes(官網的說法是spawn the specified number ofworkers / processes)

chdir : 指定運行目錄(chdir to specified directory before apps loading)

wsgi-file : 載入wsgi-file(load .wsgi file)

stats : 在指定的地址上,開啟狀態服務(enable the stats server on the specified address)

threads : 運行線程。由于GIL的存在,我覺得這個真心沒啥用。(run each worker in prethreaded mode with the specified number of threads)

master : 允許主進程存在(enable master process)

daemonize : 使進程在后臺運行,并將日志打到指定的日志文件或者udp服務器(daemonize uWSGI)。實際上最常用的,還是把運行記錄輸出到一個本地文件上。

pidfile : 指定pid文件的位置,記錄主進程的pid號。

vacuum : 當服務器退出的時候自動清理環境,刪除unix socket文件和pid文件(try to remove all of the generated file/sockets)

三、Nginx+uwsgi+Django                                        

接下來,我們要將三者結合起來。首先羅列一下項目的所需要的文件:

myweb/├── manage.py├── myweb/│  ├── __init__.py│  ├── settings.py│  ├── urls.py│  └── wsgi.py└── myweb_uwsgi.ini

在我們通過Django創建myweb項目時,在子目錄myweb下已經幫我們生成的 wsgi.py文件。所以,我們只需要再創建myweb_uwsgi.ini配置文件即可,當然,uwsgi支持多種類型的配置文件,如xml,ini等。此處,使用ini類型的配置。

# myweb_uwsgi.ini file[uwsgi]# Django-related settingssocket = :8000# the base directory (full path)chdir      = /home/fnngj/pydj/myweb# Django s wsgi filemodule     = myweb.wsgi# process-related settings# mastermaster     = true# maximum number of worker processesprocesses    = 4# ... with appropriate permissions - may be needed# chmod-socket  = 664# clear environment on exitvacuum     = true

這個配置,其實就相當于在上一小節中通過wsgi命令,后面跟一堆參數的方式,給文件化了。

socket  指定項目執行的端口號。

chdir   指定項目的目錄。

module  myweb.wsgi ,可以這么來理解,對于myweb_uwsgi.ini文件來說,與它的平級的有一個myweb目錄,這個目錄下有一個wsgi.py文件。

其它幾個參數,可以參考上一小節中參數的介紹。

接下來,切換到myweb項目目錄下,通過uwsgi命令讀取myweb_uwsgi.ini文件啟動項目。

fnngj@ubuntu:~$ cd /home/fnngj/pydj/myweb/fnngj@ubuntu:~/pydj/myweb$ uwsgi --ini myweb_uwsgi.ini [uWSGI] getting INI configuration from myweb_uwsgi.ini*** Starting uWSGI 2.0.12 (32bit) on [Sat Mar 12 13:05:06 2016] ***compiled with version: 4.8.4 on 26 January 2016 06:14:41os: Linux-3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015nodename: ubuntumachine: i686clock source: unixdetected number of CPU cores: 2current working directory: /home/fnngj/pydj/mywebdetected binary path: /usr/local/bin/uwsgi!!! no internal routing support, rebuild with pcre support !!!chdir() to /home/fnngj/pydj/mywebyour processes number limit is 15962your memory page size is 4096 bytesdetected max file descriptor number: 1024lock engine: pthread robust mutexesthunder lock: disabled (you can enable it with --thunder-lock)uwsgi socket 0 bound to TCP address :8000 fd 3Python version: 3.4.3 (default, Oct 14 2015, 20:37:06) [GCC 4.8.4]*** Python threads support is disabled. You can enable it with --enable-threads ***Python main interpreter initialized at 0x8b52dc0your server socket listen backlog is limited to 100 connectionsyour mercy for graceful operations on workers is 60 secondsmapped 319920 bytes (312 KB) for 4 cores*** Operational MODE: preforking ***WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x8b52dc0 pid: 7158 (default app)*** uWSGI is running in multiple interpreter mode ***spawned uWSGI master process (pid: 7158)spawned uWSGI worker 1 (pid: 7160, cores: 1)spawned uWSGI worker 2 (pid: 7161, cores: 1)spawned uWSGI worker 3 (pid: 7162, cores: 1)spawned uWSGI worker 4 (pid: 7163, cores: 1)

注意查看uwsgi的啟動信息,如果有錯,就要檢查配置文件的參數是否設置有誤。

再接下來要做的就是修改nginx.conf配置文件。打開/etc/nginx/nginx.conf文件,添加如下內容。

……server {  listen     8099;   server_name  127.0.0.1   charset UTF-8;  access_log   /var/log/nginx/myweb_access.log;  error_log    /var/log/nginx/myweb_error.log;  client_max_body_size 75M;  location / {     include uwsgi_params;    uwsgi_pass 127.0.0.1:8000;    uwsgi_read_timeout 2;  }    location /static {    expires 30d;    autoindex on;     add_header Cache-Control private;    alias /home/fnngj/pydj/myweb/static/;   } }……

 listen 指定的是nginx代理uwsgi對外的端口號。

server_name  網上大多資料都是設置的一個網址(例,www.example.com),我這里如果設置成網址無法訪問,所以,指定的到了本機默認ip。

在進行配置的時候,我有個問題一直想不通。nginx到底是如何uwsgi產生關聯?,F在看來大概最主要的就是這兩行配置。

include uwsgi_params;

uwsgi_pass 127.0.0.1:8000;

include 必須指定為uwsgi_params;而uwsgi_pass指的本機IP的端口與myweb_uwsgi.ini配置文件中的必須一直。

現在重新啟動nginx,翻看上面重啟動nginx的命令。然后,訪問:http://127.0.0.1:8099/

通過這個IP和端口號的指向,請求應該是先到nginx的。如果你在頁面上執行一些請求,就會看到,這些請求最終會轉到uwsgi來處理。

django部署到nginx,nginx部署django項目,django,nginx,部署

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本色道久久88精品综合| 国外成人在线播放| 亚洲精品一区二区三区不| 日韩经典一区二区三区| 成人激情视频免费在线| 日本一区二区三区在线播放| 亚洲福利视频久久| 久久综合伊人77777蜜臀| 久久视频国产精品免费视频在线| 欧美电影免费观看大全| 亚洲第一色中文字幕| 亚洲欧美国产精品专区久久| 日韩高清中文字幕| 视频在线观看99| 国产91|九色| 尤物九九久久国产精品的分类| 尤物yw午夜国产精品视频明星| 国产极品精品在线观看| www.欧美精品一二三区| 情事1991在线| 亚洲精品在线91| 亚洲欧洲国产一区| 精品欧美激情精品一区| 欧美巨乳在线观看| 欧美高清videos高潮hd| 一个人看的www欧美| 91日本视频在线| 久久久伊人欧美| 日韩av片免费在线观看| 国产丝袜一区二区三区免费视频| 日韩av在线一区| 2019av中文字幕| 91在线色戒在线| 国产亚洲欧洲黄色| 精品国产一区二区三区久久| 亚洲欧美在线一区| 久久久久成人精品| 亚洲一区二区三区xxx视频| 国产精品日韩专区| 午夜精品久久久久久久白皮肤| 庆余年2免费日韩剧观看大牛| 国产一区二区三区在线看| 黑人巨大精品欧美一区二区一视频| 国产精品第8页| 亚洲综合日韩在线| 欧美激情一级精品国产| 日韩欧美在线播放| 欧美国产在线视频| zzjj国产精品一区二区| 96国产粉嫩美女| 综合136福利视频在线| 色阁综合伊人av| 久久久精品国产一区二区| 91精品久久久久久久久| 欧美华人在线视频| 欧美在线激情网| 久久精品国产91精品亚洲| 久久免费国产视频| 91麻豆国产语对白在线观看| 日韩免费在线电影| 91久久国产精品| 国产午夜精品美女视频明星a级| 午夜精品99久久免费| 精品久久久久国产| 国产精自产拍久久久久久| 深夜福利国产精品| www.日韩欧美| 97视频在线观看成人| 亚洲精品网址在线观看| 亚洲激情免费观看| 欧美日韩一二三四五区| 亚洲日韩欧美视频一区| 亚洲a级在线观看| 亚洲天堂精品在线| 日韩免费观看网站| 亚洲高清免费观看高清完整版| 美女视频黄免费的亚洲男人天堂| 久久久久久av| 国产精品永久免费在线| 色综合视频网站| 日韩午夜在线视频| 在线成人免费网站| 91热福利电影| 国产精品久久久久久久久借妻| 欧美日韩加勒比精品一区| 在线观看不卡av| 欧美大片va欧美在线播放| 欧美性生交大片免费| 欧美xxxx做受欧美.88| 中文字幕亚洲一区二区三区五十路| 亚洲男女自偷自拍图片另类| 国产999精品久久久| 成人免费看片视频| 日韩欧美国产高清91| 国产欧美一区二区三区视频| 91国在线精品国内播放| 国产精品入口日韩视频大尺度| 欧美激情久久久久久| 欧美性生交xxxxx久久久| 日韩免费电影在线观看| 亚洲国产精品va在看黑人| 亚洲精品欧美日韩专区| 欧美精品videossex88| 疯狂做受xxxx欧美肥白少妇| 91精品久久久久久久| 日韩欧美中文免费| 国产精品美女免费看| 国产精品久久久久9999| 日韩av在线免播放器| 国模视频一区二区| 日韩精品999| 5566成人精品视频免费| 蜜臀久久99精品久久久久久宅男| 欧美日韩激情美女| 91手机视频在线观看| 奇米影视亚洲狠狠色| 国产精品福利在线观看网址| 96pao国产成视频永久免费| 色狠狠久久aa北条麻妃| 亚洲欧美在线一区| 日韩精品中文字幕在线观看| 久久夜精品va视频免费观看| 色综合天天狠天天透天天伊人| 欧美激情精品久久久久久蜜臀| 久久久最新网址| 国产91免费观看| 国内精品小视频在线观看| 欧美成年人视频网站| 亚洲激情 国产| 久久久久北条麻妃免费看| 欧美成在线视频| 日韩欧美在线视频日韩欧美在线视频| 国产国语刺激对白av不卡| 中文字幕亚洲激情| 久久久人成影片一区二区三区| 欧美午夜性色大片在线观看| 欧美视频在线免费看| 成人免费看黄网站| 国产精品96久久久久久又黄又硬| 久久综合色88| 国产精品日韩欧美大师| 亚洲精品电影在线| 亚洲天堂第二页| 欧美性色19p| 久久精品最新地址| 疯狂欧美牲乱大交777| 欧洲亚洲在线视频| 日韩最新免费不卡| 久久久久久久国产| 国产一区二区三区日韩欧美| 久久久欧美一区二区| 日韩视频在线观看免费| 久久人人爽人人| 欧美日韩精品二区| 亚洲电影第1页| 91精品视频免费观看| 亚洲欧美精品一区二区| 国产自产女人91一区在线观看| 91麻豆桃色免费看| 国产精品偷伦视频免费观看国产| 日韩**中文字幕毛片| xxx一区二区| 国产精品免费一区豆花| 日韩av电影手机在线观看|