记录下自己的配置过程以及遇见的问题。

系统: Ubuntu 14.04 64

系统内置Python版本:2.7.6

先声明,我一下操作都以root身份。 若登录是非root身份,请在命令前加sudo.

1. 安装apache2

用 apt-get命令,它是一款适用于UnixLinux系统的应用程序管理器。用于检索应用程序并将其加载到Debian Linux系统。想了解apt-get具体用法。

root@louis:~# apt-get update  # 再拿到Ubuntux系统的时候 强烈推荐要跑下该命令,更新一下apt-get应用程序管理器,使其中的应用程序库又新又全。

root@louis:~# apt-get install apache2

root@louis:~# apachectl -v   # 安装apache2后,运行改命令查看apache2的版本号,已检查是否安装成功。
  Server version: Apache/2.4.7 (Ubuntu)
  Server built: Jan 14 2016 17:45:23

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.

  1. 下载安装包: 到 https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html 下载最新版本的安装包mode_wsgi-x.y.z
  2. tar xvfz mod_wsgi-x.y.z.tar.gz
  3. cd mode_wsgi-x.y.z
  4. ./configure  # configure脚本会在各个标准路径下面找Apache版本工具apxs,也会在PATH中找到安装的可执行的python。
  5. make
  6. make install # 安装完后,可以在/usr/lib/apache2/modules/下看到mod_wsgi.so。
  7. 在apache2的httpd.conf文件(小作用的ubuntu的由于平台问题,这个文件名是apache2.conf),加下面语句指令

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应用才能正常运作。

  1. 在apache2的httpd.conf文件(小作用的ubuntu的由于平台问题,这个文件名是apache2.conf),加下面语句指令

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,这里是小作学艺不精,不知道该多少合适,所以直接给所有权限,望大神指点)

经过安装、配置和拍错,成功了。

在这个过程中,看了网上很多篇的教程,没有一片可以完整的解决小作的实际问题。所有写下小作的经验,给自己,也分享大家。

有不对的地方,希望不吝赐教。

ubuntu 14.4 apache2 django的更多相关文章

  1. ubuntu 14.04 部署Django项目

    一.购买服务器 推荐 vultr的服务器,还可以_ _ _,链接:传送门 操作系统建议选 ubuntu 14.04 64位 二.购买域名 链接:传送门 三.安装相关软件 # 创建一个叫mu的用户 ro ...

  2. Ubuntu 14.04下Django+MySQL安装部署全过程

    一.简要步骤.(Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的环境是 ...

  3. 【转】Ubuntu 14.04下Django+MySQL安装部署全过程

    一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的 ...

  4. [django] Deploy Django Applications Using uWSGI and Nginx on Ubuntu 14.04

    关键点1:chmod-socket=666 (mysite_uwsgi.ini) 关键点2 : 工程目录和虚拟环境目录搞清楚 几个参考: http://uwsgi-docs.readthedocs.i ...

  5. [Django] Setting up Django Development Environment in Ubuntu 14.04

    1. Python Of course you will need Python. Still Python 2.7 is preferred, however if you would like t ...

  6. Ubuntu Server 14.04 & Apache2.4 虚拟主机、模块重写、隐藏入口文件配置

    环境: Ubuntu Server 14.04 , Apache2.4 一.Apache2.4 虚拟主机配置 01. 新建一份配置文件 在apache2.4中,虚拟主机的目录是通过/etc/apach ...

  7. Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:

    Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7: 参考 http://blog.csdn.ne ...

  8. php use memcached in ubuntu 14.04

    I assume you already had a lamp environment first step,we must to install memched in our Ubuntu Syst ...

  9. ceph calamari 监控系统安装 on ubuntu 14.04

    在 ubuntu 14.04 上安装ceph calamari时,遇到calamari web界面中node server可以正常添加,但cluster 集群无法显示的问题. 经过定位,是因为salt ...

随机推荐

  1. MySQL填坑系列--Linux平台下MySQL区分大小写问题

    大家好,我是软件大盗(道),下面开始我们的<MySQL填坑系列>. 笔者最近又在MySQL的边缘试探,然后,试探着,试探着就报错了. 书接上文,系统连接数据库时报错:找不到DB_TIMIN ...

  2. 悟空模式-java-抽象工厂模式

    [一朝,王母娘娘设宴,大开宝阁,瑶池中做蟠桃胜会] 有一天,王母娘娘要在瑶池办party,就需要准备大量的食材.要知道,天上的神仙也分三六九等,九曜星.五方将.二十八宿.四大天王.十二元辰.五方五老. ...

  3. @Controller和@RestController的区别(转)

    @Controller和@RestController的区别? 官方文档: @RestController is a stereotype annotation that combines @Resp ...

  4. mysql 优化海量数据插入和查询性能

    对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. ...

  5. (利用DOM)在新打开的页面点击关闭当前浏览器窗口

    1.在开发过程中我们前端的用户体验中有时候会要求点击一个按钮,关闭当前浏览器窗口.用html DOM就可做到. 2.注意:本次写法要求在新窗口中关闭. target="_blank" ...

  6. 项目小结:手机邮箱正则,URL各种判断返回页面,input输入框输入符合却获取不到问题

    1.手机邮箱正则 近两年出来很多新号码,听说199什么的都有了- -导致以前的正则不能用了....这就很难过,总是过一段时间出一种新号码.因此,我决定使用返朴归真的手机正则. 手机正则:var reg ...

  7. MPVUE - 使用vue.js开发微信小程序

    MPVUE - 使用vue.js开发微信小程序 什么是mpvue? mpvue 是美团点评前端团队开源的一款使用 Vue.js 开发微信小程序的前端框架.框架提供了完整的 Vue.js 开发体验,开发 ...

  8. python之迭代

    1.何为迭代: 对于给定list或者tuple,通过for循环来遍历这个list或tuple,这种遍历我们称之为迭代(Iteration). 2.python中利用for...in语句来完成迭代语句: ...

  9. sql 日期类型可以使用大于、小于号直接进行比较运算

    select * from emp where hiredate > '1982-1-1';  -- mysqlselect * from emp where hiredate > to_ ...

  10. java jvm概述及工作过程中的内存管理

    java jvm 有分层的思想.   java类..java文件,源文件,源代码,源程序   编译器不能把源代码直接编译成0101,除非是java语言写的操作系统.   windows认识的可执行文件 ...