WWW服务器
搭建web服务器的软件很多。
Apache在全球使用量是最多的
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 为on的请况下,这里起作用,也就是说传递100个文件之后才会断开。就是说在这100个文件之间是保持连接的。
就是说当keepAlive为on的情况下,这里起作用,也就是传递完一个文件之后,再传下一个,之间是不会断开的,但是这个之间只要超过15秒,就会断开。
在apache 2.0版本以后,它支持了一个叫做MPM的东西(多处理模块),在apache中常用的模块有两种:
第一种叫做:prefork 默认运行的模块
第二种叫做:worker
prefork
Startservers 8 : 当apache在开启的时候,默认会开启8个进程;
MinSpareServers 5 : 当有很多个客户端连接过来的时候,我要保留的最小备份进程为5;
MaxSpareservers20 : 当有很多个客户端连接过来的时候,我要保留的最大备份进程为20;
也就是说当有一百个客户端连接过来,这里保留的最少有5个httpd进程在运行,最多只能有20进程在运行,也就是说当有100个客户端连接过来时,最少会有105个至120个进程在运行,其中5至20为备份用的(空余进程),
ServerLimit 256 : 用来限制客户端的连接数量的
MaxClients 256 : 最大允许256个客户端可以同时连接我的服务器(这里256可以说是并发量)
它所监听的端口为80 (可通过这里改端口号)
当运行模块这些文件的时候,它会把conf.d/这个目录下的所有conf文件全部包含在它的配置文件里面去
进程在运行的时候,进程的所有者和所属组都是apache(可提高安全性)
管理员的邮箱,就是说站点出现问题的时候,系统会把内容发送到这个管理员的邮箱(root@localhost)
设置站点名和端口
文档主目录(网页目录)
这里是设置写上一些规则来管理对/var/www/html/这个目录中的某个目录访问权限,<Directory />这个后面的根指的/etc/httpd/这个目录,而并不是我们系统的根,具体的详细紧跟如下:
找到下面的<Directory “/var/www/html”> 和 </Directory>找到这两行,然后把这两行中间的注释全部去掉,只保留下面这一行,如下:
# option FileInfo AuthConfig Limit
最后保留的如下:
下面看一下这里的每个选项是什么意思,如下:
当我在访问一个文件夹的时候,如果这个文件夹里没有我要访问的网页的话(默认访问的网页为index.html),系统会把这个网页里面的内容全部显示出来。注意:这样就会带来一定的安全隐患,因为这个网页中的所有目录都给列出来了吗,那我们可以把Indexes 这个给去掉,然后客户端再访问的时候,就不会显示这个文件夹里面内容了,会显示Forbidden,就不会显示里面的内容了。FollowSymLinks是可以做虚拟目录的(通过软连接来实现),就是说FollowSymLinks选项是可以做通过软连接来做虚拟目录的,如果把这个给删除掉,那就不可以通过软件连接来做虚拟目录了
访问控制列表;这里的顺序很重要,先写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次,对后面的这个网页。(也叫压力测试)

如若转载,请注明出处:https://www.yiheng8.com/154121.html