关于使用阿帕奇部署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
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
11 Require all granted
12
13
14
15 Require all granted
16
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
21
22 Require all granted
23
24
25
26
27
配置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.修改后成功访问: