python初試七
前面的文章研究了Django最主要的幾個方面:資料庫,模板,動態生成頁面等。但都是使用python manage.py runserver來執行伺服器。這是一個實驗性的web伺服器,不適用於正常的站點執行。我們需要一個可以穩定而持續的伺服器。這個伺服器負責監聽http埠,將收到的請求交給Django處理,將Django的回覆發還給客戶端。
這樣的持續伺服器可以有很多選擇,比如apache, Nginx, lighttpd等。這裡將使用最常見的apache伺服器。伺服器和Django之間透過Python的web服務介面WSGI連線,因此我們同樣需要apache下的mod_wsgi模組。
下面的配置和說明,是在Ubuntu 13.10下進行的。在其它系統下將有所差別。
安裝
首先需要安裝apache2和mod_wsgi。在ubuntu下,我們可以使用apt-get安裝:
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi
mod_wsgi也可以在google code下載,自行編譯安裝。
在apache的配置檔案/etc/apache2/apache2.conf中增加下面的配置:
# Django WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py WSGIPythonPath /home/vamei/mysite <Directory /home/vamei/mysite/mysite> <Files wsgi.py> Order deny,allow Require all granted </Files> </Directory>
上面的配置中/home/ubuntu/mysite是Django專案所在的位置。而/home/ubuntu/mysite/mysite/wsgi.py是Django專案中z自動建立的檔案。
可以看到,利用WSGIScriptAlias,我們實際上將URL /對應了wsgi介面程式。這樣,當我們訪問根URL時,訪問請求會經由WSGI介面,傳遞給Django專案mysite。
配置好後,重啟apache2
靜態檔案
Django的主要功能是動態的生成HTTP回覆。很多媒體檔案是靜態儲存的,如.js檔案,.css檔案和圖片檔案。這些檔案變動的頻率較小。我們希望靜態的提供這些檔案,而不是動態的生成。這樣既可以減小伺服器的負擔,也便於在瀏覽器快取,提高使用者體驗。
我們可以在apache2.conf中新增如下配置:
Alias /media/ /home/vamei/media/ Alias /static/ /home/vamei/static/ <Directory /home/vamei/static/> Order deny,allow Require all granted </Directory> <Directory /home/vamei/media/> Order deny,allow Require all granted </Directory> # Django WSGIScriptAlias / /home/vamei/mysite/mysite/wsgi.py WSGIPythonPath /home/vamei/mysite <Directory /home/vamei/mysite/mysite/ > <Files wsgi.py> Order deny,allow Require all granted </Files> </Directory>
這樣,/static/和/media/這兩個URL的訪問將引導向存有靜態檔案的/home/vamei/static/和/home/vamei/media/,apache將直接向客戶提供這兩個資料夾中的靜態檔案。而剩下的URL訪問,將導向WSGI介面,由Django動態處理。
在/home/vamei/static/中放入檔案revenge.jpg,訪問:
其它
雲平臺或者伺服器的部署是一個大的課題,這裡無法深入到所有的細節。幸運的是,在網上有豐富的資料。你可以根據自己的平臺和問題,搜尋相應的資料。
在Django的debug模式下,我們可以在app資料夾中建立static目錄,放入靜態檔案。Django將自動搜尋到其中的靜態檔案。但這一方法有很大的安全隱患,只適用於開發。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70026630/viewspace-3002413/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 初試PythonPython
- python初試Python
- python初試二Python
- python初試三Python
- python初試四Python
- python初試五Python
- python初試六Python
- 初學Python(七)——控制語句Python
- Python爬蟲初試Python爬蟲
- Python呼叫MySQL模組初試PythonMySql
- python綜合學習七之TensorFlow初識Python
- Python Scrapy 爬蟲(二):scrapy 初試Python爬蟲
- Python 基礎起步 (七) 初識字典 Dictionary(絕命毒師前傳)Python
- 初試python的socket程式設計--ftpPython程式設計FTP
- Python 快速教程(Django01):初試天涯PythonDjango
- HTML初學者指南(七)(轉)HTML
- SAP UI5 初學者教程之七 - JSON 模型初探試讀版UIJSON模型
- Kafka初試Kafka
- github 初試Github
- 初試 GithubGithub
- 初試Gevent – 高效能的Python併發框架Python框架
- 騰訊前端初試前端
- Rust: tokio初試Rust
- Vue + GraphQL初試Vue
- 初嘗試swiftSwift
- sqlite 小刀 初試SQLite
- 給初學者的RxJava2.0教程(七)RxJava
- 初學者必看的JavaScript 七大點!JavaScript
- Accessability 專案初試
- 初學PythonPython
- 初識pythonPython
- 第七項——測試程式
- JavaScript初學者應注意的七個細節JavaScript
- 2020年焊工(初級)考試試題及焊工(初級)考試軟體
- PHP 初級 試崗要求PHP
- 初試MongoDB資料庫MongoDB資料庫
- 阿里雲IoT初試阿里
- Swift 3 0 FMDB 初試Swift