apache下载,apache官网

  

  WWW服务器   

  

  有许多构建web服务器的软件。   

  

  阿帕奇是世界上使用最多的。   

  

  LAMP L=linux,A=apache,M=mysql,P=PHP或perl等。   

  

  还有一个LAMMP;   

  

  Apache主配置文件的路径:/etc/httpd/conf/httpd.conf   

  

  # /etc/httpd/conf/httpd.conf   

  

  它会显示系统的版本号(访问不存在的网页时,也会显示一些服务器信息)。   

  

  当以下配置没有指示路径时,它将使用此路径。   

  

  其进程ID的路径(完整路径/etc/httpd/run/)   

  

  超时时间(客户端和服务器连接时)   

  

  传输第一个文件时,需要建立到三次握手的连接。当第一个文件完成时,需要在传输第二个文件时建立到三次握手的连接。也就是说,每个文件都会断开连接,在传输下一个文件时会重新建立连接。这里建议改成on.   

  

  只有在keepAlive开启的情况下,它才在这里起作用,也就是说,在100个文件通过之前,它不会断开连接。也就是说这100个文件是有联系的。   

  

  也就是说,keepAlive开着的时候,是在这里工作的,就是一个文件通过之后,下一个文件就会通过,不会断开,但是这个只要超过15秒就会断开。   

  

  在,的Apache 2.0版本之后,它支持被称为MPM(多处理模块)的东西。Apache中有两个常用的模块:   

  

  第一个叫做:prefork 默认运行的模块.   

  

  第二个叫做:worker.   

  

  prefork   

  

  start servers 8 : Apache启动时,默认会启动8个进程;   

  

  MinSpareServers 5 :当有很多客户端连接时,我想保留的最小备份进程是5;   

  

  MaxSpareServers20 :当有很多客户端连接时,我想保留的最大备份进程是20;   

  

  也就是说,当连接100个客户端时,这里至少有5个httpd进程在运行,最多只有20个进程在运行。也就是说,当连接100个客户端时,至少会有105到120个进程在运行,其中5到20个是备份进程(空闲进程)。   

  

  ServerLimit 256 :用于限制客户端的连接数。   

  

  MaxClients 256 :最多允许256个客户端同时连接我的服务器(256可以说是这里的并发)。   

  

  它监听的端口是80(您可以在这里更改端口号)。   

  

  当模块运行这些文件时,它会将conf.d/目录中的所有conf文件包含在其配置文件中。   

  

  当进程运行时,进程的所有者和组是apache(可以提高安全性)。   

  

  管理员邮箱,即站点出现问题时,系统会将内容发送到管理员邮箱(root@localhost)。   

  

  设置站点名称和端口   

  

  文档主目录(Web目录)   

  

  这里设置了一些规则来管理对/var/www/html/目录的访问。目录/后面的根目录指的是/etc/httpd/this目录,而不是我们系统的根目录。具体细节如下:   

  

  找到下面的目录“/var/www/html”和/Directory找到这两行,然后去掉这两行中间的所有注释,只留下下面一行,如下:   

  

  # option文件信息授权配置限制   

  

  最后几个如下:   

  

  下面是每个选项的含义,如下所示:   

  

  当我访问一个文件夹时,如果这个文件夹中没有我要访问的网页(默认网页是index.html),系统会显示这个网页中的所有内容。注意:这样会带来一定的安全风险,因为这个网页里的目录都列出来了。然后,我们可以从Indexes ,删除此文件夹,当客户端再次访问它时,此文件夹中的内容将不会显示,但Forbidden,的内容也不会显示。FollowSymLinks可以制作一个虚拟目录(通过软连接),也就是说,FollowS.   

ymLinks选项是可以做通过软连接来做虚拟目录的,如果把这个给删除掉,那就不可以通过软件连接来做虚拟目录了

  

访问控制列表;这里的顺序很重要,先写allow还是先写deny顺序很重要,写在后面的将会成为默认的,因为deny写在后面的,它就默认的,具体的allow和deny怎么来实现访问控制,它是通过下面的allow from 和 deny from后面的值来决定的,如果allow from 和 deny from后面的值相冲突,那么是默认的生效。

  

访问控制列表;

  

Deny from 这里的Deny from默认没有写

  


  


  


  


  


  


  

如果我要是想给某个目录做一个限制的话,可以这样做,把上面八号再复制一份,如下:!!!!!!!

  

比如说我想对根下面的XX做一个限制,如下:

  

这里就写了xx目录“/var/www/html/xx”,然后下面就是对这个目录做的一个限制,只允许本地可以访问。

  


  

个人主页,默认主机是关闭的,我们访问不了,如果要是打开的话,可以把这行给注释掉或者把后面disabled给改成enabled都可以。然后把下面的注释给去掉就可以了

  

如果个人主目录这行给开启的话,那么这一行必须也行开启,就是把前面的注释给去掉就可以了

  

这两个是用来设置个人主页用的。

  

你可以这样来操作,在用户的家目录下建一个文件夹,名字叫做public_html,当然这个名字也是可以改的,但是这里的名字一定要和配置文件里面的名字要一样,然后在这个用户的家目录中创建一个index.html文件,具体的访问方法如下: http://192.168.80.2/~server这样式就可以访问到server用户的个人主页了,如果访问不了,要从以下几个方面去考虑原因,1、就是public_html这个目录的权限;2、就是要考虑一个SElinux的问题,布尔值等问题;

  

主页,如果你在访问某个网页的时候没有指明主页,它默认的主页是index.html

  


  

主要用于我们对一个文件做控制(验证)用的,比如,网页上有某个文件夹内容只想让个别的人可以访问,就可以使用这里,比如你要是只想让个别人访问服务器上的xx这个文件(192.168.80.2/xx)时,输入密码,你必须在xx这个文件夹中创建一个 .htaccess文件出来,如下:

  

# vim /var/www/html/xx/.htaccess

  

AuthName xxxxxxxxxx 验证的名字(会出现在浏览器上)

  

AuthType basic 验证的类型
AuthUserFile /var/www/html/.htpasswd 绝对路径。因为要用密码来验证,必须指定它的一个密码文件才可以(这个路径可以随便写,必须是绝对路径。只要能验证密码就可以了)

  

Require user server 允许哪个用户登录

  

现在我们到/var/www/html/目录下面去创建这个文件 .htpasswd ,如下:

  

# htpasswd –cm .htpasswd server 创建.htpasswd文件给server加密

  

“c”创建 “m”是MD5加密

  

然后找到AllowOverride 这行,把后面none改成 authconfig,保存退出重启服务。即可

  


  


  


  

脚本的别名。

  

意思:当你在写脚本的时候,如果说在你所输入的地址栏里,如果出现了cgi-bin的话,它实际上是运行的是/var/www/cgi-bin/这个目录里面的内容。

  

Cgi的全称:公共网络接口,他实现的就是一些动态语言的功能。

  

QQ的外部邮箱就是使用perl来完成的。登录QQ邮箱的时候,地址栏里就有一个cgi-bin

  

# curl –head 192.168.80.2 !!!!

  

这条命令的意思是:查看192.168.80.2这台web 服务器是用什么平台给搭建起来的

  

我们现在进入/var/www/cgi-bin这个目录,然后用perl在里面写一个脚本,如下:

  

然后把curl –head 192.168.80.2 结果里面的Content-Type: text/html这行给复制到下面的脚本中,具体如下:

  

# vim test.pl

  

#!/usr/bin/perl

  

Print “Content-Type: text/html\n\n”;

  

$now=localtime();

  

Print $now,”\n”;

  

然后给这个文件加上一个X权限,运行一下会显示本地时间。

  

在客户端可以这样访问,在地址栏里输入http://192.168.80.2/cgi-bin/test.pl

  

在网页里会显示系统时间,每刷新,时间就会动。

  

上面的脚本我们也可以使用shell来写,如下:

  

# vim xx.sh

  

#!/bin/bash

  

Echo “Content-Type:text/html”

  

Echo

  

Now=`date`

  

Echo $now

  

同样客户端在地址栏里输入http://192.168.80.2/cgi-bin/xx.sh也会动态显示时间。

  

可以在下面加一条别名,如下:

  

这里有一个语法要注意: /aa/ “/aa/” 前面的/aa/后面的 / 很重要,一定要加,就是说,前面写了 / ,双引号里面的后面也要加 /,要有都有,要无都无。

  

这样,客户端在地址栏里输入http://192.168.80.2/aa这时,客户端访问的就是根下面的aa文件夹里面的内容了

  

这里设置了系统的一些编码,当你使用apache来搭建web 服务的时候,当你去下载一些软件来搭建WEB服务的时候,只能下载UTF-8版本的,而不能下载GDK版本的,如果你下载GDK版本的,你装起来,会发现编码全是乱码

  

apache所支持的一些语言。

  

语言的优先级

  

语言所支持的编码是UTF-8

  

apache来做代理用的

  


  

这部分是用来做虚拟主机的。

  

大家想一个问题,有时候我们是需要做一个网站的,当我们做个人网站的时候,你不可能个人用一个服务器的,比如你在家里面做,通过花生壳做一个映射也行,但是网速很慢,如果你去买一个服务器托管,这个费用又很贵,一般不愿意花这个钱,一般我们都会到互联网上去买一些空间出来。是这样,如果一个人他有一台服务器,托管起来,硬盘空间又很大,然后他又会通过磁盘配额划分一个个的磁盘空间出来,然后卖给别人。那即然你是卖空间的话,就意味着在同一台服务器上有很多个站点,也就是说多个站点共用一个IP地址,这种就叫做基于主机名的虚拟主机。在同一台主机上跑了很多个站点,这些站点就叫做虚拟主机。如果说这些站点使用一个IP地址的话,就叫基于主机名的虚拟主机;如果这些主机使用不同的IP地址的话,就叫基于IP地址的虚拟主机,这就说明了,在同一台服务器上可以搭建很多个虚拟主机。

  

1、 基于主机名的虚拟主机

  

2、 基于IP地址的虚拟主机

  

3、 基于端口的虚拟主机

  

前两者我们用的还是很多的,基于主机名的虚拟主机和基于IP地址的虚拟主机;

  


  

一、下面我们来看看基于主机名的虚拟主机:

  

首先把这行注释给去掉

  

这一行必须给去掉注释

  

然后把下面的注释全部去掉,得到如下:

  

管理员邮箱

  

虚拟主机目录

  


  

日志相关

  

日志相关

  


  


  

这些中间有些条目我们可以给删除掉的,最后保留的条目如下:

  

然后我们把四行给复制几下分别把baidu.com、google.com给写进去,但是要记住,把原来站点也要写去,否则原来的站点无法访问,如下:

  

<VirtualHost *:80>

  

DocumentRoot /baidu

  

ServerName www.baidu.com

  

</VirtualHost>

  

<VirtualHost *:80>

  

DocumentRoot /google

  

ServerName www.google.com

  

</VirtualHost>

  

<VirtualHost *:80>

  

DocumentRoot /var/www/html

  

ServerName www.rhce.cc

  

</VirtualHost>

  

截图如下:

  

然后,把baidu和google两个文件夹给创建出来,再改一下这两个文件夹的上下文,具体如下:

  

# mkdir /baidu

  

# mkdir /google

  

# echo baidu > /baidu/index.html

  

# echo google > /google/index.html

  

# chcon –R –reference=/var/www/html/ /baidu /google 更改这两个文件夹的上下文(重要

  


  

二、基于IP地址的虚拟主机

  

如果说我有很多个IP地址,可以给每个不同的站点分配不同的IP地址,就叫做基于IP地址的虚拟主机。具体做法如下:

  

给机器多配几个IP地址:

  

# ip addr add 10.10.10.10/8 dev eth0 label eth0:1

  

# ip addr add 10.10.10.11/8 dev eth0 label eth0:2

  

然后查看一下eth0接口的IP地址列表:

  

# ip addr show eth0

  

然后给这两个网卡配置一个文件,如下:

  

# cd /etc/sysconfig/network-script/

  

# cp ifcfg-eth0 ifcfg-eth0:1

  

把里面的MAC地址行给删除掉,把设备名改成eth0:1,可以把不需要的行给删除掉;

  

eth0:2同样。

  

这样我们配置的IP地址就永久性的生效了。

  

# ip addr show eth0 查看IP信息

  

然后再去更改DNS信息,baidu区域 google区域

  

把baidu 的IP改成10..10.10.10;把google的IP改成10.10.10.11

  

然后重启named服务。

  

下面开始做基于IP地址的虚拟主机,如下:

  

把这行给注释掉

  

然后把下面的几行里的*改成IP地址,如下:

  

<VirtualHost 10.10.10.10:80>

  

DocumentRoot /baidu

  

ServerName www.baidu.com

  

</VirtualHost>

  

<VirtualHost 10.10.10.11:80>

  

DocumentRoot /google

  

ServerName www.google.com

  

</VirtualHost>

  

<VirtualHost 10.10.10.3:80>

  

DocumentRoot /var/www/html

  

ServerName www.rhce.cc

  

</VirtualHost>

  

如何实现https连接

  

首先我们要安装一个包,如下:

  

# yum install mod_ssl -y 就是装上SSL的模块

  

装完之后,会发现在/etc/httpd/conf.d/目录下面多了一个ssl.conf文件

  

下面我们来编辑这个文件,如下:

  

# vim /etc/httpd/conf.d/ssl.conf

  

使用的端口

  

虚拟主机,也就是说刚刚建立的三个虚拟主机也会受到影响443

  

它是SSL的一个引擎,如把这个on改成off,则所有站点都无法使用https来访问了。

  

这是一个证书文件,也是CA给颁发的

  

这是一个密钥

  

创建证书,步骤如下:

  

