先說明一下本人的環境:
Uwsgi版本:2.0.14(yum install安裝)
django版本:1.10.6(pip install安裝)
python版本:2.7.5(阿裡雲 centos 7自帶)
nginx版本:1.10.2(yum install安裝)
django目錄:/django/logan (project就叫logan,這個目錄不是mkdir!而是django-admin生成的)
現在我們通過yum下載下傳了nginx,然後直接啟動nginx,在浏覽器輸入外網網址就能看到nginx啟動成功的界面,如下:
<a href="https://s5.51cto.com/wyfs02/M01/8E/C5/wKiom1jKX6CxvQFHAACo3F-cMp0509.png" target="_blank"></a>
然後我們#cp /etc/nginx/uwsgi_params /django/logan,這樣目的是把uwsgi_params複制到我們的project檔案夾裡。然後在project裡,我們建立一個nginx的配置檔案,起名叫:mysite_nginx.conf,同時給這個conf檔案755的權限,整個mysite_nginx.conf的内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<code>events {</code>
<code> </code><code>worker_connections 1024; </code><code>## Default: 1024</code>
<code>}</code>
<code>http{</code>
<code>upstream django {</code>
<code> </code><code>server 127.0.0.1:8001; </code><code>#用uwsgi啟動的django是在8001端口</code>
<code>server {</code>
<code> </code><code>listen 8000;</code>
<code> </code><code>server_name 這裡填寫你的外網位址或者域名;</code>
<code> </code><code>charset utf-8;</code>
<code> </code><code>client_max_body_size 75M;</code>
<code> </code><code>location </code><code>/media</code> <code>{</code>
<code> </code><code>alias</code> <code>/django/logan/media</code><code>; </code><code>#設定mrdia的資源路徑</code>
<code> </code><code>}</code>
<code> </code><code>location </code><code>/static</code> <code>{</code>
<code> </code><code>alias</code> <code>/django/logan/static</code><code>; </code><code>#設定static的資源路徑</code>
<code> </code><code>location / {</code>
<code> </code><code>uwsgi_pass django;</code>
<code> </code><code>include </code><code>/django/logan/uwsgi_params</code><code>; </code><code>#我們剛寫的uwsgi_params的位址</code>
在/etc/nginx/sites-enabled目錄下建立該檔案的符号連接配接,使nginx能夠使用它:#ln -s /home/www-data/www/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/。
這個時候,我們下載下傳一個圖檔,我們選擇的圖檔就是金剛狼3的宣傳海報,但是我們加上一點自己的記号,于是這個圖檔就是這樣,我們在右上角加上了紅色小字(如有侵權,我會删除圖檔):
<a href="https://s1.51cto.com/wyfs02/M00/8E/C9/wKioL1jLWLSjEPccAAQgUXNy8dY931.jpg-wh_500x0-wm_3-wmp_4-s_3294772915.jpg" target="_blank"></a>
然後傳回到伺服器,在/django/logan下面mkdir 一個檔案夾叫media,把這個加工過的電影海報上傳到這個media檔案夾裡,起名叫logan.jpg。
然後我們#vim /django/logan/logan/settings.py,在這個py檔案末尾加上這麼一句話:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
然後運作一下#python manage.py collectstatic,就會出現
<code>You have requested to collect static files at the destination</code>
<code>location as specified </code><code>in</code> <code>your settings:</code>
<code> </code><code>/home/www-data/www/mysite/static</code>
<code>This will overwrite existing files!</code>
<code>Are you sure you want to </code><code>do</code> <code>this?</code>
<code>Type </code><code>'yes'</code> <code>to </code><code>continue</code><code>, or </code><code>'no'</code> <code>to cancel:</code>
這裡我們輸入yes,就會出現很多copying,這個過程的意思是:Django架構在建立項目時,預設提供了admin等接口,這會将Django架構中這些接口用到的一些靜态檔案,js,css等檔案,拷貝到項目的static目錄下。
然後我們就要測試一下nginx是否與django+uwsgi勾搭成功,首先我們先測試一下我們的mysite_nginx.conf的文法問題,使用指令:#nginx -c -t /etc/nginx/sites-enabled/mysite_nginx.conf,得到效果如下:
<a href="https://s2.51cto.com/wyfs02/M00/8E/CA/wKioL1jLWpeB6p3TAAA_XCIn8LA036.png" target="_blank"></a>
那麼我們就#nginx -c /etc/nginx/sites-enabled/mysite_nginx.conf,通過ps -ef檢視nginx程序已經啟動了。然後我們#uwsgi --plugin python --http-socket :8001 --chdir /django/logan/ --wsgi-file /django/logan/logan/wsgi.py 啟動django。
确定nginx和django都程序存在了之後,在浏覽器的位址欄裡,輸入“http://外網位址:8000/media/logan.jpg”,看一下效果吧!
<a href="https://s1.51cto.com/wyfs02/M00/8E/CC/wKiom1jLW5aCWqeCABVma0E1FMw120.png-wh_500x0-wm_3-wmp_4-s_1487091427.png" target="_blank"></a>
OK!!!至此确定media檔案已經可以正常通路。
參考資料:http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1907430