在apache上以cgi的方式运行python

post by 朦朧中的罪惡 / 2009-12-16 0:48 Wednesday

Windows下的配置方法

配置过程非常简单,打开httpd.conf

增加

ScriptAlias /python/ "D:\dev\python"

http://localhost/python/test.py的请求会引导服务器执行D:\dev\python\test.py脚本


AddHandler cgi-script .py

设置包含.py扩展名的文件,都会被当成是CGI程序

然后给你放置python脚本的目录设置属性,例如:D:\dev\python

<Directory "D:\dev\python">
        Options Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
        Options ExecCGI
</Directory>

未加粗的部分可以参考Apache手册自行设置,加粗的设定该目录可以执行CGI脚本

保存,重起Apache

D:\dev\python 下面建立test.py

输入:

#!C:\Python26\python.exe
# -*- coding: utf-8 -*-
print "Content-type: text/html;charset=utf-8\n\n"
print "hello world"

访问

http://localhost/python/test.py

 

OK 你成功了!

标签: apache python

关闭虚拟主机的Gzip [疑难杂症]

post by 朦朧中的罪惡 / 2009-10-14 13:41 Wednesday

有的Apache虚拟主机默认就开启的Gzip节省网站流量,但是这么做可能导致网站在使用ie6浏览时出现一些神奇的问题,如JavaScript不运行,框架页面空白等神奇的情况。

如果你的虚拟主机支持.htaccess,那么可以在其中写入SetEnv no-gzip即可关闭Apache的Gzip压缩。

标签: apache 原创

Apache2.2配置Subversion(SVN)提示cannot load mod_dav_svn.so解决 [疑难杂症]

post by 朦朧中的罪惡 / 2009-9-29 9:08 Tuesday

问题描述:配置Apache2.2与SVN 1.6.5时Apache启动报cannot load mod_dav_svn.so

上网查找资料,首先从这里知道是缺少了dll库文件

按照博客上所说将SVN的bin目录下libdb44.dll,libeay32.dll,ssleay32.dll三个文件拷贝到Apache的bin目录下

启动失败....

找了一圈没结果后去了Subversion的官方FAQ,faq要求我拷贝

libdb4*.dll, intl3_svn.dll, libeay32.dll and ssleay32.dll,拷贝后依然无效

这时看到了faq的最后一句话:

If this still does not resolve the problem, you should use a tool like Dependency Walker on mod_dav_svn.so to see if there are any other unresolved dependencies。

跑去下载了Dependency Walker 打开mod_dav_svn.so查看它需要的dll文件

点击查看原图

看了一下需要的是

libapr-1.dll
libaprutil-1.dll
libsvn_delta-1.dll
libsvn_fs-1.dll
libsvn_repos-1.dll
libsvn_subr-1.dll

按照要求拷贝后Apache顺利启动,问题解决

标签: apache 原创

php使用MySql函数导致Apache(iis)崩溃的问题 [疑难杂症]

post by 朦朧中的罪惡 / 2009-9-22 20:59 Tuesday

这个问题是在Windows下配置PHP环境时发生的。

具体的表现是php运行正常,但是只要一调用MySql的相关函数,Apache就会崩溃掉。

环境配置方式:

php以模块的方式运行在Apache下。自定义php.ini路径

phpinfo()显示mysql库加载成功

崩溃后在Windows的错误日志中会留下以下内容:

错误应用程序 httpd.exe,版本 2.2.11.0,错误模块 php5ts.dll,版本 5.2.10.10,错误地址 0x0000ac6a。

上google查了很久也不知道是怎么回事,国外也有人遇到同样的问题,但是没有解决方法,后来无意中看到phpinfo中MySql库的版本居然是5.1.30,这才想到原因,分析如下:

我在安装MySql的时候在配置设定时把MySql的Bin目录放到了系统环境变量Path中。而Bin目录中正好有一个libmysql.dll的库。

而php在加载mysql库的时候会搜索系统环境变量Path每一个目录寻找libmysql.dll,由于mysql的bin目录也在其中,那么php就先把mysql的libmysql.dll加载了。所以就会由于库的兼容问题导致mysql的函数无法运行。

解决方案:

1.将mysql的bin目录从系统环境变量Path中移出或将libmysql.dll从MySql的bin目录中移出。

2.重起系统

标签: apache php 原创 环境配置

PHP多版本共存解决方案 [服务器配置]

post by 朦朧中的罪惡 / 2009-4-29 12:42 Wednesday

我这里说的php多版本共存不仅仅是php4、php5两个大版本号程序的共存,而是php的很多小版本号程序的共存,例如php4.3.1、php4.4.5、php5.2.0、php5.2.9等等,不仅如此,由于测试的需求,我还需要做到php的版本可以随时灵活切换。

目前网上很多的解决方案是在本机安装IIS和Apache或安装多个apache服务,每个服务器安装一个版本的php来达到版本共存的要求,但是要按照 我的要求,这么做既麻烦也达不到我的要求。那么有没有别的方法呢,网上没有就只好自己来研究了,下面就是我摸索出的完美解决方案:

实现思路:Apache  + .htaccess + PHP CGI

阅读全文>>

标签: apache php 原创 享受编程

Linux虚拟主机空间文件或文件夹无法删除的解决办法 [疑难杂症]

post by 朦朧中的罪惡 / 2007-12-31 21:01 Monday

今天维护博客文件的时候发现通过FTP无法删除网站路径中的一些文件夹和文件.FTP提示Permission Denied(没有权限)让我百思不得其解.本着自己研究的出发的想法开始寻找解决办法,既然FTP提示权限不足那么应该是服务器的文件权限设置里出现的问题,我到服务器管理后台查看文件管理器,文件管理器显示如下图:

附件[ematt:55]

由图中可见,由PHP程序生成的文件所有者是Apache帐户而不是我的ftp帐户,因此Apache帐户拥有控制这些文件的所有权限但是FTP用户却没有,所以在FTP上我用我自己的用户去操作删除这些文件系统就会提示我没有权限删除它们.

为了确定问题是这样我又去咨询了服务器提供商,得到的答复完全证明对了我的推断:一般国内的Linux虚拟主机上Apache和ftp通常不是在一个用户组,所以apache建立的目录或文件ftp是无法删除的,必须用php程序通过Apache来删除。

那怎么解决呢?很简单,写个PHP程序来完成这个工作

阅读全文>>

附件下载:
deltool.rar 1.34KB

标签: apache 原创

Emlog的Apache服务器Url重写规则 [服务器配置]

post by 朦朧中的罪惡 / 2007-11-29 22:46 Thursday

根据Emlog2.5.0编写,初步测试完全可用,但是Emlog未集成直接的url重写功能,实现博客的url重写要自己手动修改程序和模板,下一步准备和作者那多记忆联系下看是否有遗漏或者修改,然后在新版本中增加这一功能。

# RewriteEngine 打开URL重写模块
RewriteEngine on
# 重写根目录,博客在网站根目录则改为
RewriteBase /blog
# 首页日志列表分页规则
RewriteRule ^page_([0-9]+)\.html$ index.php?page=$1
# 显示日志规则
RewriteRule ^showlog_([0-9]+)\.html$ index.php?action=showlog&gid=$1
# 日志归档
RewriteRule ^record_([0-9]+)\.html$ index.php?record=$1
RewriteRule ^record_([0-9]+)_page_([0-9]+)\.html$ index.php?page=$2&record=$1
# tag规则
RewriteRule ^tag\.html$ index.php?action=tag

.htaccess文件等弄好后再发布吧....

目前自己的博客为全url重写状态,hoho....

标签: apache emlog