Debian+Django1.11+Apache2.4+mod_wsgi+python2.7搭建服務器

這兩天都在爲了搭建這個服務器而忙活着,遇到了很多坑,在網上參考了很多人的介紹,但是都不順利,所以說一說自己的過程,爲以後的人提供一下幫助。

先說一下最終效果,我之前一直不知道搭建成功是什麼樣子,因爲我可以通過不同的端口分別訪問到Apache和Django的配置成功界面,所以我就一直糾結搭建成功時什麼樣子。
搭建成功了,不需要在django項目下 runserver 就可以通過輸入 訪問Apache 的It works頁面方式訪問到django的it works的頁面,因爲已經不需要django自帶的服務器了,我之前一直以爲要運行自帶服務器。在我的系統上就是 直接在瀏覽器上輸入 ip+端口號(自己設置的Apache監聽端口),就可以顯示django的it works,第一次可能需要刷新一下。

安裝好各部分以後,就是配置了。
步驟如下:
1、將django項目放到 /var/www 目錄下,因爲這是Apache的默認訪問目錄,裏面的html就是 It works 的頁面文件。這一步是爲了方便Apache找到django項目,放到其他地方操作會複雜一點。

2、修改配置文件: sudo nano /etc/apache2/sites-available/yoursite.conf,這個yoursite.conf是你自己創建的,名字隨意,也可以用vi等其他命令,我喜歡用 nano 和Windows上的操作類似,不容易出錯。yoursite.conf內容如下

#<VirtualHost *:8089>
ServerName your_domain_or_ip 
#ServerAlias other_domain_or_ip 

Alias /media/ /var/www/your_Project_Name/media/ 

Alias /static/ /var/www/your_Project_Name/static/                

<Directory /var/www/your_Project_Name/static/>                  
    Require all granted
</Directory>

WSGIScriptAlias / /var/www/your_Project_Name/your_Project_Name/wsgi.py     
<Directory /var/www/your_Project_Name/your_Project_Name/>                  
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

</VirtualHost>

解釋一下:
第一行的8089是我自己端口號,需要修改成你自己Apache的端口號,默認是80,如果要改要到/etc/apache2下的 port.conf裏改。
下面兩句 Alias 是告訴 媒體文件和靜態文件的目錄,接着下面是允許通過網絡訪問。
接下來配置wsgi,這是最重要的部分,wsgi是鏈接Apache和django的橋樑。your_Project_Name是你的django項目名字。

3、激活 yoursite.conf,sudo a2ensite yoursite.conf,然後reload Apache,輸入sudo service apache2 reload,當然如果重啓服務器sudo service apache2 restart也可以,前提是你的服務器不需要提供其他服務。這條命令才能使的Apache不去找它的默認網頁而是找你django項目。

4、修改django項目文件。
現在還只是讓Apache找到了django項目,但是django願不願意和他合作就不一定了。所以還需要修改django項目下的setting.py和wsgi.py。
修改setting.py中的ALLOWED_HOST=[‘your_ip_or_domain’],把服務器ip或者域名加入,有多個用逗號隔開。這一步相當於允許進門來。
然後修改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", "Your_Project_Name.settings")

application = get_wsgi_application()

把上面的Your_Project_Name替換成你的項目名就可以了。

現在這一步完成,就基本完成90%了,如果沒有出錯的話那說明你非常幸運,我當初配置這個東西用來3天,配置成功的時候興奮到睡不着!

5、給Apache修改數據庫的權限

sudo chown www-data:www-data /var/www/your_project_name/db.sqlite3
sudo chown www-data:www-data /var/www/your_project_name

到此,就差不多了,在瀏覽器中輸入你的域名或者ip+你自己設置的端口號就可以訪問了,正常的應該訪問到django的頁面,而不應該是Apache的默認頁面,否則就說明有問題啊。

切記~每次修改了Apache的文件都要 sudo service apache2 reload或者sudo service apache2 restart

參考文章 :
http://www.jianshu.com/p/b40a4a12fff1
https://www.howtoing.com/how-to-serve-django-applications-with-apache-and-mod-wsgi-on-debian-8/
http://code.ziqiangxuetang.com/django/django-deploy.html
幸運的人看一個就配置好了,不幸的人嘗試了一遍又一遍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章