如何佈署Django專案到apache上

首頁 >> 結帳英文 >> 如何佈署Django專案到apache上

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

這樣就完工了?

如果上面描述設定都沒問題的話,

當然最好,

但通常都不會這麼順利的。

此外,為了方便在 Server 上部署專案,

可透過:

pip freeze > requirements.txt
將目前專案中安裝的套件都存到 requirements.txt ,
要使用的時候,
則打上:
pip install -r requirements.txt

舉例來說: 通常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中,

故專案上線的話, 還是得多花點時間試驗看看


如果有多個 Django 專案在同一台伺服器上跑, 記得將專案的 wsgi.py 改為底下:

os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"


另外還有一個簡單的方法: 就是在 apache 設定中加上紅框中的兩行設定

將 WSGIDaemonProcess 與 WSGIProcessGroup兩組設定加入,

這樣網站應該就能使用。



================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

1 Response

  1. 2019-12-18

    […] 詳細步驟可參照之前提到的如何部署Django專案到apache上。 […]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *