ubuntu環境下Apache2部署django2.0專案及問題解答
關於使用阿帕奇部署django專案的帖子網上有很多,但是部署時還是還有錯誤,那麼我把易錯點進一步總結,方便大家部署,這裡我才用本機部署,線上部署是一樣的原理
準備階段:
1.環境:ubuntu+python3.5.2+django2.0
2.準備一個寫好的django專案,通過命令python3 manage.py runserver可以執行,保證django專案是可以執行的
安裝apache:
1.sudo
apt-get
install
apache2 這個命令來安裝apache2
2.sudo
apt-get
install
libapache2-mod-wsgi-py3 安裝mod-wsgi依賴檔案,因為是python3的所以+py3,
如果是python2的專案命令為sudo
apt-get
install
libapache2-mod-wsgi
3.apachectl -
v 檢視apache的版本號,這個和一會配置連結有關係,不過如果你更新了自己的源,都會是最新的版本2.4.x,也可以不進行檢視,主要是為了2.x版本
配置apache2的連結檔案
1.cd /etc/apache2/sites-available/ 進入這個目錄下
2.sudo vi 專案名稱.conf 新建這個檔案專案名稱.conf檔案,當然了每個人的習慣不一樣的,我為了方便區別於專案,就以專案名稱來命名,如果裡邊有其他的*.conf檔案,為了方便可以刪除
3.然後進行這個對這個.conf檔案進行配置,如下:
配置相當關鍵,專案能不能部署成功,配置檔案佔了90%
1 <VirtualHost *:80>
2
3 ServerName localhost:80 # 本機部署,埠80
4
5 # ServerAdmin [email protected] # 這個郵箱不重要
6 WSGIScriptAlias / /home/python/Desktop/django_test/fang/fang/wsgi.py # 這是專案的wsgi.py的絕對路徑,非常重要,是apache連結django專案的紐帶
7
8 Alias /static/ /home/python/Desktop/django_test/fang/static/ # 這是專案的靜態檔案絕對路徑,非常重要
9
10 <Directory /home/python/Desktop/django_test/fang # 專案路徑>
11 Require all granted
12 </Directory>
13
14 <Directory /home/python/Desktop/django_test/fang/static # 靜態檔案路徑>
15 Require all granted
16 </Directory>
17
18 WSGIDaemonProcess fang python-path=/home/python/Desktop/django_test/fang python- path=/home/python/.virtualenvs/django_py3/lib/python3.5/site-packages # 這個 WSGIDaemonProcess配置非常重要,後邊不能直接+python-path ,要+專案名稱,然後就是專案的依賴包路徑一定要正確,都在一直調不通,尤其是使用了虛擬環境的專案
19 WSGIProcessGroup fang
20 <Directory /home/python/Desktop/django_test/fang/fang>
21 <Files wsgi.py>
22 Require all granted
23 </Files>
24 </Directory>
25
26
27 </VirtualHost>
配置django專案的settings檔案
找到專案的settings檔案,然後開啟,進行如下配置:
import
os
from
os.path
import
join,dirname,abspath
PROJECT_DIR
=
dirname(dirname(abspath(__file__)))
#3 # 原有基礎上新加的配置專案
import
sys
# 4
sys.path.insert(
0
,PROJECT_DIR)
# 5
os.environ[
"DJANGO_SETTINGS_MODULE"
]
=
"blog.settings"
# 7
from
django.core.wsgi
import
get_wsgi_application
application
=
get_wsgi_application()
許可權修改
進入專案所在的目錄下
通過命令(1)sudo
chmod
-R 644 專案名稱 (2)sudo
find
專案名稱 -
type
d |
xargs
chmod
755 修改專案執行許可權
啟動專案
1.通過命令啟用web專案:
sudo
a2ensite 專案名稱 或
sudo
a2ensite 專案名稱.conf
2.
重新載入apache,sudo service apache2 reload
3.開啟或者重新開啟apache伺服器,命令如下:
sudo service apache2 start 開啟
sudo service apache2 restart 重啟
sudo service apache2 stop 停止
通過部署配置的servername訪問,我是本機部署,所以訪問地址是127.0.0.1:80
這個訪問process是 name.conf --> wsgi.py --> settings.py --> urls.py --> views.py
ubuntu環境下Apache2部署django2.0專案問題總結
1.第一次部署完成後,沒有連結成功是因為我自己的專案路徑錯誤
答:修改正確的路徑
2.專案和伺服器聯通後,卻沒有返回資料,如下圖:
答:1.通過sudo vi /var/log/apache2/error.log開啟阿帕奇的log記錄
2.檢視log發現報了很多錯誤,但是最後一個是No module named ‘rest_framework’,所以是依賴檔案問題
3.因為專案之前通過python3 manage.py runserver可以走通,說明在django專案的settings.py中的INSTALLED_APPS中已經註冊過rest_framework,那麼肯定問題在配置檔案 專案名稱.conf的依賴檔案路徑中,所以修改正確的路徑即可,如果是沒有配置WSGIDaemonProcess這一項,直接進行正確的配置,這個問題尤其容易發生在以虛擬環境部署的專案
4.修改後成功訪問: