Django+Nginx概念安裝和使用–使用Django建立你的第一個網站
- 2019 年 10 月 3 日
- 筆記
一 前記
最近在使用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的終端一旦關掉或者這個進程被殺死,後台馬上掛掉了。還有一個就是自己的網站怎麼後面有一個埠號呢?為什麼很多商用的網站沒有呢?百度有嗎?Google有嗎?到底是怎麼做到的呢?
這個就是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.html