在Linux機器上配置NUD

博文實踐操作平臺:

ubuntu10.10

   如果說要簡單的部署基於Django框架的web服務,大抵apache+mod_python就夠了。但是apache+fastcig部署的模式由於自身的侷限性,使得這種部署方式只適用於併發量少的性能要求較低的服務。現在市場上比較流行的另一種呢?從一定程度上說,它可以解決apache+mod_python這種方式的部分缺陷。這就是nginx+uwsgi+Django.

   如果說你已經瞭解NUD的好處,並打算從頭開始學習它,那麼我的分享可能值得你一試。

   我還是先來簡單講一下NUD個各部分之間的關係吧;

NGINX:這是一個可以獨立運行的web服務器。它上面不僅可以跑web服務,而且還可以跑mail或者其他服務(沒試驗配置過)。上網收一下你就會知道。NGNIX會有諸多好的性能。在這兒NGINX就是一個簡單的web服務器。注意:他不是tomcat那樣是個容器,它不是容器!!!至於它的特殊之處我後面會說;

UWSGI:uwsgi是CGI的一種。也是可以獨立運行的。自然是一種類CGI,那麼自然他能給處理我們的請求。並啓動DJango框架。

DJango:開發框架。

三者之間的關係是怎麼樣的呢?

首先,服務器跑着nginx,ugwsi(它們都是獨立運行的嘛,裝上就可以啓動了)。如果你已經配置NUD了。當這兩個服務啓動的時候。基於Django開發的APP將被UWSGI服務Hood住。當一個請求到達Nginx的時候。nginx接受該請求。並在我們的配置文件中找到請求的URI是要被轉向UWSGI服務。那麼這個服務將被格式化後轉到UWSGI了。

UWSGI收到該格式化的請求後呢? 它將會啓動新的進程(有可能是進程池裏面調度一個)去解析我們的請求。

UWSgI在啓動的時候,它會監聽在本地的某個端口,可能是UNIX套接字。負責接受Nginx轉過來的請求。那麼爲什麼還要使用nginx呢,單端運行uwsgi不行嗎?這肯定是不行的。首先,nginx可以爲我們提供它的很多優秀的性能。比如說抵消後,高併發,以及良好的負載均衡性能。其次,uwsgi是類CGI的一種,他接受的是標準的請求格式,它不能直接接受我們發出的HTTP請求。

大概瞭解的一下原理,下面就是一些基本的配置:

首先要配置的是uwsgi,這裏需要創建uwsgi的配置文件,在django的根目錄添加一個.xml文件,可以命名爲config.xml.寫入如下內容:

<?xml versiong="1.0" encodong:"utf-8"?>

<uwsgi>

  <socket>127.0.0.1:9999</socket>

  <module>wsgi</module>

</uwsgi>

其中127.0.0.1:9999是uwsgi啓動是監聽的地址。這兒是本機的9999端口。

Module就是app中需要給出的官員怎麼讓uwsgi來hook住django app;

我現在在同一目錄下面新建一個wsgi.py的文件。寫入如下Python代碼:

import os,sys

if not os.path.dirname(__file__) in sys.path[:1]:

    sys.path.insert(0,os.path.dirname(__file__))

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from django.core.handlers.wsgi import WSGIHandler

application = WSGIHandler()

 

這裏面,需要將app的settings全局配置模塊假如到PYTHON_PATH.一邊Py解釋器能夠找到。然後改腳本創建一個SGI處理器。當我們啓動UWSGI服務的時候將我們創建的配置文件指定給服務進程。那麼UWSGI服務就能Hook住app了。

接下來配置nginx:

1,找到NGINX的配置我恩見nginx.conf,通過apt安裝的服務程序中,這個爲文件位於:

/etc/nginx/nginx.conf

如果只是簡單的使用,不做服務器性能優化,不做負載均衡和其他高級操作。僅僅是使這個web跑起來。那麼只需要在這個文件中加入一個虛擬主機配置節點就行了:

server{

    listen 80;

    index index.html

    location /{

        uwsgi_pass 127.0.0.1:9999;

        include uwsgi_params;

    }

}

需要說明一下,listen端口中,如果要對客戶端開放web服務。那麼直接寫80即可。如果只對本機或者某機器開發。那麼需要這樣ip:port

index 不用講了是索引

location 節點是告訴我們這麼處理特定的請求。本配置例子中對所有80端口的請求都會轉向uwsgi服務。127.0.0.1:9999就是我在congfig.xml中的配置地址了。

 

最後就是這樣啓動服務了:

1,啓動uwsgi服務,運行如下命令:

uwsgi -x config.xml文件的路徑--絕度路徑

 

2,啓動nginx,運行如下命令:

nginx

或者 service nginx start

完畢!

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