Web:httpd有个功能模块MPM(multi processing modules 多道处理模块)
该模块有两种类型:
(1)thread 一个进程中包含多个线程;
(2)process
基于线程有两种类型:
1、prefork类型:完全基于进程的方法来实现,每个用户的会话需要一个独立的进程响应。
工作模式:当web服务进来时,就会new一个httpd进程(如果有100个用户请求就有100个进程响应), 由该进程产生一个父子进程,
2、worker类型:利用线程的能力来提供高并发的一种多通道处理模块。
工作模式:而对于worker模式有可能启动2个httpd进程,当一个用户访问时就在这两个进程负载均衡 的分配,对以上prefork类型来讲是父子进程,而对于worker来讲有进程和线程。
一、实践部分:
1、配置文件:/etc/httpd/
/etc/httpd/conf/http.conf
配置文件说明:parameter value
/etc/httpd/conf.d/*.conf
2、网页文件
/var/www/html
二、软件安装:
#yum list all httpd*
httpd.i386 服务端包
httpd-devel.i386 开发包
httpd-manual.i386 手册
1、#yum install httpd
注意:安装完成后检查IP和主机名称是否正常解析,如果正常解析服务启动应该就没有问题。
在/etc/hosts配置文件里添加:
IP地址(192.168.0.12) 解析名称(www.bac.com) 别名(www)
#hostname www.bac.com
#vim /etc/sysconfig/network
$HOSTNAME=www.bac.com
最后验证一下解析情况,ping www.bac.com,如果正常解析,接下来即可直接启动服务。
2、、#ls /etc/init.d |grep httpd
所以直接可以用#service httpd start
#chkconfig httpd on 加入开机启动项,即可以通过浏览器访问主页面;
如果不想访问时看到默认主页面,需#cd /etc/http/conf目录下httpd.conf
以及#cd ../conf.d/目录下welcome.conf
注意:
一旦修改配置文件需要service httpd reload一下。
3、网页存放目录:/var/www/html/
场景1:例如可否通过网卡多配置一个ip地址来访问页面
#ifconfig eth0:1 172.16.100.1/16 输入该IP即可访问;
#netstat -tnlp 验证80端口是否开启
#elinks 127.0.0.1 命令行模式下访问
#grep Section !$
ab: apache benchmark
-c 模拟多少个客户端用户数访问
-n 请求数。
例如:ab -c 100 -n 1000 http://192.168.0.151/index.html
在本机电脑输入监控命令:watch -n.5'(刷新次数) ps aux|grep httpd 动态的监控
/etc/http/conf/httpd.conf配置文件详解:
ServerRoot "/etc/httpd/" 根目录存放。
PidFile: 服务器用于记录启动时进程ID的文件,所有的PID进程存放/var/run。
Timeout:定义tcp三次握手的时间,特定于http协议而言,用户的请求发来了、也响应了;等待用户再继续发,此时tcp 还没有端口,啥时候断开呢?就是这个时间。
Keeplive:是否启用保持连接。
Prefork MPM 多道处理模块。
跟踪一个进程方法:strace -p 12736 (这个是pid号)
MinSpareServers 5 最少空闲
MaxSpareServers 20 最大空闲
ServerLimit 256
MaxClients 256 允许最大并发个数;http是一种无状态协议,用户连接后就断开,用户同时连接进来的峰值
MaxRequestsPerChild 4000
Worker MPM
其他参数与上面相同的省略。。。
Listen 80 监听端口
Dcocument “/var/www/html”定义存放网页的位置目录
注意:如果修改该目录为/www,需要修改selinux设置,
方法:#setenforce 1
#chcon -R --reference=/var/www/html /www
#ll -dZ /www 查看
2类日志:访问日志access_log和错误日志err_log(均在/var/log/httpd/目录下)
4、实现基于用户的认证:AllowOverRide AuthConfig
AuthName "our site"
AuthType basic
AuthUserFile /etc/httpd/.htpasswd
如何创建该文件呢?利用#htpasswd -c(初次创建) -m(md5加密方式存放)/etc/http/.htpasswd tom
#htpasswd -c -m /etc/http/.htpasswd tom
#htpasswd -m /etc/http/.htpasswd jerry
#tail /etc/http/.htpasswd查看刚刚创建的用户
#service httpd configtest检查语法错误(或httpd -t)
require user valid-user (如果指定用户,就不需要valid-user;多个用户用空格隔开)
Order allow,deny --这里的order是顺序的意思,先允许再禁止。
Allow from 192.168.0.1/20 172.16.0.0/16 以上是基于IP访问控制。
DirectoryIndex 网站的默认索引 index.html index.htm 注意次序
ErrorLog logs/error_log 相对于ServerRoot目录
LogLevel warn 日志级别
CustomLog logs/access_log Combined(包含common、referer、agent三种类型格式)
Alias /icons/ "/var/www/icons/" 路径别名
ScriptAlias /cgi-bin/ "/var/www/cgi-bin" CGI格式动态网页文件
AddDefaultCharset UTF-8 默认字符集
AddType application/x-compress .Z 添加文件支持的格式类型,后续需要添加php、asp、jsp
虚拟主机:一台物理机上可以提供多个站点,每个页面均有一个socket(IP+Port),实现方式有三种:
基于IP(首先1、要在Listen包含有地址 2、取消中心主机:DocumentRoot )
在配置文件添加以下:
ServerName www.mma.com
DocumentRoot "/web/magedu.com"
ServerName www.b.org
DocumentRoot "/web/b.org"
#语法检查正确性httpd -t
基于Port(首先1、要在Listen包含有地址添加Listen 8080)
在配置文件添加以下:
ServerName www.magedu.com
DocumentRoot "/web/magedu.com"
ServerName www.b.org
DocumentRoot "/web/b.org"
基于FQDN(可以直接叫基于主机头或者域名)保证解析能够正常以下两个域名
/etc/named.conf添加区域文件,
zone “magedu.com” IN {
type master;
file “magedu.com.zone”
};
zone “b.org” IN {
type master;
file “b.org.zone”
};
再查看zone文件,/var/named/magedu.com.zone文件,添加A记录即可
www.mma.com
www.b.org
第二部分:mysql的安装
#yum install mysql-server -y
#service mysqld start ------启动服务
#chkconfig mysqld on ------开机自动启动