將Django 加至apache 上 on Ubuntu 16
2017 年 12 月 22 日
首先說說為什麼大家不用Django內建的測試用網路伺服器當作正式的伺服器呢?
- 效能
- 安全
簡單來說就是這兩點,詳細的差異網路上也很有多人在說明,這邊就不多說了。
那麼直接開始今天的內容,以下分成五大部分:
- 安裝網路伺服器
- 安裝apach的django mod
- 調整專案中的wsgi.py內容
- 調整apach2設定
第一部分 安裝網路伺服器
這邊就是使用lamp沒有什麼特別的,安裝方式請參閱ubuntu server template 建置,這邊附上簡單指令不多說!
Lamp #安裝 lamp-server sudo apt install lamp-server^
第二部分 安裝apach的django mod
安裝方式是通過apt-get,並且安裝完後要求網路伺服器使用,指令如下:
mod-wsgi sudo apt-get install libapache2-mod-wsgi sudo a2enmod wsgi
第三部分 調整專案中的wsgi.py內容
這邊我提供範例檔案,記得要調整路徑至自己要執行的Django路徑,並且也要開放該資料夾的外部取用權限,然後記得要將自己的檔案位置加入至環境路徑。(Django範例檔案,需要請服用)
#/path/to/DjangoForWulab/Django/myproject/myproject/wsgi.py import os from django.core.wsgi import get_wsgi_application # GETTING-STARTED: change 'myproject' to your project name: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") application = get_wsgi_application() import os, sys sys.path.append('/path/to/DjangoForWulab/Django/myproject/') sys.path.append('/path/to/DjangoForWulab/Django/') sys.path.append('/path/to/DjangoForWulab/') import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
第四部分 調整apach2設定
首先至/etc/apache2/conf-available新增一個設定檔,命名為wsgi.conf,(需要先用chmod開啟權限或是用root權限),然後內容如下,也切記要調整路徑。
#/etc/apache2/conf-available/wsgi.conf WSGIScriptAlias /Django /path/to/DjangoForWulab/Django/myproject/myproject/wsgi.py WSGIPythonPath /path/to/DjangoForWulab/Django/myproject/ WSGIApplicationGroup %{GLOBAL} <Directory "/path/to/DjangoForWulab/Django/myproject/myproject/"> <Files "wsgi.py"> Require all granted </Files> </Directory>
WSGIScriptAlias 後面接的第一個參數是設置django的根目錄位置,若要使用”/”也可,只是要小心php與phpmyadmin要調整至別的路徑否則將不能使用。
最後只要執行讀取設定與重起網路伺服器的命令即可。
sudo a2enconf wsgi sudo service apache2 restart