首先进入这个目录“/etc/pki/tls/certs/”,进入这个目录,里面有一个makefile文件,然后开始创建密钥,如下

  

# make aa.crt 创建好证书之后,再执行下面步骤,如下:

  

# cp aa.* /etc/httpd/conf/ (将aa.crt和aa.key全拷贝到/etc/httpd/conf/目录中)

  

然后把下面两行后面路径改一下,如下:

  

改后:

  

然后保存,退出,重启服务

  

# service httpd restart

  


  


  


  


  

客户端第一次通过https连接到服务器时,会有下面提示,如下:

  

这时我们可以点下面的“我已充分了解可能的风险”,然后在里面有一个“添加例外”,再点击获取证书,确认安全例外,即可。

  

此时服务器有三个站点,www.rhce.cc、www.sina.com、www.google.com、这三个站点,现在我只想让www.rhce.cc使有https,其它两个站点使用http访问,做法如下:

  

第一:把/etc/httpd/conf.d/ssl.conf文件中的SSLEngine 后面的值改成off,这样,所有的站点都无法使用https;

  

第二:再去编辑/etc/httpd/conf/httpd.conf文件,在www.rhce.cc虚拟主机这部分添加如下内容:(红色部分是添加的部分,另外把80端口改成 443端口)

  

<VirtualHost 10.10.10.3:443>

  

DocumentRoot /var/www/html

  

ServerName www.rhce.cc

  

SSLEngine on

  

SSLCertificateFile /etc/httpd/conf/aa.crt

  

SSLCertificateKeyFile /etc/httpd/conf/aa.key

  

</VirtualHost>

  

第三:重启httpd服务

  


  

如何监控web服务器的日志

  

下面讲两个工具: webalizer awstats

  

工具一: webalizer

  

Webalizer工具是系统自带的工具,我们安装一下:

  

# yum install webalizer -y 安装webalizer工具

  

装完之后,在/etc/httpd/conf.d/目录下面会多一个webalizer.conf文件,这就说明和apache绑定在一起了

  

下面看看webalizer.conf这个文件,如下:

  

# vim /etc/httpd/conf.d/webalizer.conf 此文件是设置权限

  

这个文件里设置的是,这里Alias /usage /var/www/usage 意思是,访问www.rhce.cc/ usage时就是访问/var/www/usage这个目录,下面就的几行就是对这个文件所做的一些权限,哪些人可以访问/var/www/usage这个目录,哪些人不可以访问;

  


  

# vim /etc/webalizer.conf 配置文件

  

因为它是分析日志的工具,所以这里标的是它读取的是哪个日志文件

  

分析完日志产生的报表所放的位置

  


  

使用webalizer工具,只要在命令行里输入 # webalizer就可以了

  

运行过之后 ,此时就生成了一个报表,报表位于 /var/www/usage/目录中。

  

下面把httpd服务重启一下,service httpd restart

  

然后到客户端,在地址栏里输入 www.rhce.cc/usage,此时访问的就是那个报表

  


  

工具二: awstats 此工具可到 pkgs.org去下载

  

安装: # yum localinstall awstats-7.0-2.el6.noarch.rpm

  

这个程序是用perl语言来写出来的

  

装完之后在/etc/httpd/conf.d/会生成一个文件awstats.conf

  

打开来看一下:# vim /etc/httpd/conf.d/awstats.conf

  

这里和webalizer一样,客户端访问方法:www.rhce.cc/awstatscss

  


  

装好之后,它的配置文件是放在 /etc/awstats目录下面的

  

当它运行的时候,它会读取/etc/awstats/目录中的awstats.conf这个文件,但是这个目录里中又没有这个文件,我们需要生成这个文件,如下:

  

# cp awstats.server.rhce.cc.conf awstats.conf

  

下面我们来运行一下,如下:

  

首先分析日志的脚本放在 /usr/share/awstats/wwwroot/cgi-bin/,在这个目录中

  

Awstats.pl是用perl语言写出来,它就是用来分析日志的

  

下面就来运行一下这个程序,如下:

  

# ./awstats.pl -h 查看帮助

  

运行

  

# ./awstats.pl -config=www -update -output > index.html

  

将运行的结果输出为index.html ,这个index.html就是对日志分析的结果

  

下面我们来打开index.html文件看一下

  

最下面一行做了一个别名。 最后重启一下httpd服务

  


  

然后在客户端打开浏览器,在地址栏里输入: www.rhce.cc/awstats 就可以监视日志

  

对apache做测试,我们用 ab命令还是比较多的。

  

# ab -n 1000 -c 10 www.rhce.cc/index.html

  

这条命令的意思是发送1000个连接,同时发送10次,对后面的这个网页。(也叫压力测试

相关文章