django 是 python 開源的 web 架構 ,django 本身運作後也是一個輕量級的伺服器,可以滿足本地的測試,生産環境中的 大量通路, 一般和nginx 和 apache 結合。下面以 Django 與nginx 結合為例進行部署
1、 部署環境
作業系統:Ubuntu 16.04.2
nginx 版本:nginx/1.10.3
2、部署原理
client----》nginx ----》socket ----》uwsgi----》Django
3、安裝步驟
3.1 安裝 nginx
apt-get install nginx
systemctl start nginx
測試 Nginx
3.2 安裝 uwsgi
pip install uwsgi
在opt 下面建立 test.py 測試 uwsgi 是否正常安裝
1
2
3
4
<code>#!/usr/bin/env python</code>
<code>def</code> <code>application(env,start_response):</code>
<code> </code><code>start_response(</code><code>'200 OK'</code><code>, [(</code><code>'Content-Type'</code><code>,</code><code>'text/html'</code><code>)])</code>
<code> </code><code>return</code> <code>[</code><code>"Hello World"</code><code>]</code>
測試 :
uwsgi --http:8000 --wsgi-file test.py
通路 ip:8000,uwsgi 測試成功
3.3 Nginx+uwsgi+django
上傳 django 項目至 OurCMDB
建立 OurCMDB_uwsgi.ini 配置檔案
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<code>#OurCMDB_uwsgi.ini</code>
<code>[uwsgi]</code>
<code># Django-related settings</code>
<code>socket = :8000 </code><code># socket 監聽端口,對應下文nginx 配置檔案 uwsgi_pass 監聽的端口号</code>
<code># the base directory (full path)</code>
<code>chdir = </code><code>/opt/OurCMDB/</code> <code>#項目目錄</code>
<code># Django s wsgi file</code>
<code>module = OurCMDB.wsgi </code><code>#wsgi.py 建立django 項目時已經生成 目錄 /opt/OurCMDB/OurCMDB/wsgi.py</code>
<code># process-related settings</code>
<code># master</code>
<code>master = </code><code>true</code>
<code># maximum number of worker processes</code>
<code>processes = 4 </code><code>#</code>
<code># ... with appropriate permissions - may be needed</code>
<code># chmod-socket = 664</code>
<code># clear environment on exit</code>
<code>vacuum = </code><code>true</code>
檢視項目下面的檔案
新增nginx 虛拟配置檔案
cat /etc/nginx/sites-available/OurCMDB_nginx.conf
<code>server {</code>
<code> </code><code>listen 8010; </code>
<code> </code><code>server_name _;</code>
<code> </code><code>charset UTF-8;</code>
<code> </code><code>access_log </code><code>/var/log/nginx/OurCMDB_access</code><code>.log;</code>
<code> </code><code>error_log </code><code>/var/log/nginx/OurCMDB_error</code><code>.log;</code>
<code> </code><code>client_max_body_size 75M;</code>
<code> </code><code>location / { </code>
<code> </code><code>include uwsgi_params;</code>
<code> </code><code>uwsgi_pass 127.0.0.1:8000; </code><code>#</code>
<code> </code><code>uwsgi_read_timeout 2;</code>
<code> </code><code>} </code>
<code> </code><code>location </code><code>/static</code> <code>{</code>
<code> </code><code>expires 30d;</code>
<code> </code><code>autoindex on; </code>
<code> </code><code>add_header Cache-Control private;</code>
<code> </code><code>alias</code> <code>/opt/OurCMDB/static/</code><code>; </code>
<code> </code><code>}</code>
<code> </code><code>}</code>
建立 軟連接配接 ln -s OurCMDB_nginx.conf ../sites-enabled/OurCMDB_nginx.conf
啟動
uwsgi --ini OurCMDB_uwsgi.ini
檢查Nginx 配置檔案
啟動nginx
通路測試 django
本文轉自 水滴石川1 51CTO部落格,原文連結:http://blog.51cto.com/sdsca/2044983,如需轉載請自行聯系原作者