這兩天都在爲了搭建這個服務器而忙活着,遇到了很多坑,在網上參考了很多人的介紹,但是都不順利,所以說一說自己的過程,爲以後的人提供一下幫助。
先說一下最終效果,我之前一直不知道搭建成功是什麼樣子,因爲我可以通過不同的端口分別訪問到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
幸運的人看一個就配置好了,不幸的人嘗試了一遍又一遍。