您好,登錄后才能下訂單哦!
這篇文章主要介紹了將本地django項目上傳到apache的方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
Django部署到Apache上,步驟如下
安裝必要的包
sudo apt-get update sudo apt-get install python-pip apache2 libapache2-mod-wsgi
然后還要保證WSGI模塊在運行:
sudo a2enmod wsgi
配置Python虛擬環(huán)境
為了不要修改系統(tǒng)python,事實上我懷疑系統(tǒng)python和xampp的庫對不上有可能這樣可以解決
安裝工具:
sudo pip install virtualenv
進入我們的project目錄,新建環(huán)境:
virtualenv myprojectenv
進入虛擬環(huán)境安裝python包:
source myprojectenv/bin/activate
然后命令行應(yīng)該會長這樣:
(myprojectenv)user@host:~/myproject$
安裝django和django rest_framework
pip install django==1.8 pip install djangorestframework==3.6.4
注意: django2開始就不支持python2了,所以要安裝低級一點的,但是如果djangorestframework不安裝低級一點的話會有匹配不上的
修改apache配置文件/etc/apache2/sites-available/000-default.conf
修改對于Django項目的路徑,這次我們使用守護進程模式,主要需要保留三行:WSGIDaemonProcess,WSGIProcessGroup,和WSGIScriptAlias
```sh # 這是靜態(tài)文件配置 Alias /demos/todolist/static/ /root/web/demos/todolist/work/static/ #Order deny,allow #Allow from all Require all granted <Files wsgi.py> Require all granted WSGIDaemonProcess python-home=/root/web/demos/todolist/tdlenv python-path=/root/web/demos/todolist WSGIProcessGroup WSGIScriptAlias /demos/todolist /root/web/demos/todolist/todolist/wsgi.py process-group= 一個Django項目的結(jié)構(gòu)一般是這樣的: ProjectName -- ProjectName ---- wsgi.py -- AppName ---- static ```
注意有兩個名字一樣的文件夾,別搞混了
靜態(tài)文件配置:
第一行為Alias <URL Path> <FILE PATH>
<URL Path>的含義和上面一樣,從此http://hostname/<URL PATH>/就是訪問靜態(tài)文件夾<FILE PATH>的路徑
第二行為<Directory <FILE PATH> >,填的還是靜態(tài)文件夾的路徑
修改Django的代碼
wsgi.py,直接用生成的
setting.py
為了放到生產(chǎn)環(huán)境上,可以把DEBUG關(guān)了,同時ALLOWED_HOST要修改一下以便外界可以訪問:
```python # SECURITY WARNING: don't run with debug turned on in production! DEBUG = False # ALLOWED_HOSTS = ['*'] # 不建議寫這個 ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'your ip', 'your hostname'] # 一般寫這4個 ```
靜態(tài)路徑需要修改
```python # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ STATIC_URL = '/demos/todolist/static/' ``主要是要與Alias 里的`保持一致
在prod里調(diào)試
有很多時候本地服務(wù)器上可,到了server上就有bug,但是卻不知道是哪里的bug,這個時候需要打印一些必要的信息。
最簡單的方式就是將信息打印到stderr,這樣wsgi的log會記錄在Apache的error_log里:
import sysprint >> sys.stderr, message
關(guān)于Sqlite3的權(quán)限配置
這個問題下有比較全的情況,翻譯過來如下,對db.sqlite3數(shù)據(jù)庫來說:
確保Apache可以寫數(shù)據(jù)庫的父目錄 確保數(shù)據(jù)庫的完整路徑上的文件夾不以數(shù)字開頭 確保完整路徑上沒有db文件夾 確保/tmp文件夾在三個級別上都可寫 確保settings.py里寫的是完整路徑 確保路徑上沒有特殊字符
在WINDOWS上,路徑要寫成雙反斜杠
最后:
重啟Apache!?。。。。。?!
每次修改python源碼也要重啟?。。。。〔蝗籛SGI會用原來的代碼??!
感謝你能夠認真閱讀完這篇文章,希望小編分享將本地django項目上傳到apache的方法內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。