Django部署至Apache的步骤(Ubuntu12.04下)
本博客已经弃用,我的新博客地址:http://jujuba.me/ 0x00 前言在这里先说一点人生的经验 之前买了腾讯云的服务器(有学生认证的话只要1块钱) 我明明在自己电脑上ubuntu虚拟机用了一年多了 却作死选了个Centos 还是最新版的(7.2) 于是出现了各种问题 网上的解决方案都很少 最后因为一些很扯的问题放弃了 重装了一个ubuntu12.04的系统 感觉舒服 简单 多了人生的经
·
本博客已经弃用,我的新博客地址: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
- mysql
- 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.log
与systemctl -xe
以下是一些常见问题的解决(都要通过看错误日志得到):
- can't pip install mysql-python
- Getting “Error loading MySQLdb module: No module named MySQLdb”
- Python,Django安装MySQLdb各种经典错误
参考文章1 把Django搭建到Apache服务器
参考文章2 Django 部署(Apache)
更多推荐
已为社区贡献2条内容
所有评论(0)