最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年01月17日 10:06:16   作者:蟲師  
這篇文章主要介紹了詳解通過(guò)Nginx部署Django(基于ubuntu),Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比較常見的一種方式,有興趣的可以了解一下。

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

在這種方式中,我們的通常做法是,將nginx作為服務(wù)器最前端,它將接收WEB的所有請(qǐng)求,統(tǒng)一管理請(qǐng)求。nginx把所有靜態(tài)請(qǐng)求自己來(lái)處理(這是NGINX的強(qiáng)項(xiàng))。然后,NGINX將所有非靜態(tài)請(qǐng)求通過(guò)uwsgi傳遞給Django,由Django來(lái)進(jìn)行處理,從而完成一次WEB請(qǐng)求。

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

Linux的強(qiáng)項(xiàng)是用來(lái)做服務(wù)器,所以,下面的整個(gè)部署過(guò)程我們選擇在Ubuntu下完成。

一、安裝Nginx                                                                       

Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好。

Nginx同樣為當(dāng)前非常流行的web服務(wù)器。利用其部署Django,我們?cè)诖艘沧龊?jiǎn)單的介紹。

Nginx官網(wǎng):http://nginx.org/

打開ubuntu控制臺(tái)(ctrl+alt+t)利用Ubuntu的倉(cāng)庫(kù)安裝。

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

啟動(dòng)Nginx:

fnngj@ubuntu:~$ /etc/init.d/nginx start #啟動(dòng)
fnngj@ubuntu:~$ /etc/init.d/nginx stop #關(guān)閉
fnngj@ubuntu:~$ /etc/init.d/nginx restart #重啟

修改Nginx默認(rèn)端口號(hào),打開/etc/nginx/nginx.conf 文件,修改端口號(hào)。

 server {
  listen    8088;  # 修改端口號(hào)
  server_name localhost;

  #charset koi8-r; 

  #access_log logs/host.access.log main;

  location / {
    root  html;
    index index.html index.htm;
  }

大概在文件36行的位置,將默認(rèn)的80端口號(hào)改成其它端口號(hào),如 8088。因?yàn)槟J(rèn)的80端口號(hào)很容易被其它應(yīng)用程序占用。

然后,通過(guò)上面命令重啟nginx。訪問(wèn):http://127.0.0.1:8088/

  

如果出現(xiàn)如上圖,說(shuō)明Nginx啟動(dòng)成功。 

二、安裝uwsgi                                                           

 通過(guò)pip安裝uwsgi。

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

測(cè)試uwsgi,創(chuàng)建test.py文件:

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

通過(guò)uwsgi運(yùn)行該文件。

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

接下來(lái)配置Django與uwsgi連接。此處,假定的我的django項(xiàng)目位置為:/home/fnngj/pydj/myweb

復(fù)制代碼 代碼如下:

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

常用選項(xiàng):

http : 協(xié)議類型和端口號(hào)

processes : 開啟的進(jìn)程數(shù)量

workers : 開啟的進(jìn)程數(shù)量,等同于processes(官網(wǎng)的說(shuō)法是spawn the specified number ofworkers / processes)

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

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

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

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

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

daemonize : 使進(jìn)程在后臺(tái)運(yùn)行,并將日志打到指定的日志文件或者udp服務(wù)器(daemonize uWSGI)。實(shí)際上最常用的,還是把運(yùn)行記錄輸出到一個(gè)本地文件上。

pidfile : 指定pid文件的位置,記錄主進(jìn)程的pid號(hào)。

vacuum : 當(dāng)服務(wù)器退出的時(shí)候自動(dòng)清理環(huán)境,刪除unix socket文件和pid文件(try to remove all of the generated file/sockets)

三、Nginx+uwsgi+Django                                        

接下來(lái),我們要將三者結(jié)合起來(lái)。首先羅列一下項(xiàng)目的所需要的文件:

myweb/

├── manage.py

├── myweb/

│  ├── __init__.py

│  ├── settings.py

│  ├── urls.py

│  └── wsgi.py

└── myweb_uwsgi.ini

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

# myweb_uwsgi.ini file
[uwsgi]

# Django-related settings

socket = :8000

# the base directory (full path)
chdir      = /home/fnngj/pydj/myweb

# Django s wsgi file
module     = myweb.wsgi

# process-related settings
# master
master     = true

# maximum number of worker processes
processes    = 4

# ... with appropriate permissions - may be needed
# chmod-socket  = 664
# clear environment on exit
vacuum     = true

這個(gè)配置,其實(shí)就相當(dāng)于在上一小節(jié)中通過(guò)wsgi命令,后面跟一堆參數(shù)的方式,給文件化了。

socket  指定項(xiàng)目執(zhí)行的端口號(hào)。

chdir   指定項(xiàng)目的目錄。

module  myweb.wsgi ,可以這么來(lái)理解,對(duì)于myweb_uwsgi.ini文件來(lái)說(shuō),與它的平級(jí)的有一個(gè)myweb目錄,這個(gè)目錄下有一個(gè)wsgi.py文件。

其它幾個(gè)參數(shù),可以參考上一小節(jié)中參數(shù)的介紹。

接下來(lái),切換到myweb項(xiàng)目目錄下,通過(guò)uwsgi命令讀取myweb_uwsgi.ini文件啟動(dòng)項(xiàng)目。

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:41
os: Linux-3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015
nodename: ubuntu
machine: i686
clock source: unix
detected number of CPU cores: 2
current working directory: /home/fnngj/pydj/myweb
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /home/fnngj/pydj/myweb
your processes number limit is 15962
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address :8000 fd 3
Python 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 0x8b52dc0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 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的啟動(dòng)信息,如果有錯(cuò),就要檢查配置文件的參數(shù)是否設(shè)置有誤。

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

