Ubuntu中安装和配置Apache

    实验环境说明:在物理机acer4739Z+ubuntu12.04以及虚拟机Win7+Wmware+ubuntu14.04都做过测试。    

    在Ubuntu上安装Apache,有两种方式:1 使用开发包的打包服务,例如使用apt-get命令;2 从源码构建Apache。本文章将详细描述这两种不同的安装方式。

1 apt-get安装apache

1.1 安装

    在命令行终端中输入下面的命令:

ubuntu $ sudo apt-get install apache2

    安装完成后,重启apache服务,在命令行终端中输入下面的命令:

ubuntu $ sudo  /etc/init.d/apache2  restart

1.1.1 可能会出现的问题1

Ubuntu中安装和配置Apache_第1张图片

    出现上述问题的原因:定义了多个NameVirtualHost,故将/etc/apache2/ports.conf中的NameVirtualHost *:80注释掉即可。

1.1.2可能会出现的问题2

Ubuntu中安装和配置Apache_第2张图片

    原因:根据提示,无法可靠的确定服务器的有效域名,使用127.0.1.1作为服务器域名。应此,在下面的测试中,应该使用127.0.1.1,而不是127.0.0.1!

解决:打开以下文件(ubuntu14.04中安装的Apache默认不存在这个文件)

ubuntu $ vim /etc/apache2/httpd.conf

    在文件中添加:

ServerName localhost:80

    再次重启apache2,就可以使用127.0.0.1来访问web服务器啦!

    需要说明的是,上面的问题是在使用物理机+ubuntu12.04环境中出现的,使用Vmware+ubuntu14.04时只出现问题2,但是并不影响使用127.0.0.1去访问web服务器!

1.3 测试

1.3.1 本机测试

        在浏览器里输入http://localhost或者是http://127.0.0.1,如果看到了It works!,那就说明Apache就成功的安装了,Apache的默认安装,会在/var下建立一个名为www的目录,这个就是Web目录了,所有要能过浏览器访问的Web文件都要放到这个目录里。

1.3.2 测试过程中可能遇到问题

Ubuntu中安装和配置Apache_第3张图片

原因:apache2使用的服务器地址不是127.0.0.1,根据在前面的分析,可能的ip为127.0.1.1,访问http://127.0.1.1即可。

说明:这个问题是使用物理机+ubuntu12.04时出现的,使用Wmware+ubuntu14.04时并没出现这个问题。

1.3.3 跨机测试

    在VMware上安装ubuntu,网络设置为桥接模式。在ubuntu中启动Apache后,在Windows中使用浏览器打开ubuntu的IP(不是上面的127.0.0.1了!),即可显示与1.3.1相同的内容。也可以使用其它电脑对这个IP进行访问。

1.3.4 添加html文件

    在/var/www/html目录中添加一个test.html文件(使用360浏览器保存一个网页,将其命名为test.html即可)。然后可以在浏览器中通过下面的格式访问这个test.html文件:

1.4 配置CGI

    根据参考资料[13]的提示,进入进入/etc/apache2目录,然后创建mods-available/cgi.load的软链接到mods-enabled目录:

ubuntu $ cd  /etc/apache2
ubuntu $ ln  -s  /etc/apache2/mods-available/cgi.load  mods-enabled/cgi.load

    提示:第1个目录必须指定全路径,否则链接不成功。

     说明:mods-available目录中的文件表示当前Apache可用的模块,但是还没有正式生效。如果希望生效,必须创建软链接到mods-enabled目录中。

    重启Apache即可使用CGI模块。参考资料[13]说明的配置方法比较复杂一些,我这里使用的是ubuntu14.04,配置相对了来说比较简单,只需要配置上面一个就可以正常使用CGI模块了。

1.5 测试CGI

1.5.1 perl语言

    根据参考资料[14]的提示,写一个perl程序如下,并且命名为first.pl:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.\n";

     将first.pl复制到/usr/lib/cgi-bin目录中,然后在浏览器中输入以下地址,即可以看到first.pl的输出:Hello World.


    提示:上面的IP地址要根据实际IP进行修改。

1.5.2 shell脚本

    除了使用perl语言外,还可以使用shell脚本:

#!/bin/bash
echo Content-type: text/html    # 这是必须的格式
echo                            # 这是必须的格式
echo                            # 这是必须的格式
echo message form shell script.

    将上述脚本内容保存为first.sh,并且开启可执行位:

