Linux服务篇之三:构建Apache服务器

Linux服务篇之三、构建Apache服务器 

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache工作模式有多种,其中最常用的有两种:

Prefork模式:Prefork MPM使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。

在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

Worker模式:Worker MPM使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。

Worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。

一、源码包安装Apache

1、下载软件,wge thttp://www.apache.org/dist/httpd/httpd-2.2.29.tar.gz

2、下载之前,先安装一下wget这个软件,

wKioL1WU-EeQrGhsAAMDDPk1PHs213.jpg

3、下载apache软件,

wKiom1WU-o3QC6L_AAPhZxnW1AE466.jpg

4、解压apache,

wKioL1WU_2PCUQZoAAIPt0ugY3s341.jpg

5、安装apache之前,需要先安装:apr、apr-util、apr-util-devel、gcc-c++

yum install apr apr-util -y

yum install apr-devel apr-util-devel -y

yum install gcc-c++ -y

注:ap和apr-uti是一些优化的库文件;

6、下面开始正式安装apache

进入该目录:预编译、编译、安装、到指定的具体安装目录:

./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --with-mpm=worker

 make&&make install

7、进入安装目录,

wKioL1WVDMShF8F9AAPqydXiQ2g615.jpg

8、并启动apache服务,端口80已经看到,该服务已经启动了!

wKioL1WVDMSwrD0hAAO4Bk5iRTo119.jpg

9、打开浏览器,首页已经成功打开了!

wKioL1WVDV2T8IvUAAEY5KnjH5Q517.jpg

10、认识一下apache的各个目录功能,

主目录:/usr/local/apache/

启动目录:/usr/local/apache/bin/apachectl

发布目录:/usr/local/apache/htdocs/

配置文件目录:/usr/local/apache/conf/httpd.conf

虚拟主机目录:/usr/local/apache/conf/extra

11、如果需要以http://192.168.174.13:8080,来访问,需要修改这里:

wKioL1WVP_ySKANhAAPON9UgoA0838.jpg

显示的网页,

wKiom1WVPjiQey7tAAD8lq392ls509.jpg

12、如果需要以域名的形式来显示该网页,映射关系为:192.168.174.13-->www.tuodi.com,

需要修改一下本地的配置文件:找到这个文件并添加以上内容:

C:\Windows\System32\drivers\etc\hosts,

wKiom1WVP0XBoFKDAAOAaJtoDdE634.jpg

以域名形式打开页面:

wKiom1WVSMuAR0JRAADoQ1lmvpk524.jpg

13、查看apache进程和端口:

wKiom1WXiPKhV4sCAAPYBF6NCjo076.jpg

二、Apache构建基于域名的虚拟机主机,实现多域名主机的访问

1、修改vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 虚拟主机配置文件内容如下:

出现这个告警:

wKiom1WXkxrBmeewAAPXQsOTWws256.jpg

提示需要删除这个文件,

wKioL1WXlOSzetdzAAPkaEfd35I672.jpg

正确显示了虚拟主机配置文件的内容:

wKioL1WXlOSgWynAAANV2G65UR4496.jpg

删除那些带#的列,只保留需要的配置文件即可:

wKioL1WXlc3hrZtwAAOLd5Sks-U089.jpg

2、修改该配置文件并保存,

wKiom1WXlv7TRtyqAANUJGM3CxA329.jpg

3、创建以上发布目录:

进入发布目录:/usl/local/apache/htdocs,创建发布目录文件夹,

wKioL1WXmZ2z--Q4AAKMsZhlLWg228.jpg

4、将默认的首页文件复制到这2个文件中,

wKioL1WXnJ6xdCE7AALF1mxM5Zs359.jpg

5、进入主配置文件:/usr/local/apache/conf/httpd.conf,引用以上配置的虚拟主机文件,

wKioL1WXoxuCOKMcAAMfF1ysixs165.jpg

6、测试apache配置文件是否有错误,再重启一下,

wKiom1WXonzwI03hAAHiqUdj7hQ169.jpg

7、打开测试页面:测试正确!

wKiom1WXorPyf-HPAAIHlOude04168.jpg

8、模仿一下百度、新浪的首页:

下载百度、新浪的首页,并替换成首页内容:

wget -r -x www.baidu.com

mv www.baidu.com/index.html .

rm -rf www.baidu.com/

wget -r -x www.sina.com

mv www.sina.com.cn/index.html .

m -rf www.sina.com.cn/

重启服务,打开测试页面:

wKioL1WXrtbyI_bPAAOFQdDNPKI500.jpg

9、如果发布目录不想使用默认的:/usr/local/apache/htdocs,则需要添加红色字体部分的内容!允许/data/webapps/www2对外提供访问的发布目录!

<VirtualHost *:80>

    [email protected]

    DocumentRoot"/data/webapps/www2"

    ServerNamewww.wugk2.com

  <Directory "/data/webapps/www2">

   AllowOverride All

   Options -Indexes FollowSymLinks

   Order allow,deny

   Allow from all

  </Directory>

    ErrorLog  logs/error_log

    CustomLoglogs/access_log common

</VirtualHost>

三、自定义安装apache发布目录

