设为首页 收藏本站
查看: 689|回复: 0

[经验分享] 教您玩转Apache服务器及虚拟主机

[复制链接]

尚未签到

发表于 2018-11-26 06:52:35 | 显示全部楼层 |阅读模式
  HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
  HTTP协议的主要特点可概括如下:
  1.支持客户/服务器模式。
  2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
  深入了解http协议请参考网络相关文章,有跟详细的讲解,在来安装http服务之前,先来了解一下apache的新特性。
  apache  现在不只是web服务器 是一个软件基金会                      apache software foundation :ASF apache软件基金会
  Apache web服务器软件拥有以下特性:


  • 支持最新的HTTP/1.1通信协议
  • 拥有简单而强有力的基于文件的配置过程
  • 支持通用网关接口 CGI
  • 支持基于IP和基于域名的虚拟主机 vhost
  • 支持多种方式的HTTP认证
  • 集成Perl处理模块
  • 集成代理服务器模块
  • 支持实时监视服务器状态和定制服务器日志
  • 支持服务器端包含指令(SSI)
  • 支持安全Socket层(SSL)
  • 提供用户会话过程的跟踪
  • 支持FastCGI
  • 通过第三方模块可以支持Java Servlets
  所以如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。
  下面就来在redhat5上搭建Apache服务器,实现www服务和虚拟主机的配置。


  • [root@localhost mnt]# mkdir /mnt/cdrom #创建挂载目录
  • [root@localhost mnt]# mount /dev/cdrom /mnt/cdrom   #挂载光盘
  • mount: block device /dev/cdrom is write-protected, mounting read-only
  • [root@localhost mnt]# cd /mnt/cdrom/Server/
  • [root@localhost Server]# ls |grep httpd
  • httpd-2.2.3-22.el5.i386.rpm
  • httpd-devel-2.2.3-22.el5.i386.rpm
  • httpd-manual-2.2.3-22.el5.i386.rpm
  • system-config-httpd-1.3.3.3-1.el5.noarch.rpm
  • [root@localhost Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm #安装httpd-包
  • Preparing...            ########################################### [100%]
  •    1:httpd              ########################################### [100%]
  • [root@localhost Server]# service httpd start #启动httpd服务
  • ?.. httpd锛                                             [ok]  



  • [root@localhost Server]# rpm -ql httpd
  • /etc/httpd                              #根目录
  • /etc/httpd/conf
  • /etc/httpd/conf.d                       #动态网站的开发
  • /etc/httpd/conf.d/README
  • /etc/httpd/conf.d/proxy_ajp.conf
  • /etc/httpd/conf.d/welcome.conf
  • /etc/httpd/conf/httpd.conf             #服务器主配置文档
  • /etc/httpd/conf/magic
  • /etc/httpd/logs                         #服务器日志文件,是/var/log/httpd的连接
  • /etc/httpd/modules


  /var/www/html 为服务器的默认存放网页的位置,只要我们在这个文件夹中创建一个简单的页面就可以测试Apache服务器是否能正常的工作,当能正常工作后再配置httpd.conf 来启用Apache的各种功能和特性。


  • [root@localhost ~]# echo "hello my Apache" >/var/www/html/index.html
  • [root@localhost ~]# ls /var/www/html
  • index.html
  • [root@localhost ~]#  

  此时一个简单的Apache服务器以搭建完毕,在客户端就可以访问其www服务,

  此时Apache服务器以正常工作,但是其工作模式还要给大家做一下粗略的介绍


  • # prefork MPM                # prefork模式

  • StartServers       8          #指定服务器启动时建立的子进程数量,prefork默认为5
  • MinSpareServers    5          #空闲子进程的最小数量,默认为5
  • MaxSpareServers   20          #设置空闲子进程的最大数量,默认为10
  • ServerLimit      256
  • MaxClients       256          #默认的MaxClient最大是256个线程
  • MaxRequestsPerChild  4000    #每个子进程在其生存期内允许伺服的最大请求数量
  • #默认为10000


  • # worker MPM

  • StartServers         2
  • MaxClients         150
  • MinSpareThreads     25
  • MaxSpareThreads     75
  • ThreadsPerChild     25
  • MaxRequestsPerChild  0


  从上边的代码片段中我们可以看到是以MPM机制的 顺便详细介绍一下其各个的作用,很重要,对一个Apache服务器的性能来说很重要。请务必仔细看
  prefork模式配置详解
  
  ServerLimit 256
  StartServers 5  指定服务器启动时建立的子进程数量,prefork默认为5。
  MinSpareServers 5  空闲子进程的最小数量,默认为5
  MaxSpareServers 10  设置空闲子进程的最大数量,默认为10。
  MaxClients 256
  MaxRequestsPerChild 0
  
  ServerLimit
  默认的MaxClient最大是256个线程,如果想设置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。
  生效前提:必须放在其他指令的前
  MaxClients
  限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit。
  MaxRequestsPerChild
  每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:
  1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
  2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
  Apache的默认的工作模式为prefork 我们可以通过httpd -l 或者apachectl -l 查看,两个命令的显示结果是一样的


  • [root@localhost ~]# httpd -l
  • Compiled in modules:
  •   core.c
  •   prefork.c
  •   http_core.c
  •   mod_so.c
  • [root@localhost ~]#  

支持多方面的认证,身份验证,来源控制和加密通讯,来保护个人站点的安全性。下面就简单演示一下验证用户的效果,大致命令如下。


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

  •     AllowOverride All
  •     Order allow,deny
  •     Allow from all

  •   
  • [root@localhost ~]# service httpd restart       #重新启动服务,每次改动配置文档就要重启服务
  • ?.. httpd                                             [ok]
  • ?.. httpd                                             [ok]
  • [root@localhost ~]#  
  • [root@localhost ~]# cd /var/www/html
  • [root@localhost html]# vim .htaccess
  •    
  •    authuserfile /var/www/html/.htpasswd
  •    authtype     basic
  •    authname    zhangsan
  •    require     valid-user
  •                  
  • [root@localhost html]# htpasswd -c .htpasswd user1
  • New password:  
  • Re-type new password:  
  • Adding password for user user1
  • [root@localhost html]# htpasswd  .htpasswd user2
  • New password:  
  • Re-type new password:  
  • Adding password for user user2
  • [root@localhost html]# cat .htpasswd  
  • user1:OC7PnLbceGazM
  • user2:XjWh39UD5Ow9s
  • [root@localhost html]#  

在客户端访问

  查看一下成功访问的日志


  • [root@localhost ~]# tail /etc/httpd/logs/access_log   #显示成功日志记录
  • 192.168.0.199 - user1 [29/Sep/2011:03:37:21 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1130.1 Safari/536.11"
  • 192.168.0.199 - user1 [29/Sep/2011:03:37:22 +0800] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1130.1 Safari/536.11"
  • [root@localhost ~]#  

  此时就为/var/www/html 设置了用户的身份验证,还可以做来源控制,Order allow deny  ,此时先看关于allow的控制语句,然后再匹配deny的控制语句,当然 order就是调节allow 和deny 匹配顺序的,在实际工作中,根据需要来确定 allow和deny的顺序。
  接下来演示一下虚拟主机的实现,先介绍一下虚拟主机的几个主要的类型

基于ip地址的虚拟主机


192.168.0.110
  www.abc.com


:80
/var/www/html


192.168.0.111
tec.abc.com
:80
/var/www/tec


192.168.0.112
mkt.abc.com
:80
/var/www/mkt

  基于端口的虚拟主机




少量ip
多个名字
多个端口
多个站点


192.168.0.110
www.abc.com
:80
/var/www/html


192.168.0.110
tec.abc.com
800
/var/www/tec


192.168.0.110
mkt.abc.com
:8000
/var/www/mkt

基于主机头的虚拟主机


少量ip
多个名字
1个端口
多个站点


192.168.0.110
www.abc.com
:80
/var/www/html


192.168.0.110
tec.abc.com
: 80
/var/www/tec


192.168.0.110
mkt.abc.com
:80
  /var/www/mkt


  了解了虚拟主机的几个主要的类型,其中基于主机头的虚拟主机是非常常用的一直配置虚拟主机的方式,下面我们就来演示一下基于主机头的虚拟主机。


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

  • # DocumentRoot "/var/www/html"          #关闭本行命令
  • NameVirtualHost *:80                    #打开本行命令

  • ServerName www.abc.com
  • Documentroot /var/www/html
  • ErrorLog logs/www-error_log
  • CustomLog logs/www-access_log common


  • ServerName tec.abc.com
  • Documentroot /var/www/tec
  • ErrorLog logs/tec-error_log
  • CustomLog logs/tec-access_log common


  • ServerName mkt.abc.com
  • Documentroot /var/www/mkt
  • ErrorLog logs/mkt-error_log
  • CustomLog logs/mkt-access_log common

  • **********************************

  • [root@localhost www]# mkdir tec mkt
  • [root@localhost www]# ls
  • cgi-bin  error  html  icons  mkt  tec
  • [root@localhost www]# echo "hello ,this is tec" > tec/index.html
  • [root@localhost www]# echo "hello ,this is mkt" > mkt/index.html
  • [root@localhost www]# httpd -t
  • Syntax OK
  • [root@localhost www]# service httpd restart
  • start httpd                                            [ok]
  • start httpd                                            [ok]
  • [root@localhost www]#  

  在客户端进行测试,但是此处没有配置dns服务器,所以只能用hosts文件来解析ip地址。
  192.168.0.110   tec.abc.com                                  192.168.0.110   www.abc.com                                    192.168.0.110   mkt.abc.com
  下面进行验证基于主机头虚拟主机的

  基于虚拟目录的虚拟主机
  若果您的服务器还有空闲的地方,为了避免空间的浪费,可以对外租用,此时可以创建虚拟目录来管理别人的站点,并可以为之作相应的访问控制机制。


  • [root@localhost var]# vim /etc/httpd/conf/httpd.conf
  •    Alias /qq/     "/var/qq"       #创建别名 有意义,好记的名字

  •              #对应的文件夹名字,可以随便命名
  •     Options Indexes MultiViews
  •     AllowOverride None            #相应的控制机制
  •     Order allow,deny
  •     Allow from all
  •    

  访问只需使用http://192.168.0.110/qq 即可访问文件夹命名为qq的相关内容。
  文章先写到这儿,关于Apache的相关功能没有详细演示,如果您有需要或者哪里不清楚请留言,有错误处请您指正。下篇是继续关于linux + Apache + mysql + php快速建站的搭建。希望您继续关注。。。。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-639560-1-1.html 上篇帖子: apache安装与配置 下篇帖子: 如何搭建apache+tomcat集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表