Django就是網站的框架,
利用Django建立的專案,
最終目的就是上線運行,
所以今天就來教大家
如何佈署Django專案到apache上
首先要先安裝apache套件
sudo apt-get install libapache2-mod-wsgi-py3
WSGI全名Web Server Gatway Interface,
它是一種規範,
定義了server與web application之間的連接,
簡單的說,
wsgi是一個橋樑,
一邊連結web server,
另一邊則是連接web application
接著找到/etc/apache2/sites-available
新增一個conf檔案給新網站
內容大致為:
ServerName 新站的domain name
ServerAdmin 管理者信箱
Alias /static/ 靜態檔案的絕對路徑
Require all granted
WSGIScriptAlias / 專案的絕對路徑/wsgi.py
Require all granted
最後就是設定好wsgi.py
這樣就完工了?
如果上面描述設定都沒問題的話,
當然最好,
但通常都不會這麼順利的,
舉例來說:
通常IDE是用來加速開發速度的,
所以利用Pycharm所預設的wsgi設定應該就能馬上佈署上線才對,
其實不然,
一個Pycharm專案預設的wsgi.py長的如底下:
實際上還得加上專案的絕對路徑,
網站才能正常上線
import os
import sys
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
sys.path.insert(0,PROJECT_DIR)
sys.path.append('專案絕對路徑/venv/lib/python3.5/site-packages')
from django.core.wsgi import get_wsgi_application
os.environ['DJANGO_SETTINGS_MODULE'] = 'test1.settings'
application = get_wsgi_application()
這樣的寫法並不是絕對的,
甚至部份的設定可移至apache的網站conf中,
故專案上線的話,
還是得多花點時間試驗看看
另外還有一個簡單的方法:
就是在 apache 設定中加上紅框中的兩行即可
如果有多個 Django 專案在同一台伺服器上跑,
記得將專案的 wsgi.py 改為底下:
os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"