Ubuntu配置Apache+mod_perl

为什么使用mod_perl?

mod_perl 模块的提供的一个特色是:可以用Perl语言来编写Apache 模块,Perl 是解释性语言,其优缺点并存。解释性语言的一个主要优点是:每次安装服务器时,不必重新编译这个模块。缺点是需要一个解释器来阅读和执行实际的程序,这会降低服务器的运行速度,通过在启动Apache服务器的同时,启动Perl解释器,这样mod_perl就克服了运行速度减慢的问题。Perl解释器还可以对服务器上的Perl代码进行预先解释,并可以随时捕捉到它,以便一旦要用到该段代码时,能够快速执行。


安装apache:

1.下载apache安装包:

https://launchpad.net/ubuntu/+source/apache2/

2.解压:

tar zxvf apache***.tar.gz

3:配置参数

./configure –prefix=/usr/local/apache

4.make

5.make install

5.启动:

/usr/local/apache/bin/apachectl start ,该命令用来启用apache

6.快捷启动apache,使用vi ~/.bashrc命令打开,然后输入alias apache=’/usr/local/apache/bin/apachectl’,以后只要输入apache start|stop|restart命令就可以控制apache的启动和关闭了。

7. 开机自动启动Apache,vi /etc/rc.d/rc.local中增加启动apache的命令/usr/local/apache/bin/apachectl start,重启开机后就会自动启动Apache服务。


安装mod_perl

1.Linux 下,默认就会集成 perl 环境。

直接执行 perl -version 就能得出当前 perl 的版本号。

所以,linux 下的 apache 默认也是支持perl Cgi 运行的。只是你有没把配置项打开。

编辑 http.conf

找到     #AddHandler cgi-script .cgi

把前边的#去掉,然后在 .cgi  后加上 .pl 

AddHandler cgi-script .cgi .pl

2.http://perl.apache.org/download/index.html 下载mod_perl。

http://ftp.nsysu.edu.tw/Ubuntu/ubuntu/pool/main/liba/ 有各种mod下载

然后把下载回来的 .tar.gz 解压缩,然后进入执行安装命令。

# cd mod_perl-x.x.x

# perl Makefile.PL

它会问你的 apache  apxs 路径

Please provide a full path to 'apxs' executable
(press Enter if you don't have it installed):

输入完整的路径,例如 /usr/local/apache2/bin/apxs
输入完后回车,它其实就是像往常tar包编译的 configure 一样,把你的环境扫描一遍。
并且提示你要在 httpd.conf 里边添加 LoadModule perl_module modules/mod_perl.so

先别急,编译安装好了再加也行!向导完成后接着在当前目录

# make
# make install

完成! 你就会在 /usr/local/apache2/modules 下发现多了个 mod_perl.so
好了,现在你可以在 httpd.conf  把刚才那句加上去了。

# vi httpd.conf

找到 # LoadModule foo_module modules/mod_foo.so
在下边一行加入
LoadModule perl_module modules/mod_perl.so

:wq 保存退出 重启 apache即可!

加载了 mod_perl.so 之后,apache 对 perl 的支持就更加强大了。


第一个例子:以hello.pl 保存在cgi-bin目录下。并执行 chmod +x hello.pl

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> PERL CGI</title>\n";
print "<body>";
print "hello perl-cgi";
print "</body>";
print "</html>\n";

在网址中输入 xxx.xxx.xxx/cgi-bin/hello.pl

得到结果!


附录:

A.perl-cgi 学习资料:

http://cee.tsu.edu.tw/~ftyang/cgi/

http://www.oschina.net/code/search?q=PERL+CGI

http://cgi.resourceindex.com/Programs_and_Scripts/Perl/


B.PERL CGI 环境变量列表

Perl CGI 环境变量会因为服务器的不同而有所区别。所以内容不一定和你的 WEB 服务器相完全符合。
以下的内容以字母排序:
1. AUTH_TYPE
如果服务器支持基本的认证并且如果脚本被保护,此变量提供认证类型,此信息是特定于协议和服务器的。
2. CONTENT_LENGTH
如果通过 POST 方法的请求中包括数据,此变量的值为此请求中合法数据的长度。
3. CONTENT_TYPE
如果请求中包括数据,此变量指定数据类型的类别。
4. DOCUMENT_ROOT
网络提供的文件服务所在的路径。
5. GATEWAY_INTERFACE
被服务器支持的 CGI 接口的版本数,其格式为 CGI/版本号。
6. HTTP_ACCEPT
提供由逗号分开的并被客户服务器可接受的 MIME 类型的列表。
7. HTTP_ACCEPT_CHARSET
客户机能接受的语言代码设置。
8. HTTP_ACCEPT_ENCODING
客户机能接受的编码形式。
9. HTTP_ACCEPT_LANGUAGE
客户机能接受的语言类型。
10. HTTP_COOKIE
客户机内的 COOKIE 内容。
11. HTTP_FORM
使用者发出请求的电子邮件讯息。
12. HTTP_REFERER
在读取 CGI 程式前,客户端所指的 URL。
13. HTTP_USER_AGENT
提供包含了版本数或其他专有数据的客户浏览器信息。
14. PATH_INFO
显示由客户提供并附在虚拟路径尾的任何附加的路径信息。它通常被用作脚本的参数。
15. PATH_TRANSLATED
仅由部分服务器支持,此变量包含由虚拟路径到被执行脚本的转换(即虚拟路径到物理路径的映射)。例如,如果到你的 WEB 服务器根的绝对路径为 /apache/httpd/htdocs,一个具有 URL http://www.CGIer.net/cgi-bin/test.cgi 的脚本会将变量 PATH_TRANSLATED 设置为/apache/httpd/htdocs/cgi-bin/test.cgi。
16. QUERY_STRING
显示由客户提供的附在URL尾并用一个问号与脚本名分开的任何附加信息。
17. REMOTE_ADDR
提供发请求客户的 IP 地址。
18. REMOTE_HOST
提供已分解的发请求客户的主机名。
19. REMOTE_IDENT
如果服务器和客户支持 RFC931,此变量将包含由远程用户的计算机提供的识别信息。
20. REMOTE_USER
如果AUTH_TYPE被设置,此变量将包含用户提供并由服务器确认的用户名。
21. REQUEST_METHOD
提供脚本被调用的方法。对于使用 HTTP/1.0 协议的脚本,仅 GET 和 POST 有意义。
22. SERVER_ADMIN
显示服务器网络管理员。
23. SCRIPT_NAME
这是被调用脚本文件的名字,它对于自引用脚本很有用。
24. SERVER_NAME
这是你的 WEB 服务器的主机名、别名或IP地址。
25. SERVER_PORT
这是你的 WEB 服务器的端口号。
26. SERVER_PORT_SECURE
接受Http请求的服务器安全、加密端口。
27. SERVER_PROTOCOL
这是本请求所用协议的名字/版本。
28. SERVER_S0FTWARE
这是运行脚本的 HTTP 服务器的名字/版本。

你可能感兴趣的:(apache,ubuntu,服务器,脚本,cgi,perl)