第九章:Apache服务全攻略(一基础)

2010年02月07日 Linux服务器, Linux视频 评论 2 条 阅读 14,692 views 次

内容简介
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.opsers.org/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进行测试

案例后在一下篇给出!

2 条留言  访客:1 条  博主:1 条

  1. 有一个很纠结的问题,我要备份数据库,怎么让Mysql数据库和wordpress程序断开呢?

    谢谢啦,这个问题很纠结,有空了帮忙看一哈

    • 这个可以有多种办法,
      1、安装WORDPRESS的数据库备份插件,进行在线备份
      2、用PHPMYSQL进行在线备份
      3、用MYSQL命令备份
      以上都无需要停机状态下完成。
      当然,如果想用傻瓜式的方式,就先把MYSQL停止,然后直接备份数据文件夹。
      以上的方法需要根据自己使用的空间情况来定,关键是哪种更适合自己。

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录