web是服务是当今互联网运用的最广泛的服务之一,如何搭建,优化web服务是一个网站性能优劣的前提条件之一,我这里主要就来讲述基于RedHat系统来构建web服务,实现web应用的别名访问,每目录控制,认证访问,虚拟化多web服务。

    这里我主要是讲述基于RedHat的RPM包来实现web服务的应用,并使该服务与php,mysql结合工作。 现在最流行web服务软件当属Apache,最有潜力的web服务软件是Nginx.RedHat上web服务的应用程序名为httpd。下面我们就来利用yum来安装web服务,如下图:

   安装完成后我们可以用rpm -ql httpd 来查看httpd服务所生成的文件:如下图:

    

     网页文件所在位置:

     

    其中存放了我们要展示的网页文件。

  这是主要的几个配置文件,下面我们就来分析httpd的主配置文件都做了哪些设定:如下图:

 注意,这只是服务的根目录,与我们系统的根目录没有关系。当我们在遥浏览器浏览的时候就是以此目录为根目录的。

     我们知道每一个服务请求都要CPU分配进程各内存空间来运行进程,为了服务的高效率,所以内核有了进程和线程的区分来提高效率。对于web服务,当一个用户的请求进来之后我们CPU都会开启一个进和来提供服务,并维持此服务的连接,来响应用户的操作请求,一个请求的建立要用到TCP/IP协议中的三次请求和四次断开,如果我们一直的请求和断开,这也会很消费CPU的,所以有了长连接,就是当一次请求建立之后在一定限定内该服务可以不再进行多次的请求,断开连接。可这样也有不合理的地方,我们想,可如果在一次请求之后就不再作任何操作之后我们的CPU是否还要为这样的请求来维护一个连接呢?显然是不应该的,于是就有了超时时间,可是如果一个先进来请求一直处于活动状态,致使别的请求一次都无法进行连接请求,这显然对于服务来说也是不合理的,所以就有了最大连接次数,当超过此连接次数后,服务会自动断开这样的连接,如果连接还要继续就要重新的那家立TCP会话也就是三次请求和四次断开。

   于是就有了下面的配置文件的限定:

     RedHat系统上的web有两种模式,1.prefork模式和worker模式。profork模式是启用每一个请求启用一个进程来进行响应,且各个请求之间是独立的空间,请求之间没有影响;而worker模式是用线程来响应服务请求,线程之间共享内存,这样可以使访问同一个网页页面的时候直接从缓存中读取,这样大大的加快了响应的效率。我们同样知道,线程是进程所分的子进程,这样可能会导致当一个线和崩溃的时候导致整下进程的崩溃,影响到别的服务。 下面是对于进程响应和线程响应的服务配置:

 我们知道web服务通常是监听在80端口,其实这是服务别默认是配置,我们也可以作修改为别的端口,只不过这样会导致在别人不知的情况下无法访问我们的web服务:如下图:

  配置文件中也定义了默认的网页默认的存放位置,当有请求的时候会自动到该目录下找相应的网页文件:如下图:

   当我们不作任何配置修改,其实web服务就可以启动了,网页页面是服务默认的测试页面,我们用servivce httpd start 来启动服务,输入http://ip 就可以到这样的网页页面:

 这就说明我们服务启动已经正常。

下面我们来说明,如何显示我们自定义的网页文件,上面通过我分析配置文件我们已经知道网页文件保存在/var/www/html/中,是以index.html的文件。我们做这样的操作就可以显示我们想要的网页了:其中的"<h1>……</h1>"是一种固定格式,用来定义生效其包含在内的数据的属性,这里定义的是文字的大小属性。

   然后打开浏览器就可以看到我们定义的网页了,如下图:

 

    这就是基本的定义网页文件。

     *下面我们来定义别名的控制;

    我们刚才提到服务的网页文件在/var/www/html/ 目录中,这是服务默认的,但我们可以定义别名来使处于不同目录路径下的网页文件被访问到,但要注意的是要关闭selinux,因为在RedHat系统上,默认是不允许这样做的。 操作如下图: 其中要注意的是我们定义的目录别命中“/”的使用。

      

  并在/web/xiaowei/目录中做以下操作:

      echo "<h1>xiaowei</h1>" > /web/xiaowei/index.html

   然后访问就可以得到下面的结果:

 这样就建立了别名访问。

   * 下面我们来操作基于每目录的控制访问:如下图:

   我们可以在这里进行访问控制,这里定义的是允许所有,比如,当我们想只允许172.168.121.1访问的时候我们可以把其中的 allow from all 改为 allow from 172.16.121.1 .默认是拒绝所有,而只允许该ip的主机 。

   * 然后我们来说明基于认证的访问控制:

     我们在配置文件中的合适们置做如下操作:

 这就是对/var/www/html/ 目录的访问控制,其中的AuthUserFile项是我们自己生成的用户及密码的存放位置,只有在此目录中的用记才能访问/var/www/html/目录下的网页文件。至于用记及密码,httpd服务为我们提供了一个很方便的生成器,#htpasswd -c(清空) -m(md5加密) /etc/httpd/conf/.htpasswd 用户名          然后确认两次就可以了。

 那么,我们下次再访问/var/www/html/ 下的网页文件的时就需要密码认证了,如下图:

  *下面我们来讲述基于一个ip,利用虚拟端口来提供多web服务的设置,众所周知,ipv4地址的紧缺已是一个不争的话题,可当我们想建立多个web服务的时候,我们要支申请多个仅有的ip地址吗?显然,这也是不现实。可我们如何来保证一个ip提供多个web服务呢?这就用到了基于一个ip虚拟ip服务, 不过我们要行取消配置文件中默认的服务根目录文件 <Directory "/var/www/html">,并开启NameVirtualHost *:80选项:

做如下图的配置:

  完成之后要关闭selinux进行访问,建立/web/vhosts/www{a,b,c}三个目录,并分别写入aaa,bbb,ccc来作验证:                                              并在windows 的dns配置加入172.16.121.1 www.a.com;   172.16.121.1 www.b.com; 172.16.121.1 www.c.com ,作DNS解析使用。然后访问就会有如下的访问结果:

 

 这就是基于虚拟主机根据服务名来提供的多web服务。

 

     我们知道除了html格式的网页文件外还有php格式 的文件,而我们的web服务如何来提供这样的服务页面呢?其实也很简单,在RedHat的系统上基于RPM安装包的的web服务,php是以模块的方式做进内核当中的。我们只需要装载这样的模块就可以实现提供php格式的网页的浏览:我们这里用php53来安装:   

    #yum -y install php53

 并把/var/www/html/index.html改为/var/www/html/index.php 编辑index.php文件,作如下编辑:

      

 这是php的测试页面。默认格式 。

 然后我们再访问http://172.16.121.1的web服务就会出现下面的网页。

 

 这就说明我们的php已经和httpd结何工作了。

    下面我们就来使php和mysql结合工作来为httpd服务提供数据查询:

用yum安装包 mysql、php53-mysql 和mysql-server 这里我就不多说了,和前面安装的包一样。

  这样重启服务就可以让,httpd,php,mysql结何工作了,效果如下:

  

如果出现这样的画面,我们的httpd已经和 mysql结合工作了。

     这样,我们就完成了基于RPM包安装的httpd服务。