记录下本身的配置过程以及碰见的问题。html
系统: Ubuntu 14.04 64python
系统内置Python版本:2.7.6linux
先声明,我一下操做都以root身份。 若登陆是非root身份,请在命令前加sudo.web
1. 安装apache2sql
用 apt-get命令,它是一款适用于Unix和Linux系统的应用程序管理器。用于检索应用程序并将其加载到Debian Linux系统。想了解apt-get具体用法。数据库
root@louis:~# apt-get update # 再拿到Ubuntux系统的时候 强烈推荐要跑下该命令,更新一下apt-get应用程序管理器,使其中的应用程序库又新又全。apache
root@louis:~# apt-get install apache2 django
root@louis:~# apachectl -v # 安装apache2后,运行改命令查看apache2的版本号,已检查是否安装成功。
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jan 14 2016 17:45:23ubuntu
2.安装django安全
root@louis:~# apt-get install python-pip # 安装django以前,先安装一个python-pip。
python-pip是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品。用于安装、更新和卸载Python包。 这里没有用apt-get命令,是由于apt-get安装出来的Django的版本过低,而我如今还暂时不知道怎么apt-get命令控制安装包的版本。
root@louis:~# pip install Django==1.8.2 # pip安装简单的选择版本。了解更多的pip具体用法。
root@louis:~# python #检查Django是否安装成功,在Ubuntu命令行中输入:
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 8, 2, 'final', 0)
>>> quit()
3.安装mod_wsgi
mod_wsgi是一个可安装与apache中的工具,用于apache上,使得任何支持Python WSGI规格的Python web应用均可以嫁接到apache服务器上,这样外网就能够访问Python web应用了。了解更多mod_wsgi。
WSGI: Web Server Gateway Interface。 了解更多WSGI。
直接用pip install mod_wsgi命令安装,遇到两个问题:
问题1. 报错 'missing Apache httpd server packages.' % APXS
个人解决方法是: 补齐apache2-threaded-dev、apache2-mpm-worker两个包, 为何是这两个包的缘由在参考资料: https://pypi.python.org/pypi/mod_wsgi:
apt-get install apache2-threaded-dev
apt-get install apache2-mpm-worker
问题2:error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
个人解决方法是: 安装python-dev包
apt-get install python-dev
参考博客:http://www.cnblogs.com/EncryptingLife/p/4817027.html
解决问题1问题2后,开始安装mod_wsgi.
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
8. 重启Apache, 运行命令 apachectl restart
9. 在Apache error log 里面能看到下面的信息,证实mod_wsgi被actived了。
Apache/2.7.6 (Unix) mod_wsgi/4.5.2 Python/2.7 configured
1~5步是安装mod_wsgi包的过程,6步是检查mod_wsgi是否安装成功。 7~8步是配置激活mod_wsgi, 9步检查mod_wsgi是否actived.
1~9步都出自mod_wsgi官方安装步骤
4. 把django项目配置到已经安装好mod_wsgi的apche上, mod_wsgi和apache一块儿做用,python web应用才能正常运做。
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py # 告诉apache wsgi.py文件在哪里
WSGIPythonPath /var/www/mysite # 告诉apache Python文件根目录在哪里
Alias /static/ /var/www/mysite/static/ # 告诉apache 静态文件放在哪里
<Directory /var/www/mysite/mysite/>
<Files wsgi.py>
Require all granted
</Files>
</Directory># /var/www/mysite 是小做django项目的根目录
# 若是Apache版本低于2.4, 用Allow from all和Order deny,allow 来代替 Require all granted
# 了解apache的指令语句
2. 修改django项目中的settings.py文件,设置DEBUG = False。 由于要将django项目搭建在apahe服务器上,已是生产环境了,DEBUG = True的话,安全性不好。
3. 从新加载apaceh服务,运行命令 service apache2 reload
3. 访问网页
遇到问题:
问题1:访问网页 提示 Bad Request (400)
解决方法:
到django项目的settings.py文件,设置ALLOW_HOST=['IP'] # 这样从外网访问http://IP/就能看django页面。
问题2:登陆django内建的admin后台,没有样式。
解决方案:
1. 在django项目的settings.py文件中定义STATIC_ROOT = 'static/' , 在我django项目(小做的django项目名是mysite)中建立 mysite/static文件夹。
2. 在django项目根目录下运行: python manage.py collectstatic # 将admin后台的static文件所有收集到第1步建立的文件夹里
3. 重载apache服务器
问题3:在admin后台登陆页面,点击登陆,提示OperationalError at /admin/login attempt to write a readonly database
解决方法:
修改小做用的数据库文件db.sqliite3的权限到777
问题4:在纠正了问题3后,又报了新错。 OperationalError at /admin/login unable to open database file
解决方法:
修改django项目全部文件夹的权限,全改成777.(其实没有必要777,这里是小做学艺不精,不知道该多少合适,因此直接给全部权限,望大神指点)
通过安装、配置和拍错,成功了。
在这个过程当中,看了网上不少篇的教程,没有一片能够完整的解决小做的实际问题。全部写下小做的经验,给本身,也分享你们。
有不对的地方,但愿不吝赐教。