1. 程式人生 > >Django+Nginx概念安裝和使用–使用Django建立你的第一個網站

Django+Nginx概念安裝和使用–使用Django建立你的第一個網站

一 前記

  最近在使用Django倒騰屬於自己的網站,由於以前沒有接觸過多少這類資訊,所以,很多東西都是從零開始學習的。在參考網上的資料時候,發現很多對這方面記錄的,很多人都寫的不是很清楚,也許我這個新手的原因。反正自己是看不懂的。對著很多操作流程來進行建站,嘗試了很多次才算是成功。本著前人栽樹,後人乘涼的原則。鄙人就把自己的操作流程記錄下來了。希望對第一次安裝並使用Nginx的人有價值。寫的不好的地方也多請高手指點。

二 為什麼要用Nginx?

  官方答案:Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用nginx網站使用者有:百度、京東、新浪、網易、騰訊、淘寶等。

  通俗理解:Nginx就是讓你的IP:埠的組合變成一個方便你搜索的網址:比如,百度的網址:www.baidu.com Nginx裡面的就是對應的:23.123.12.34:8001(隨便一個IP地址做例子),並且它還有別的價值,比如,不容易短線,網站訪問速度快,併發能力強嘛。
  在使用Django建站的時候,一般使用:python manage.py 0.0.0.0:8001 這樣是可以起動網頁了,輸入:http://127.0.0.1:8001 你就會發現自己的網頁已經成功的顯示了。接下來,你會發現有兩個問題:一個是隻要執行:python manage.py 0.0.0.0:8001的終端一旦關掉或者這個程序被殺死,後臺馬上掛掉了。還有一個就是自己的網站怎麼後面有一個埠號呢?為什麼很多商用的網站沒有呢?百度有嗎?谷歌有嗎?到底是怎麼做到的呢?
這個就是Ningx + uwsgi做的事情了。

三 Nginx安裝和配置

  一般有幾種安裝方式:
命令列安裝:本人的是mac。安裝的方式就是:brew install nginx
  還有一個就是所有系統都通用的原始碼安裝方式:
去網站:http://nginx.org/download/下載所需的版本,一般是最新的。使用命令安裝:

tar zxf nginx-1.0.8.tar.gz
cd nginx-1.0.8
./configure ./configure --add-module=path/substitutions4nginx-read-only //注意這裡的path是相對應的真實路徑
make
make install

  接下來就是配置nginx了,這裡有很多配置方法,估計要把每項都弄清楚需要花一些時間,本人就只是做簡單的安裝並測試,所以,配置就比較簡單了。主要注意的就是server_name 和uswgi_params 本人的server內容如下:

    server {
        listen       80;
        server_name  localhost; //localhost or your web address

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            uwsgi_pass 127.0.0.1:8008; // ip addr and port is your open ip or loopback 127.0.0.1
            include uwsgi_params;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

  假如你找不到nginx.conf在哪兒,就直接使用locate nginx.conf檢視一下吧。我的路徑是:/usr/local/etc/nginx/nginx.conf

四 uwsig使用配置檔案啟動

  uwsgi在上篇文章中已經有介紹了,這裡就不多做分析了,這裡就直接使用吧。在和manage.py同級目錄下建立:helloapp.wsgi 並填入下面內容,切記,檔案的路徑要改成自己工程的。

[uwsgi]
# 專案
chdir=/Users/Documents/igihub/django/django_example/helloapp/
# 指定專案的application
module=helloapp.wsgi:application
# 指定sock的檔案路徑
socket=/Users/Documents/igihub/django/django_example/helloapp/script/uwsgi.sock
# 程序個數
workers=5
pidfile=/Users/Documents/igihub/django/django_example/helloapp/script/uwsgi.pid
# 指定IP埠
socket=127.0.0.1:8008
# 指定靜態檔案
#static-map=/static=/opt/proj/teacher/static
# 啟動uwsgi的使用者名稱和使用者組
uid=root
gid=root
# 啟用主程序
master=true
# 自動移除unix Socket和pid檔案當服務停止的時候
vacuum=true
# 序列化接受的內容,如果可能的話
thunder-lock=true
# 啟用執行緒
enable-threads=true
# 設定自中斷時間
harakiri=30
# 設定緩衝
post-buffering=4096
# 設定日誌目錄
daemonize=/Users/Documents/igihub/django/django_example/helloapp/script/uwsgi.log

五 啟動載入

  一切都準備就緒了。這之後,直接執行:
sudo nginx && uwsgi --int uwsgi.wsgi 即可跑起來了。
  在網頁中輸入:
http://localhost 即可看到你需要顯示的網頁內容,這時你會發現埠號已經不存在了,直接kill掉wsgi發現也沒有那麼容易了。這個就是nginx + uwsgi的神奇價值所在。
  這個雖然只是一個簡單的應用,但是對於新手,還是會有很多是搞不定,多上網搜尋,多請教問題。計算機是一門實踐性很強的學科,實踐的多了,你就能倒騰出來東西了。

 

參考文件:

1 https://www.cnblogs.com/MacoLee/p/5889122.