本博客已经弃用,我的新博客地址:http://jujuba.me/ 


0x00 前言

在这里先说一点人生的经验 之前买了腾讯云的服务器(有学生认证的话只要1块钱) 我明明在自己电脑上ubuntu虚拟机用了一年多了 却作死选了个Centos 还是最新版的(7.2) 于是出现了各种问题 网上的解决方案都很少 最后因为一些很扯的问题放弃了 重装了一个ubuntu12.04的系统 感觉舒服 简单 多了

人生的经验:
* 关于Linux,个人使用的话版本可以尽量新(各种作死有保障,比如作死之前虚拟机打个快照什么的),而服务器的话版本尽量选择稳定 旧的 的,这样的话出现各种问题的几率比较小,而且网上的解决方案也多一些。

0x01 部署步骤

  • a.准备工作
    • 首先建议大家先通过sudo apt-get install python-pip来安装pip,这是一个专门管理Python包的软件,我觉得相当于一个更细化的apt吧
  • b.安装各种软件
    • mysql sudo apt-get install mysql-server-core-5.5
    • apache sudo apt-get install apache2 安装后请使用apachectl -v来检查版本号 2.4.x与2.2.x后续有一点区别
    • django sudo pip install Django==1.8
  • c.建立Django与Apache的连接
    • sudo apt-get install libapache2-mod-wsgi #Python2
    • sudo apt-get install libapache2-mod-wsgi-py3 #Python3
    • 如果你是Python2用户又恰巧不小心输入了第二条命令,那么不要怕,再输入第一条命令就好啦,同样的Python3也可以通过再输入第二条命令来重置Apache的Python解释器(这种说法不一定对,但是我相信你懂我意思!)!
  • d.让Apache找到Django
    • 可以分为以下四步:
      • 将Django工程放在/var/www/下;
      • sudo vi /etc/apache2/sites-available/yoursite.conf 修改配置文件;
      • sudo a2ensite yoursite.conf 配置文件生效;
      • sudo service apache2 restart 重启Apache。
    • 然后新建一个网站的配置文件
      • sudo vi /etc/apache2/sites-available/yoursite.conf
    • 配置文件的具体内容如下 `

      ServerName www.yourdomain.com # 改为你自己的域名
      
      # ServerAlias otherdomain.com
      
      # ServerAdmin youremail@gmail.com
      
      # 存放用户上传图片等文件的位置,注意去掉#号
      
      #Alias /media/ /var/www/ProjectName/media/ 
      
      # 静态文件(js/css/images)
      
      Alias /static/ /var/www/ProjectName/static/                
      
      # 允许通过网络获取static的内容
      
      <Directory /var/www/ProjectName/static/>    
      
          Require all granted
      
      </Directory>
      
      # 最重要的!通过wsgi.py让Apache识别这是一个Django工程,别漏掉前边的 /
      
      WSGIScriptAlias / /var/www/ProjectName/ProjectName/wsgi.py    
      
      # wsgi.py文件的父级目录,第一个ProjectName为Django工程目录
      
      # 第二个ProjectName为Django自建的与工程同名的目录
      
      <Directory /var/www/ProjectName/ProjectName/>              
      
      <Files wsgi.py>
      
          Require all granted
      
      </Files>
      
      </Directory>
      
      </VirtualHost>`
    • 需要注意的是 假如你的Apache版本为2.2.x 则将Require all granted改为Order deny,allow Allow from all
    • 然后 执行sudo a2ensite yoursite.conf来使网站生效
    • 也可以执行sudo a2dissite yoursite.conf来使网站失效
    • 最后重启Apache即可 sudo service apache2 restart

  • e.修改Django的wsgi.py文件
    • 路径/var/www/ProjectName/ProjectName/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) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

      from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
    • 注意将"project.settings" 改为正确的名称
    • 再次重启Apache sudo service apache2 restart

0x02 疑难排查

注意疑难排查主要看日志/var/log/apache2/error.logsystemctl -xe
以下是一些常见问题的解决(都要通过看错误日志得到):

参考文章1 把Django搭建到Apache服务器

参考文章2 Django 部署(Apache)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