Learning together

Learning together with open source fans. QQ群:8021887


  • 网站首页

  • 站内留言

  • 关于本站

  • 我的相册

  • 联系羽飞

  • 内容订阅
  • 第九章:Apache服务全攻略(一基础)

    作者: 羽飞 | 发布时间: 星期天, 02/07/2010 - 21:45 |

    内容简介
    Web服务的概述
    Apache服务器
    Apache服务器的安装
    Apache服务的基本配置
    用户认证的配置
    虚拟目录的配置
    虚拟主机的配置
    SSL配置(小布老师的系列视频)
    案例详解(CGI PHP JSP)

    HTTP协议
    WWW的目的就是使信息更易于获取,而不管它们的地理位置在哪里。当使用超文本作为WWW文档的标准格式后,人们开发了可以快速获取这些超文本文档的协议——HTTP协议,即超文本传输协议。
    HTTP是应用级的协议,主要用于分布式、协作的信息系统。HTTP协议是通用的、无状态的,其系统的建设和传输的数据无关。HTTP也是面向对象的协议,可以用于各种任务,包括名字服务、分布式对象管理、请求方法的扩展、命令等。
    在Internet上,HTTP通信往往发生在TCP/IP连接上,其默认的端口为80,也可以使用其他端口。

    Web服务
    Web服务的实现采用客户/服务器模型。客户机运行WWW客户程序——浏览器,它提供良好、统一的用户界面。浏览器的作用是解释和显示Web页面,响应用户的输入请求,并通过HTTP协议将用户请求传递给Web服务器。Web服务器一端运行服务器程序,它最基本的功能是侦听和响应客户端的HTTP请求,向客户端发出请求处理结果信息。
    Web服务通常可以分为两种:静态Web服务和动态Web服务。
    Web服务工作原理(图)

    ① Web浏览器使用HTTP命令向一个特定的服务器发出Web页面请求。
    ② 若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请求后,就发送一个应答并在客户和服务器之间建立连接。
    ③ 服务器Web查找客户端所需文档,若Web服务器查找到所请求的文档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则服务器会发送一个相应的错误提示文档给客户端。
    ④ Web浏览器接收到文档后,就将它显示出来。
    ⑤ 当客户端浏览完成后,就断开与服务器的连接。

    Apache服务器的安装
    1.安装Apache服务器
    使用下面的命令检查系统是否已经安装了Apache或查看已经安装了何种版本。
    rpm -q httpd
    rpm -ivh /mnt/Server/httpd-*.el5.i386.rpm

    2.测试Apache服务器
    执行“/etc/init.d/httpd start”命令,确认Web服务已经启动后,在客户端使用的Web浏览器中输入Linux服务器的IP地址进行访问 。

    httpd.conf文件的格式
    httpd.conf配置文件主要由全局环境(Section 1: Global Environment)、主服务器配置(Section 2: ‘Main’ server configuration)和虚拟主机(Section 3: Virtual Hosts)3个部分组成。
    所有配置语句的语法为“配置参数名称 参数值”的形式,配置语句可以放在文件中的任何地方,但为了增强文件的可读性,最好将配置语句放在相应的部分。
    httpd.conf中每行包含一条语句,行末使用反斜杠“\”可以换行但是反斜杠与下一行中间不能有任何其他字符(包括空白)。

    apache服务的基本配置
    1.设置主目录的路径
    DocumentRoot “/var/www/html“
    2.设置默认文档
    DirectoryIndex index.html index.html.var
    3.设置Apache监听的IP地址和端口号
    Listen 80
    4.设置相对根目录的路径
    ServerRoot “/etc/httpd“
    5.设置日志文件
    (1)错误日志
    ErrorLog logs/error_log
    (2)访问日志
    CustomLog logs/access_log combined
    6.设置网络管理员的E-mail地址
    ServerAdmin root@163.com
    7.设置服务器主机名称
    ServerName 10.0.0.8:80
    8.设置默认字符集
    AddDefaultCharset UTF-8

    创建虚拟目录
    虚拟目录有以下优点。
    (1)便于访问。
    (2)便于移动站点中的目录。
    (3)能灵活加大磁盘空间。
    (4)安全性好。
    使用Alias选项可以创建虚拟目录。
    【例】创建名为/down的虚拟目录,它对应的物理路径是“/software/download”。
    Alias /down “/software /download”

    设置目录权限
    可以使用< Directory 目录路径 >和< /Directory >这对语句为主目录或虚拟目录设置权限,它们是一对容器语句,必须成对出现,它们之间封装的是具体的设置目录权限语句,这些语句仅对被设置目录及其子目录起作用。下面是主配置文件中设置目录权限的例子。
    < Directory "/var/www/icons" >
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
    < /Directory >

    目录特性选项
    Indexes 允许目录浏览
    当客户仅指定要访问的目录,但没有指定要访问目录下的哪个文件,而且目录下不存在默认文档时,
    Apache 以超文本形式返回目录中的文件和子目录列表(虚拟目录不会出现在目录列表中)
    MultiViews 允许内容协商的多重视图
    MultiViews 其实是Apache的一个智能特性。当客户访问目录中一个不存在的对象时,如访问”http://10.0.0.8/icons/a”,则Apache会查找这个目录下所有a.*文件。
    由于icons目录下存在a.gif文件,因此Apache会将a.gif文件返回给客户,而不是返回出错信息
    All All包含了除MultiViews之外的所有特性,如果没有Options语句,默认为All
    ExecCGI 允许在该目录下执行CGI脚本
    FollowSymLinks 可以在该目录中使用符号连接
    Includes 允许服务器端包含功能
    IncludesNoExec 允许服务器端包含功能,但禁用执行CGI脚本

    用户认证
    1.建立口令文件
    htpasswd -c /etc/httpd/mysecretpwd abc
    Htpasswd /etc/httpd/mysecretpwd tom

    2.建立虚拟目录并配置用户认证
    Alias /mysecret “/usr/local/mysecret”
    < Directory "/usr/local/mysecret" >
    AuthType Basic
    AuthName “This is a private directory. Please Login:”
    AuthUserFile /etc/httpd/mysecretpwd
    Require user abc tom
    < /Directory >

    虚拟主机的配置
    1.虚拟主机的概述
    利用虚拟主机技术,可以把一台真正的主机分成许多“虚拟”的主机,从而实现多用户对硬件资源、网络资源共享,大幅度降低了用户的建站成本。
    2.基于IP地址的虚拟主机
    注:在此环境下,必须要设置IP为固定。端口监听也要注意!
    3.基于域名的虚拟主机
    注:用DNS来配置一个IP对就不同的域名。

    虚拟主机的配置
    基于IP地址的虚拟主机
    < VirtualHost 10.0.0.8 >
    ServerName 10.0.0.8:80
    ServerAdmin web1@163.com
    DocumentRoot “/usr/www/web1″
    DirectoryIndex index.html
    ErrorLog logs/web1/error_log
    CustomLog logs/web1/access_log combined
    < /VirtualHost >
    < VirtualHost 10.0.0.9>
    ServerName 10.0.09:80
    ServerAdmin web2@163.com
    DocumentRoot “/usr/www/web2″
    DirectoryIndex default.html
    ErrorLog logs/web2/error_log
    CustomLog logs/web2/access_log combined
    < /VirtualHost >

    基于域名的虚拟主机
    当Web服务器收到访问请求时,就可以根据不同的DNS域名来访问不同的网站。它的优势就是不需要更多的IP地址,容易配置。
    NameVirtualHost 10.0.0.8
    < VirtualHost www.abc.com >
    ServerName www.abc.com:80
    ServerAdmin web1@163.com
    DocumentRoot “/usr/www/web1″
    DirectoryIndex index.html
    ErrorLog logs/web1/error_log
    CustomLog logs/web1/access_log combined
    < /VirtualHost >
    < VirtualHost www.xyz.com>
    ServerName www.xyz.com:80
    ServerAdmin web2@163.com
    DocumentRoot “/usr/www/web2″
    DirectoryIndex default.html
    ErrorLog logs/web2/error_log
    CustomLog logs/web2/access_log combined
    < /VirtualHost >

    CGI运行环境的配置
    Web浏览器、Web服务器和CGI程序之间的一个工作流程。
    (1)用户通过Web浏览器访问CGI程序。
    (2)Web服务器接收用户请求并交给CGI程序处理。
    (3)CGI程序执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序。
    (4)CGI程序产生某种Web服务器能理解的输出结果。
    (5)Web服务器接收来自CGI程序的输出并且把它传回Web浏览器。
    Perl语言解释器的安装
    默认情况下,Red Hat Enterprise Linux安装程序会将Perl语言解释器安装在系统上,读者可使用下面的命令检查系统是否已经安装了Perl解释器或查看已经安装了何种版本。
    rpm -q perl
    如果系统还没有安装Perl解释器。
    rpm -ivh /mnt/Server/ perl-5.8.8-10.i386.rpm

    httpd.conf文件的配置
    1.设置存放CGI文件的目录权限
    应在主目录权限设置的Options指令中添加一个“ExecCGI”选项。
    2.标明CGI程序的文件类型
    找到“#AddHandler cgi-script .cgi”语句,删除前面的“#”即可,该语句告诉Apache扩展名为“.cgi”的文件是CGI程序。

    测试CGI运行环境
    ① 在CGI文件存放的目录(如/var/www/html/)中建立一个名为test.cgi的文件,该文件的内容如下。
    #!/usr/bin/perl
    print “Content-type: text/html\n\n”;
    print “hello world!!!”;
    exit

    ② 执行命令“chmod +x /var/www/html/test.cgi”,为test.cgi文件添加运行权限。
    ③ 在客户端的浏览器访问“http://Linux服务器的IP地址/test.cgi” 。

    PHP运行环境的配置
    rpm -ivh /mnt/Server/php-common-5.1.6-5.el5.i386.rpm
    rpm -ivh /mnt/Server/php-cli-5.1.6-5.el5.i386.rpm
    rpm -ivh /mnt/Server/php-5.1.6-5.el5.i386.rpm

    ① 在Apache主目录/var/www/html/中建立一个名为test.php的文件,该文件的内容如下。

    ② 在客户端的浏览器中访问“http://Linux服务器的IP地址/test.php” 。

    JSP运行环境的配置
    安装Tomcat5
    配置Tomcat5与apache整合
    写入测试页测试

    关于本地源的配置,大家可以看上一篇文章

    http://www.freeopens.com/2010_02_623.html

    Tomcat的安装
    yum install tomcat5 tomcat5-webapps tomcat5-admin-webapps
    安装Tomcat服务及关联程序
    /etc/rc.d/init.d/tomcat5 start
    启动Tomcat服务后,打开客户端的浏览器访问http://10.0.0.8:8080

    整合Apache和Tomcat
    1.下载mod_jk.so拷贝到/etc/httpd/modules目录中,并将它重命名为mod_jk.so
    2、配置
    在/etc/httpd/conf/下面建立两个配置文件mod_jk.conf和workers.properties
    # vi mod_jk.conf
    JkWorkersFile /etc/httpd/conf/workers.properties
    JkLogFile /etc/httpd/logs/mod_jk.log
    JkLogLevel info
    JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    JkRequestLogFormat “%w %V %T”
    JkMount /servlet/* worker1
    JkMount /*.jsp worker1

    整合Apache和Tomcat
    # vi workers.properties
    worker.list=worker1
    worker.worker1.type=ajp13
    worker.worker1.host=localhost
    worker.worker1.port=8009
    worker.worker1.lbfactor=50
    worker.worker1.cachesize=10
    worker.worker1.cache_timeout=600
    worker.worker1.socket_keepalive=1
    worker.worker1.socket_timeout=300

    ③在Apache的配置文件中,增加关于加载mod_jk的语句:
    LoadModule jk_module modules/mod_jk.so
    Include /etc/httpd/conf/mod_jk.conf

    ④最后编辑Tomcat的配置文件/etc/tomcat5/server.xml,在HOST段(倒数第四行)中加入
    < Context path="" docBase="/var/www/html" debug="0" reloadable="true" crossContext="true"/ >
    ⑤在/var/www/html下建立一个index.jsp,启动Apache和Tomcat进行测试

    案例后在一下篇给出!

    相关文章

    发表评论