Linux(Debian)+Apache+Django 配置
配置Apache和Django连接的过程可谓是一波三折,在此记录。
零、基本的安装
软件环境
l Linux-3.2.0-4-amd64-x86_64-with-debian-7.7
l python 2.7.3
l django 1.3.7
l apache 2.2
l mod_wsgi 3.3
基本指令、模块的安装(需root权限)
l curl命令,用于命令行下访问网站,返回html内容
apt-get curl
l sudo命令
apt-get sudo
l mod_wsgi
apt-get install libapache2-mod-wsgi
一、使用apache2提供静态页面
Apache 预备知识
可执行程序 /usr/sbin/apache2
配置文件目录 /etc/apache2/
网站(web)文件目录 /var/www
网站文件目录是指站点所对应的文件目录,可以配置。站点的配置文件是在 /etc/apache2/sites-available/目录中的文件里配置的,如/etc/apache2/sites-available/default文件。在这个文件中,字段DocumentRoot后填写网站文件目录,比如网站文件目录改到/var/temp 那么就把这行改成:DocumentRoot /var/temp
配置文件(/etc/apache2/下)
配置文件并不是在网上盛传的httpd.conf(这可能在以前的apache版本中有)里面,而是:
apache2.conf 基本的配置信息
ports.conf 端口
当然,也可以配置httpd.conf或者任一的.conf,apache会把配置文件目录下所有.conf结尾的配置文件载入进来。
Apache基本操作
$ su (切换成root用户,然后输入密码)
# service apache2 status # 查看状态
# service apache2 start # 启动
# service apache2 stop # 停止
# service apache2 reload # 重新应用配置文件
# service apache2 restart # 重新启动进程
# a2ensite xx # 激活xx站点
# a2dissite xx # 取消xx站点
# apachectl configtest # 检查一下 apache2 配置文件语法
主机名
主机名是用来指代域名(IP),可以直接输入主机名或域名来访问网站。主机名配置在/etc/hostname或/etc/hosts文件中。在Debian里是后者。
打开/etc/hosts(通过vi /etc/hosts 来打开,需要root权限),可将本地域名的主机名叫做localhost,将本机ip的主机名叫做lei,如下所示:
127.0.0.1 localhost
192.168.131.233 lei
此时开启Apache后,可以访问http://localhost,及http://lei ,将展示 It works!默认界面。
如果Linux的发行版是命令行式的,没有图形界面,就用curl http://localhost和curl http://lei来访问。
配置虚拟主机
上一步中访问的localhost和lei是默认页面,如果想访问自己的页面,需要进行如下配置:
$ cd /etc/apache2 # 进入 apache2 的配置目录
$ ls ./sites-enabled # 查看当前生效的站点
# 返回 000-default , 这是默认启动的站点
$ su
# a2dissite default # 取消默认站点 default
# 这时候sites-enabled目录下没有000-default
# service apache2 reload # 使配置生效
现在刷新一下 http://localhost/,应该已经不能访问了。
现在/etc/apache2/sites-available/目录下,建立一个名为 test的文件,为了清晰,写得尽可能简单,具体内容如下:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
</VirtualHost>
解释:
-------------------------------------------------------------
<VirtualHost *:80> #80是自定义的端口号
#要与/etc/apache2/ports.conf中Listen后的端口号一致
#如Listen 8001,则这里要写成<VirtualHost *:8001>
ServerName localhost #填写之前配置过的主机名
DocumentRoot /var/www #填写站点目录
</VirtualHost>
-------------------------------------------------------------
配置文件建立完毕后,要让它生效:
$ sudo su
# a2ensite test # 激活 test 站点
# ls /etc/apache2/sites-enabled/ # 查看当前生效的站点
# 返回 test ,表示test站点生效
# apachectl configtest # 检查一下 apache2 配置文件语法
返回结果:
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
在 apache2.conf 中增加主机名后,解决报错问题。添加如下:
ServerName localhost
重新检查配置文件语法,并重新载入:
# apachectl configtest # 这次结果应该只有 Syntax OK
# service apache2 reload
现在又能够正常访问 http://localhsot/ 。
二、配置 wsgi 模块
查看版本
$ sudo dpkg -l libapache2-mod-wsgi #查看wsgi的版本
# 结果: libapache2-mod-wsgi 3.3-4+deb7u1
$ a2enmod wsgi #验证模块安装正常
# 结果:Module wsgi already enabled
验证 wsgi
为了验证wsgi的正常使用,准备手工建一个最简单的wsgi应用,实际就是一个py脚本。
在 /var/www/目录下,建立一个名为 main.wsgi 文件,内容如下:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
在 /etc/apache2/sites-available/test中增加一行,同时可以取消DocumentRoot配置,修改后内容如下:
<VirtualHost *:80>
ServerName test
WSGIScriptAlias / /var/www/main.wsgi
</VirtualHost>
应用配置:
$ sudo service apache2 reload
现在刷新 http://localhost 能够返回Hello World! 说明 wsgi 解析正常。
三、配置 wsgi解析django
1. 在django工程目录下新建django.wsgi,并编辑如下:
import os
import sys
HERE = os.path.dirname(__file__)
sys.path.append(HERE)
sys.path.append(os.path.dirname(HERE))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
#settings指工程目录下的settings.py
#如果该文件放在当前目录的xx文件夹下,就写成'xx.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
2. 修改 apache2 的配置文件 /etc/apache2/sites-available/test,修改后的内容(其中/home/apache2/lei_web/为django工程目录):
<VirtualHost *:8001>
ServerName localhost
DocumentRoot /home/apache2/lei_web/
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/apache2/lei_web/>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /home/apache2/lei_web/django.wsgi
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
3. 重新应用 apache2 配置文件
$ sudo service apache2 reload
访问 http://localhost/ ,能够看到 django 的 It Worked! 页面,说明django安装正常。
四、SVN配置
Apache进程进行svn前的配置
由于在Django工程中有进行svn操作的代码,Apache服务器启动Django后,是以www-data身份做系统中运行,无对应权限。这时需要用sudo以及相关的/etc/sudoers来帮忙。
修改sudo配置文件,直接键入visudo命令编辑配置文件:
1. 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。 否则会出现sudo: sorry, you must have a tty to run sudo。
2. 增加行 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified。sudo-1.6.9p17-5.el5不支持这个参数,sudo-1.7.2p1-10.el5支持。
3.在配置文件靠近尾部的地方有一行root ALL=(ALL) ALL,紧接着这行加入www-data ALL=(ALL) NOPASSWD:/usr/bin/svn *
注:NOPASSWD可以使在命令执行时不需要交互输入www-data用户的密码
参考链接:
django 1.5.1 apache2 wsgi 配置教程 http://blog.chinaunix.net/uid-23500957-id-3838223.html
php如何控制svn更新代码 http://blog.csdn.net/ownfire/article/details/9187177
Linux(Debian)+Apache+Django 配置的更多相关文章
- Linux系统Apache服务 - 配置 HTTP 的虚拟机主机
接Linux系统Apache服务 - 配置HTTP的默认主页 1.创建/srv目录,作为httpd的文件目录,并创建/srv/default/www和/srv/www1.example.com/www ...
- Windows Apache Django 配置
所有刚刚学习Django 都会在这里配置的时候遇到问题.这里我简单秒速一个傻瓜步骤,使得大家更容易上手. 一.环境准备 1.windows 32系统 至少是 XPSP3 版本,注意:apache2.X ...
- linux(debian)系统django配远程连接sqlserver数据库
费了将近一天时间.最终解决,记下来留给须要的人 须要安装的: python-odbc : https://github.com/mkleehammer/pyodbc下载后install 安装pytho ...
- linux下apache+openssl配置记录
软件环境 Apache Httpd 2.2.29 (http://httpd.apache.org ) OpenSSL 1.0.1h (http://www.openssl.org/source ) ...
- Linux下 Apache Vhost 配置 防止403
首先,贴一份正确的配置(最简单的) <VirtualHost *:80> DocumentRoot /home/ubuntu/www/spider/public ServerName sp ...
- linux下apache php配置redis
1.安装redis 第一步: 下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz 上传phpredis-2.2.4.tar.gz ...
- Linux系统Apache服务 - 配置HTTP的默认主页
1.安装HTTPD和httpd-manual软件包 # yum -y install http httpd-manual 2.创建/var/www/html/index.html 内容是 Hello ...
- 【Linux】Apache服务配置
一. URL 统一资源定位符 http://www.sina.com.cn:80/admin/index.html 二. 环境安装 LAMP 源码包编译安装 版本可以自定义 生产环境 安全 稳定 开发 ...
- Linux下apache+phppgadmin+postgresql安装配置
Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...
随机推荐
- Python_Day1_基础1
一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...
- Android Studio编译输出apk文件修改文件名
新建一个Android工程,默认编译会生成一个叫app-debug.apk或者叫app-release.apk文件,说实话,单纯看文件名,我都不到任何有用的信息,我希望输出的文件名是这样的: 模块名- ...
- 数据库 基础篇4(mysql语法---表)
5 表管理 选择数据库 5.1 查看所有表 mysql> show tables; +-----------------+ | Tables_in_day15 | +------------ ...
- javascript内置属性——arguments
arguments是javascript中的内置属性,可以直接调用函数的参数,作用类似Array,但本身并不是数组.这次发现它是为了实现封装函数,将不确定数量的数字乘积.比如function mult ...
- Aptana STUDIO 3 使用(续)
1 使用Aptana studio 3 浏览ruby代码 2 设置gbk编码.打开Aptanna Studio,选择Windows->Preferences->General->Co ...
- iOS开发UI篇—无限轮播(循环利用)
iOS开发UI篇—无限轮播(循环利用) 一.无限轮播 1.简单说明 在开发中常需要对广告或者是一些图片进行自动的轮播,也就是所谓的无限滚动. 在开发的时候,我们通常的做法是使用一个UIScrollV ...
- Java 设计模式泛谈&装饰者模式和单例模式
设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到 ...
- Linux准确获取IP
有时搞一些跨网段的工程和应用,需要尽量准确的知道电信.网通.铁通等电信运营商的IP地址段分配情况,可网上的资料不但很少,而且经常都是N个月前的过期资料…… APNIC是管理亚太地区IP地址分配的机构, ...
- bzoj 2875: [Noi2012]随机数生成器
#include<cstdio> #include<iostream> #include<cstring> #define ll long long using n ...
- hdu 4642 Fliping game
http://acm.hdu.edu.cn/showproblem.php?pid=4642 对于给定的矩阵 操作步数的奇偶性是确定的 奇数步Alice赢 否则Bob赢 从左上角向右下角遍历遇到1就进 ...