Linux网络服务:HTTPD服务与实现

Httpd基本服务:

主要服务程序: /usr/sbin/httpd

系统服务脚本:/etc/rc.d/init.d/httpd

服务根目录:/etc/httpd/

主配置文件:/etc/httpd/conf/httpd.conf

配置目录:/etc/httpd/conf.d/

网站根目录:/var/www/html/

模块目录:/etc/httpd/modules/

访问日志:/var/log/httpd/access_log

错误日志:/var/log/httpd/error_log目录和文件:


服务程序相关:

--系统服务脚本

--默认端口:TCP80

--进程名:httpd

--进程所有者:apache


配置文件结构:

--全局设置:配置参数  值

--目录设置:<Directoy 目录>…</Directory>

--访问位置设置:<Location URL>…</Location>

--虚拟主机设置:<VirtualHost>…</ VirtualHost >


常用的全局设置参数:

--ServerName:本站点的FQDN名称

--DocumentRoot:网页文档的根目录

--DirectoryIndex:默认索引页/首页文件

--CustomLog:访问日志文件的位置



试验一:基本HTTP服务器的配置

主机名设为:www.tarena.com  192.168.10.10

默认首页包括:index.html、index.php

开启保持连接

确认默认httpd是否支持php

前提条件在客户端配置hosts文件C:\Windows\System32\drivers\etc

192.168.10.10 www.tarena.comwww


1、软件包的安装

[root@localhost ~]# yum -y install httpd      

2、修改主配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf             //配置文件

...

74 KeepAlive On                                         //开启保持连接

...

265 ServerName www.tarena.com:80                        //本站点名称

...

391 DirectoryIndex  index.html index.php                     //默认索引页

...

3、启动服务

[root@localhost ~]# service httpd restart

[root@localhost ~]# chkconfig httpd on

新建测试页面

[root@localhost ~]# cat /var/www/html/index.html           //新建测试页面

<html>

<head><title>This is a test Page!!!</title>

<body>

<h1>This is www.tarena.com test Page!!!</h1>

</body>

</head>

</html>

[root@localhost ~]# cat /var/www/html/index.php

<?php

       phpinfo();

?>


测试:

http://www.tarena.com

http://www.tarena.com/index.php


---------------------------------------------------------------------------------------------------------------------------------







HTTP的访问控制:

    Oredr配置项,定义控制顺序

          --allow,deny  先允许后拒绝,默认拒绝所有

          --deny,allow  先拒绝后允许,默认允许所有

     Allow/Deny from配置项,设置权限

          --Allow from 地址1 地址2

          --Deny from 地址1 地址2

实验二:HTTP的访问控制

只允许192.168.10.5访问www.tarena.com

允许所有用户访问www.tarena.com/authdir/index.html

1、修改主配置文件

[root@localhost ~]# mkdir /var/www/html/authdir

[root@localhost ~]# cat /var/www/html/authdir/index.html       //新建默认网页

<html>

<head><title>This is a test Page!!!</title>

<body>

<h1>This is http://www.tarena.com/authdir/index.html!!!</h1>

</body>

</head>

</html>

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf            //配置文件

...

306 <Directory "/var/www/html">                    

...

332     Order allow,deny                     //默认拒绝所有

333 #    Allow from all                        //注释掉允许所有网段访问

334     Allow from 192.168.10.5                 //只允许10.5访问

...

337 <Directory   "/var/www/html/authdir">

338         Order allow,deny

339         Allow from all                    

340 </Directory>

2、启动服务

[root@localhost ~]# service httpd restart

3、在不同客户端测试

[root@localhost ~]# tail /var/log/httpd/error_log

...

[Wed Apr 16 16:52:31 2014] [error] [client 192.168.10.6] client denied  by server configuration: /var/www/html/


---------------------------------------------------------------------------------------------------------------------------------



HTTP的用户授权

为目录区段设置授权:

     AuthName:认证领域名称,用于弹窗提示

     AutoType:认证类型,一般使用basic

     AuthUserFile:用户数据文件的路径

     Require:指定授权用户和组

 Htpasswd [-c] 帐户文件 用户名

 C表示新建否则修改密码

试验三:HTTP的用户授权

客户端访问/var/www/html/authdir/需要输入用户名密码验证


1、修改主配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

...

337 <Directory "/var/www/html/authdir">

338         Order allow,deny

339         Allow from all

340         AuthName "Please Input Password!!"            //用于弹窗提示

341         AuthType Basic                              //认证类型

342         AuthUserFile "/etc/httpd/ . vuser"               //用户数据文件路径

343         Require valid-user                            //授权的用户和组