……
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對(duì)外的端口號(hào)。

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

在進(jìn)行配置的時(shí)候,我有個(gè)問(wèn)題一直想不通。nginx到底是如何uwsgi產(chǎn)生關(guān)聯(lián)?,F(xiàn)在看來(lái)大概最主要的就是這兩行配置。

include uwsgi_params;

uwsgi_pass 127.0.0.1:8000;

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

現(xiàn)在重新啟動(dòng)nginx,翻看上面重啟動(dòng)nginx的命令。然后,訪問(wèn):http://127.0.0.1:8099/

通過(guò)這個(gè)IP和端口號(hào)的指向,請(qǐng)求應(yīng)該是先到nginx的。如果你在頁(yè)面上執(zhí)行一些請(qǐng)求,就會(huì)看到,這些請(qǐng)求最終會(huì)轉(zhuǎn)到uwsgi來(lái)處理。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實(shí)現(xiàn)

    Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實(shí)現(xiàn)

    本文主要介紹了Nginx $remote_addr和$proxy_add_x_forwarded_for變量的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持

    Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持

    這篇文章主要介紹了Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持,使用Nginx運(yùn)行ThinkPHP的必備配置,需要的朋友可以參考下
    2015-07-07
  • 詳解如何基于Nginx搭建流媒體服務(wù)器

    詳解如何基于Nginx搭建流媒體服務(wù)器

    Nginx RTMP是一個(gè)Nginx插件,支持將RTMP和HLS流添加到媒體服務(wù)器,本文將以u(píng)buntu為例為大家介紹一下如何安裝使用nginx Rtmp 插件的步驟,需要的可以參考下
    2023-10-10
  • Nginx的nginx.conf配置文件中文注釋說(shuō)明

    Nginx的nginx.conf配置文件中文注釋說(shuō)明

    這篇文章主要介紹了Nginx的nginx.conf配置文件中文注釋說(shuō)明,本文是個(gè)人注釋版,在生產(chǎn)環(huán)境中經(jīng)常使用,需要的朋友可以參考下
    2014-12-12
  • Nginx Linux安裝部署詳細(xì)教程

    Nginx Linux安裝部署詳細(xì)教程

    這篇文章主要介紹了Nginx Linux安裝部署詳細(xì)教程,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Nginx配置網(wǎng)站適配PC和手機(jī)的幾種方法

    Nginx配置網(wǎng)站適配PC和手機(jī)的幾種方法

    在開發(fā)中,我們常常會(huì)遇到需要根據(jù)用戶設(shè)備的不同,返回對(duì)應(yīng)樣式的頁(yè)面,本文主要介紹了Nginx配置網(wǎng)站適配PC和手機(jī)的幾種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Nginx中roxy_set_header與add_header區(qū)別舉例淺析

    Nginx中roxy_set_header與add_header區(qū)別舉例淺析

    proxy_set_header是一個(gè) Nginx 配置指令,用于設(shè)置將要轉(zhuǎn)發(fā)到后端服務(wù)器的 HTTP 請(qǐng)求頭,這篇文章主要給大家介紹了關(guān)于Nginx中roxy_set_header與add_header區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Nginx 負(fù)載均衡是什么以及該如何配置

    Nginx 負(fù)載均衡是什么以及該如何配置

    這篇文章主要介紹了Nginx 負(fù)載均衡是什么以及該如何配置,幫助大家更好的理解和使用Nginx服務(wù)器,感興趣的朋友可以了解下
    2021-01-01
  • Nginx配置編寫時(shí)支持邏輯運(yùn)算與大小寫字母轉(zhuǎn)換的方法

    Nginx配置編寫時(shí)支持邏輯運(yùn)算與大小寫字母轉(zhuǎn)換的方法

    這篇文章主要介紹了Nginx配置編寫時(shí)支持邏輯運(yùn)算與大小寫字母轉(zhuǎn)換的方法,其中大小寫字母轉(zhuǎn)換是以lower upper case模塊來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2016-01-01
  • Windows?Server?Nginx?反向代理Spring?Boot配置無(wú)效報(bào)404未找到的問(wèn)題

    Windows?Server?Nginx?反向代理Spring?Boot配置無(wú)效報(bào)404未找到的問(wèn)題

    一個(gè)Spring?Boot的系統(tǒng),開發(fā)完成發(fā)布到Windows服務(wù)器里,使用nginx作為反向代理,修改刷新配置文件,nginx.conf,總是報(bào)錯(cuò)404,這篇文章主要介紹了Windows?Server?Nginx?反向代理Spring?Boot配置無(wú)效?404?未找到的問(wèn)題及解決方案
    2024-01-01

最新評(píng)論

沈丘县| 海原县| 定日县| 宁晋县| 海兴县| 兴和县| 普兰县| 乡宁县| 突泉县| 兴化市| 景洪市| 伽师县| 开化县| 额敏县| 石家庄市| 昌都县| 海盐县| 皮山县| 广饶县| 泽库县| 遂平县| 新巴尔虎右旗| 于都县| 新邵县| 嘉兴市| 太湖县| 乾安县| 兰考县| 洱源县| 开封市| 灌南县| 措勤县| 偃师市| 宜兴市| 曲水县| 临澧县| 佛教| 平武县| 黑山县| 资源县| 孝义市|