1. 程式人生 > >Apache+PHP+Python(Django框架)搭建成功

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================================