Apache+PHP+Python(Django框架)搭建成功
前天把Apache+PHP伺服器搭好了,還通過配置VirtualHost實現了“分流”,也就是為今天上Django框架做好了準備。
現在我的成果是這樣的:
(1) /etc/apache2/sites-available/000-default.conf 中配置VirtualHost,80埠給php,8000埠給Django
(2) /var/www/php 用來放置php專案,/var/ww/django用來放置Django專案
下面說下今天怎麼配置Django框架的。
參考1:自強學堂塗偉忠老師的教程 http://www.ziqiangxuetang.com/django/django-deploy.html
參考2:某學長的經驗 http://www.jianshu.com/p/b40a4a12fff1
我的配置:Apache 2.4.18,Python3,Django 1.8.16
又說了一堆廢話,現在進入正題!!!
1. 準備工作:安裝Django
具體而言,你得先裝好Python,現在Python 3出來了就用3吧,這個我就不細說了。
然後就是裝Django了,而安裝Django的最簡單方法就是使用pip工具,這個也不難,apt-get install python3-pip就好(Python2的就換成python-pip)。
最後就是安裝Django啦,命令列輸入pip3 install Django==1.8.16就行了。為什麼是1.8.16?因為我也不打算定期更新Django,就用1.8這個LTS版本了,而1.8.16剛好是現在1.8.x中的最新版本而已。
第一次用pip安裝Django時下載到一半就報錯中止了,隨手再裝一次就好了,也沒管剛剛到底啥問題。
2. 準備工作:安裝libapache2-mod-xx(一個讓Apache支援某種語言的模組)
安裝php7的時候不是裝過libapache2-mod-php7.0嗎?這就對了,現在要支援Python3也得裝個libapache2-mod-wsgi-py3。也就是:
apt-get install libapache2-mod-wsgi-py3
對應地,Python2就是sudo apt-get install libapache2-mod-wsgi。(對,後面沒有-py2不要問我為什麼)
3. 建立一個Django專案
切換到/var/www/django目錄下,輸入命令建立一個名為testDjango的專案:
django-admin startproject testDjango
然後順手新建兩個目錄吧,可能以後要用來放css和使用者檔案呢:
mkdir static
mkdir media
確切地說,每一個Django專案都是一個網站,都需要配置自己的VirtualHost,所以前面說配置Django框架的說法是不準確的,每次部署Django專案都需要做一遍接下來的步驟。另外,每個Django專案都放在/var/www/django下也不太科學,還是直接放/var/www下好了。
4. 配置VirtualHost
經過前天的驗證,一個IP不同埠可以分配給不同的網站專案。我這裡就用8000埠給testDjango這個專案配置一下:
Listen 8000
<VirtualHost *:8000>
ServerAdmin [email protected]
DocumentRoot /var/www/django
Alias /media/ /var/www/django/testDjango/media/
<Directory /var/www/django/testDjango/media>
Require all granted
</Directory>
Alias /static/ /var/www/django/testDjango/static/
<Directory /var/www/django/testDjango/static>
Require all granted
</Directory>
WSGIScriptAlias / /var/www/django/testDjango/testDjango/wsgi.py
<Directory /var/www/django/testDjango/testDjango>
<FILES wsgi.py>
Require all granted
</FILES>
</Directory>
</VirtualHost>
我的專案叫testDjango,放在/var/www/django目錄下,讀者請根據自己情況作出替換。最重要的是wsgi.py這一塊,引用學長的話就是“通過wsgi.py讓Apache識別這是一個Django工程”。
塗老師的教程中提到,如果Apache版本是2.2.x,需要用下面兩行來代替Require all granted:
Order deny,allow
Allow from all
就醬。
5. 修改wsgi.py
還沒完呢,用學長的話來說,“Apache那邊改好配置了,同意和Django專案交往了,而Django專案這邊也得給點反應啊”。
切換到專案testDjango的目錄下,裡面還有一個同名的目錄,進去,看到wsgi.py了
import os
from os.path import join, dirname, abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0, PROJECT_DIR)
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testDjango.settings")
application = get_wsgi_application()
這個……我也不懂,照做就是了,把該換的地方換了(倒數第二行)。最後,重啟Apache!!!6. 收尾工作:看看Django能不能執行
配置工作其實已經做完了,瀏覽器訪問127.0.0.1:8000,應該會出現Django的It works頁面,這就OK啦。(出錯了?重啟Apache了嗎?)
什麼?你不放心?非得新建一個app來嘗試?那你儘管嘗試吧,不過我的經驗是後面出的么蛾子都是Django專案的語法問題。科科。
=============================Any question? END================================