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这个软件,
3、下载apache软件,
4、解压apache,
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、进入安装目录,
8、并启动apache服务,端口80已经看到,该服务已经启动了!
9、打开浏览器,首页已经成功打开了!
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,来访问,需要修改这里:
显示的网页,
12、如果需要以域名的形式来显示该网页,映射关系为:192.168.174.13-->www.tuodi.com,
需要修改一下本地的配置文件:找到这个文件并添加以上内容:
C:\Windows\System32\drivers\etc\hosts,
以域名形式打开页面:
13、查看apache进程和端口:
二、Apache构建基于域名的虚拟机主机,实现多域名主机的访问
1、修改vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 虚拟主机配置文件内容如下:
出现这个告警:
提示需要删除这个文件,
正确显示了虚拟主机配置文件的内容:
删除那些带#的列,只保留需要的配置文件即可:
2、修改该配置文件并保存,
3、创建以上发布目录:
进入发布目录:/usl/local/apache/htdocs,创建发布目录文件夹,
4、将默认的首页文件复制到这2个文件中,
5、进入主配置文件:/usr/local/apache/conf/httpd.conf,引用以上配置的虚拟主机文件,
6、测试apache配置文件是否有错误,再重启一下,
7、打开测试页面:测试正确!
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/
重启服务,打开测试页面:
9、如果发布目录不想使用默认的:/usr/local/apache/htdocs,则需要添加红色字体部分的内容!允许/data/webapps/www2对外提供访问的发布目录!
<VirtualHost *:80>
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、新建一个虚拟主机配置文件,
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、修改引用文件的配置:
4、重新加载配置文件即可!
不要重启,重启会将网站服务中断后再启动服务!
打开测试网站:
5、停止源码包安装的apache,做一下快照!下面采用yum安装apache。
四、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的错误页提示!
7、查看发布目录的配置,并新增测试页,
cd /var/www/html/
vi index.html
<html>
<h1>This YUM install web site </h1>
</html>
8、访问的所有网站的内容都记录在这个位置,
9、日志路径信息,
10、打开日志记录功能:去掉注释即可!
11、再次访问一下测试页面,
12、出现了访问日志信息!
五、Apache的工作模式
1、yum下查看:httpd -l
工作方式:prefork
2、源码包安装apache查看方式:/usr/local/apache/bin/httpd -l
工作方式:worker
3、查看yum安装的apache的工作模式
验证一下是否有8个子进程:
4、修改一下内容,
5、重启一下服务,
6、目前有3个进程,
7、在实际环境中,子进程非常之多,一般需要用这个命令,才能统计出所有子进程的数量:
8、查看出所有的子进程,并不能说明有多少个连接!子进程还会引用多线程!每个线程也会有连接数!
9、这就需要使用这个命令来查看:netstat -an |awk '{print $NF}' |grep "ESTABLISHED"
与已经建立的连接数统计:netstat -an |awk '{print $NF}' |grep "ESTABLISHED" |wc -l
进程比较,可以看到这个系统上,确实有5个实际的连接数!
但这5个连接数,还不一定是httpd的tcp 80端口连接数!
10、这里显示了所有用户请求的列表,目前所有的链接都来自:192.168.174.13这台主机连接到服务器的22端口!无80端口的请求!
而如果在实际应用环境中:可能有无数个这样的连接!
还需要再过滤一次,看到了当前实际正在连接并且转发的进程数!
11、为了达到测试效果,访问3次该网站,
12、查看所有用户请求的列表:发现有3个来自tcp 80端口的请求!
13、再来看一下子进程数量:目前只有3个访问量,已经够用,无需再启动空闲的进程!
worker模式与prefork模式类似!
先关闭yum安装的httpd:pkill http
8、再进入源码包安装apache的配置文件:vi extra/httpd-mpm.conf
这里可以进一步的调优!本次实验到此,再做一次快照!
本文出自 “柏书兵-系统运维” 博客,转载请与作者联系!