ubuntu $ chmod +x first.sh

    放在/usr/lib/cgi-bin目录下即可到达和1.5.1相同的效果。

1.5.3 C语言

    这里再提供一个C语言版本的CGI程序:

#include <stdio.h>
int main(void)
{
       printf("Content-Type: text/html\n\n");
       printf("message from hello.c\n");
       return 0;
}

    编译上述程序,将可执行文件重名为hello,然后将其复制到/usr/lib/cgi-bin目录中,就可以通过网页访问。效果同1.5.1。

    关于C语言版的CGI脚本的编写,详见参考资料[15]。

2 卸载 

如果觉得不再需要apache了,可以将它卸载:

2.1  删除apache
在命令行中输入:

ubuntu $ sudo apt-get --purge remove apache-common
ubuntu $ sudo apt-get --purge remove apache

2.2 找到没有删除掉的配置文件,一并删除
代码:

ubuntu $ sudo find /etc -name "*apache*" |xargs  rm -rf 
ubuntu $ sudo rm -rf /var/www
ubuntu $ sudo rm -rf /etc/libapache2-mod-jk

2.3 删除关联,这样就可以再次用apt-get install apache2 重装了

ubuntu $ dpkg -l |grep apache2|awk '{print $2}'|xargs dpkg -P

3 源码安装Apache

3.1 下载源码 

    在此http://httpd.apache.org/download.cgi下载最新版的apcache,然后将其复制到目录/usr/src中,对其进行解压:

ubuntu $ tar xvf httpd-2_X_XX.tar

3.2 配置和构建apache

    至少要指定选项--enable-so,告诉apache启动加载共享模块的功能。

ubuntu $cd httpd-2_X_XX
ubuntu $./configure --enable-so  [other options]

可能遇到的问题:configure: error: APR not found.  Please read the documentation.

原因:缺少apr包,安装一个就好!

ubuntu $wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz 
ubuntu $tar -zxf apr-1.4.5.tar.gz  
ubuntu $cd  apr-1.4.5  
ubuntu $./configure --prefix=/usr/local/apr  
ubuntu $make && make install  

新问题:configure: error: APR-util not found.  Please read the documentation.


原因:缺少apr-util包,安装一个就好!

ubuntu $wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz  
ubuntu $tar -zxf apr-util-1.3.12.tar.gz  
ubuntu $cd apr-util-1.3.12  
ubuntu $./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config  
ubuntu $make && make install 

Apache时加上:
--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/

问题解决,继续下一步!

ubuntu $ make

3.3  安装apache

ubuntu $make install

安装成功,重启apache

ubuntu $/usr/local/apache2/bin/apachectl restart

可能出现的问题:(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80

Ubuntu中安装和配置Apache_第4张图片

原因:80端口被占用了,把占用80端口的进程杀死行了!

ubuntu $ps  -e

将会列出所有的apache2进程,用下面的命令逐个将他们杀死:

ubuntu $kill -9 xxx

还有资料说,使用netstat -lnp|grep 80找出占用80端口的进程,然后将其杀死。经测试,发现这样找到的进程不齐全!


3.4 测试

    同方法1的测试

4 区别

    方法1安装的apache,默认的文档目录是/var/www,而方法2安装的apache,默认的文档目录是[apache安装目录]/htdocs,可以通过修改httpd.conf中的DocumentRoot来改变。

参考资料

[1]ubuntu下安装Apache+PHP+Mysql

[2]apache2 [warn] NameVirtualHost *:80 has no VirtualHosts的解决方法

[3]Ubuntu 完全卸载apache2

[4]Ubuntu下彻底卸载apache2

[5]解决apache启动错误"httpd:Could not reliably determine..."

[6]安装Apache提示APR not found的解决办法

[7]解决编译Apache出现的问题:configure: error: APR not found . Please read the documentation

[8]apache启动报错(98)Address already in use: make_sock: could not bind to address [::]:80

[9]配置Apache对CGI的支持

[10]Apache指南:CGI动态页面

[11] CGI & APACHE

[12]linux Apache CGI 安装配置

[13]Ubuntu Apache配置以及cgi配置

[14]CGI动态页面

[15]Getting Started with CGI Programming in C

你可能感兴趣的:(Ubuntu中安装和配置Apache)