344 </Directory>

...

2、创建账户密码

[root@localhost ~]# htpasswd -c /etc/httpd/.vuser admin        //创建账户密码

New password:

Re-type new password:

Adding password for user admin

3、启动服务测试

[root@localhost ~]# service httpd restart

http://www.tarena.com/authdir

--------------------------------------------------------------------------------------------------------------------------------












实验四:HTTP目录别名

客户端访问http://www.tarena.com/sina时可以访 问/var/www/html/sina.com/bbs下的网页

1、创建测试站点

[root@localhost ~]# mkdir -p /var/www/html/sina.com/bbs                  //新建目录

[root@localhost ~]# cat /var/www/html/sina.com/bbs/index.html             //新建网页

<html>

<head><title>This is a test Page!!!</title>

<body>

<h1>This is bbs.sina.com test Page!!!</h1>

</body>

</head>

</html>

2、修改主配置文件

[root@localhost ~]# tail -n 1 /etc/httpd/conf/httpd.conf

Alias /sina     "/var/www/html/sina.com/bbs"          //在配置文件最后写对应目录别名

3、启动服务测试  

[root@ser1 ~]# service httpd restart

http://www.tarena.com/sina

---------------------------------------------------------------------------------------------------------------------------------



基于域名的虚拟主机

试验七:基于域名的虚拟主机

当用户访问www.baidu.com的时候访问baidu网站

当用户访问www.google.com的时候访问google网站

baidu和google的ip地址一样

确保上面www.tarena.com访问还能访问

前提条件(客户端配置hosts)                    /修改hosts文件

192.168.10.10www.tarena.comwww

192.168.10.10www.baidu.comwww

192.168.10.10www.google.comwww

1、建立网站存放路径

[root@localhost ~]# mkdir -p /data/web/{baidu,google}         /新建网站存放路径

[root@localhost ~]# cat /data/web/baidu/index.html             //新建测试网页

<html>

<head><title>This is a test Page!!!</title>

<body>

<h1>This is www.baidu.com test Page!!!</h1>

</body>

</head>

</html>

[root@localhost ~]# cat /data/web/google/index.html

<html>

<head><title>This is a test Page!!!</title>

<body>

<h1>This is www.google.com test Page!!!</h1>

</body>

</head>

</html>

2、修改主配置

[root@localhost ~]# cat /etc/httpd/conf.d/virt.conf           //写配置文件

NameVirtualHost *:80

<VirtualHost *:80>

   DocumentRoot /var/www/html                //站点目录

   ServerName www.tarena.com                 //站点名称

   ErrorLog logs/tarena.com-error_log              //访问日志

   CustomLog logs/tarena.com-access_log common     //错误日志

</VirtualHost>

<VirtualHost *:80>

   DocumentRoot /data/web/baidu

   ServerName www.baidu.com

   ErrorLog logs/baidu.com-error_log

   CustomLog logs/baidu.com-access_log common

</VirtualHost>

<VirtualHost *:80>

   DocumentRoot /data/web/google

   ServerName www.google.com

---------------------------------------------------------------------------------------------------------------------------------








AWStats日志分析:

1、PV(访问量):即Page View, 页面浏览量或点击量,用户每次刷新即被计算一次。

2、UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。

3、IP(独立IP):即Internet Protocol,指独立IP数。00:00-24:00内相同IP地址之被计算一次。

实验五:

部署Awstats统计Http访问日志

1、安装软件(软件在/usr/src下)

[root@ser1 ~]# cd /usr/src/

[root@ser1 src]# tar -zxf awstats-7.1.tar.gz

[root@ser1 src]# mv awstats-7.1 /usr/local/awstats

2、为站点建立配置文件

[root@ser1 src]# cd /usr/local/awstats/tools/

[root@ser1 tools]# ./awstats_configure.pl

...

Config file path (‘none‘ to skip web server setup):

> /etc/httpd/conf/httpd.conf                     //输入apache的主配置文件

...

-----> Need to create a new config file ?

Do you want me to build a new AWStats config/profile

file (required if first install) [y/N] ? y  

...

Your web site, virtual server or profile name:

> www.tarena.com                         //输入你的web服务器名字

...

Default: /etc/awstats

Directory path to store config file(s) (Enter for default):

>

...

/usr/local/awstats/tools/awstats_updateall.pl now

Press ENTER to continue...

...

Press ENTER to finish...

3、指定统计的目标日志文件

[root@ser1 tools]# vim /etc/awstats/awstats.www.tarena.com.conf

...

 51 LogFile="/var/log/httpd/access_log"