1、新建一个虚拟主机配置文件,

wKioL1WXweXzydDUAAQHpwT3RSs672.jpg

2、新建2个发布目录:

mkdir -p /data/webapps/{www1,www2}

cp /usr/local/apache/htdocs/tuodi01/index.html  .

cp /usr/local/apache/htdocs/tuodi02/index.html  .

3、修改引用文件的配置:

wKiom1WXzDiBW3EOAAPJcHYMezc568.jpg

4、重新加载配置文件即可!

不要重启,重启会将网站服务中断后再启动服务!

wKioL1WXz9TSY22UAAB7p1MOxto618.jpg

打开测试网站:

wKioL1WXzj6Rb01qAAYMKosGp_Y830.jpg

5、停止源码包安装的apache,做一下快照!下面采用yum安装apache。

wKiom1WX2DvDS-KYAAJw7bIEdSw316.jpg


四、yum安装apache

1、安装apache:yum install httpd httpd-devel -y

2、安装后的主目录:/etc/httpd/

3、主配置文件目录:/etc/httpd/conf/httpd.conf

4、发布目录:/var/www/html

5、重启Apache服务:/etc/init.d/httpd restart

6、打开apache的首页,该页面是一个403的错误页提示!

wKiom1WX3EiCTFTYAAVmp9d5C5E164.jpg

7、查看发布目录的配置,并新增测试页,

cd /var/www/html/

vi index.html

<html>
<h1>This YUM install web site </h1>
</html>

8、访问的所有网站的内容都记录在这个位置,wKiom1WX4FjCeBi-AATJTiFoC-0935.jpg

9、日志路径信息,

wKiom1WX4g3wNLBVAATReBgmscs244.jpg

10、打开日志记录功能:去掉注释即可!

wKioL1WX5SeTmWcXAAUA7nQFVlQ167.jpg

11、再次访问一下测试页面,

wKioL1WX5laCVzMoAAEQtUKywTM951.jpg

12、出现了访问日志信息!

wKiom1WX5IzDmFbNAAa4Tp9xnb0374.jpg

 

五、Apache的工作模式

1、yum下查看:httpd -l

    工作方式:prefork

wKiom1WX5iCRlarAAAGM3fDUn_c925.jpg

2、源码包安装apache查看方式:/usr/local/apache/bin/httpd -l

    工作方式:worker

wKioL1WX5-rTqbj5AANEehectwA080.jpg

wKioL1WX6H-jN7R5AAHBbC22oGM372.jpg

3、查看yum安装的apache的工作模式

wKiom1WX7Duz0eFPAAKgOd70fHg655.jpg

验证一下是否有8个子进程:

wKiom1WX6X3THXuUAANWky8ltmY527.jpg

4、修改一下内容,

wKiom1WX7M-Tm7QzAACfgTV7Ju4787.jpg

5、重启一下服务,

wKioL1WX7sSh6xsbAABzSXaSQ8s920.jpg

6、目前有3个进程,

wKiom1WX7TijGi5hAAHxCjoBEvg456.jpg

7、在实际环境中,子进程非常之多,一般需要用这个命令,才能统计出所有子进程的数量:

wKioL1WY2NWxZJ9VAAIAUQlcjps096.jpg

8、查看出所有的子进程,并不能说明有多少个连接!子进程还会引用多线程!每个线程也会有连接数!

9、这就需要使用这个命令来查看:netstat -an |awk '{print $NF}' |grep "ESTABLISHED"

wKiom1WY35-QV2GvAACQQMDnT_I381.jpg

与已经建立的连接数统计:netstat -an |awk '{print $NF}' |grep "ESTABLISHED" |wc -l 

wKioL1WY4WrA_2dfAABIayry2AI595.jpg

进程比较,可以看到这个系统上,确实有5个实际的连接数!

但这5个连接数,还不一定是httpd的tcp 80端口连接数

10、这里显示了所有用户请求的列表,目前所有的链接都来自:192.168.174.13这台主机连接到服务器的22端口!无80端口的请求!

wKiom1WY4znhNL94AAGKDwy1LhE682.jpg

而如果在实际应用环境中:可能有无数个这样的连接!

还需要再过滤一次,看到了当前实际正在连接并且转发的进程数!

wKiom1WY5VGjUTumAABEbC2aOt8035.jpg

11、为了达到测试效果,访问3次该网站,

wKiom1WY4_vxABm1AAPznUDjcww415.jpg

12、查看所有用户请求的列表:发现有3个来自tcp 80端口的请求!

wKioL1WY5cag4k8WAAJqu_zbAj4449.jpg

13、再来看一下子进程数量:目前只有3个访问量,已经够用,无需再启动空闲的进程!

wKioL1WY5kGxihYMAADe1B_VCxY903.jpg

worker模式与prefork模式类似

先关闭yum安装的httpd:pkill http

8、再进入源码包安装apache的配置文件:vi extra/httpd-mpm.conf

wKioL1WX9JeB4wbQAAGvvQoYb9A502.jpg

这里可以进一步的调优!本次实验到此,再做一次快照!

本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!

你可能感兴趣的:(Linux服务篇之三:构建Apache服务器)