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   多道处理模块。

  •    Start Servers    8      服务个数(命令 ps aux | grep httpd查看是有8个)

  •                                    跟踪一个进程方法: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 ------开机自动启动