[root@ser1 tools]# mkdir /var/lib/awstats                   //创建工作目录

4、将日志文件导入Awstats

[root@ser1 tools]# ./awstats_updateall.pl now

[root@ser1 tools]# crontab –e                          //创建计划任务

*/5 * * * *   /usr/local/awstats/tools/awstats_updateall.pl now

[root@ser1 tools]# service crond restart

[root@ser1 tools]# chkconfig crond on


验证:

www.tarena.com


[root@ser1 tools]# cat /var/www/html/awstats.html

<html>

<head><meta http-equiv=refresh content="0;  url=http://www.tarena.com/awstats/awstats.pl? config=www.tarena.com">

</head>

<body>

</body>

</html>

验证:

http://www.tarena.com/awstats.html

补充:

通过html代码实现网页跳转功能

[root@localhost tools]# cat /var/www/html/awstats.html

<html>

<head><meta http-equiv=refresh content="0;  url=http://www.tarena.com/awstats/awstats.pl? config=www.tarena.com">

</head>

<body>

</body>

</html>

验证:

http://www.tarena.com/awstats.html


Httpd进程规模控制

Prefork方式:

 --预创建、非线程模式

Worker方式:

 --多线程、多处理模式

试验六:

查看默认HTTP使用进程管理方式

更改默认进程管理方式为worker模式

[root@localhost ~]# httpd -l

Compiled in modules:

 core.c

 prefork.c

 http_core.c

 mod_so.c

[root@localhost ~]# cd /usr/sbin/

[root@localhost sbin]# mv httpd httpd.prefork

[root@localhost sbin]# mv httpd.worker httpd

[root@localhost sbin]# service httpd restart

[root@localhost sbin]# httpd -l

Compiled in modules:

 core.c

 worker.c

 http_core.c

 mod_so.c

试验八:基于IP的虚拟主机

www.tarena.com192.168.10.10

www.baidu.com192.168.10.11

www.google.com192.168.10.12

前提条件

设置IP

[root@localhost ~]# cd

[root@localhost network-scripts]# cat ifcfg-eth0:0

# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)

DEVICE=eth0:0

BOOTPROTO=none

ONBOOT=yes

IPADDR=192.168.10.11

NETMASK=255.255.255.0

[root@localhost network-scripts]# cat ifcfg-eth0:1

# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)

DEVICE=eth0:1

BOOTPROTO=none

ONBOOT=yes

IPADDR=192.168.10.12

NETMASK=255.255.255.0

[root@localhost network-scripts]# service network restart

修改hosts文件

192.168.10.10www.tarena.comwww

192.168.10.11www.baidu.comwww

192.168.10.12www.google.comwww


1、建立网站存放路径

过程略...见基于域名的虚拟主机配置

2、修改主配置文件

[root@localhost ~]# cat /etc/httpd/conf.d/virt.conf

<VirtualHost 192.168.10.10:80>

   DocumentRoot /var/www/html

   ServerName www.tarena.com

   ErrorLog logs/tarena.com-error_l

   CustomLog logs/tarena.com-access_log common

</VirtualHost>

<VirtualHost 192.168.10.11:80>

   DocumentRoot /data/web/baidu

   ServerName www.baidu.com

   ErrorLog logs/baidu.com-error_log

   CustomLog logs/baidu.com-access_log common

</VirtualHost>

<VirtualHost 192.168.10.12:80>

   DocumentRoot /data/web/google

   ServerName www.google.com

   ErrorLog logs/google.com-error_log

   CustomLog logs/google.com-access_log common

</VirtualHost>

3、启动服务

[root@localhost ~]# service httpd restart

讲师周华飞(EC888FEB8315对话) 14:27:04

4,客户端测试

http://www.tarena.com

http://www.baidu.com

http://www.google.com



实验九:构建基于TCP端口的虚拟Web主机

Listen 81

Listen 82

<VirtualHost *:80>

   DocumentRoot /var/www/html

   ServerName www.tarena.com

   ErrorLog logs/tarena.com-error_log

   CustomLog logs/tarena.com-access_log common

</VirtualHost>

<VirtualHost *:81>

   DocumentRoot /data/web/baidu

   ServerName www.baidu.com

   ErrorLog logs/baidu.com-error_log

   CustomLog logs/baidu.com-access_log common

</VirtualHost>

<VirtualHost *:82>

   DocumentRoot /data/web/google

   ServerName www.google.com

   ErrorLog logs/google.com-error_log

   CustomLog logs/google.com-access_log common

</VirtualHost>

验证:

http://www.google.com:82


Linux网络服务:HTTPD服务与实现,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。