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.修改后成功访问:

          

        

猜你喜欢

转载自blog.csdn.net/fsj818077/article/details/85337942