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

[经验分享] apache基本配置管理一:apache服务介绍,以及简单搭建

[复制链接]

尚未签到

发表于 2018-11-19 06:18:40 | 显示全部楼层 |阅读模式

  
  一、apache服务

   Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中
    本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右
  

  二、Apache服务器拥有以下特性:

  •     支持最新的HTTP/1.1通信协议。Apache是最先使用HTTP/1.1协议的Web服务器之一,它完全兼容HTTP/1.1协议并与HTTP/1.0协议向后兼容。Apache已为新协议所提供的全部内容做好了必要的准备。
  •     支持多计算机平台。Apache几乎可以在所有的计算机操作系统上运行,包括主流的UNIX、Linux及Windows操作系统。
  •     拥有简单而强有力的基于文件的配置过程。配置文件简单,易操作。用户可以通过直接修改Apache的配置文件信息来修改Apache,操作起来十分方便。
  •     支持实时监视服务器状态和定制服务器日志。Apache在记录日志和监视服务器自身运行状态方面提供了很大的灵活性,可以通过Web浏览器来监视服务器的状态,也可以根据自己的需要来定制日志。
  •     支持多种方式的HTTP认证。
  •     支持Web目录修改。用户可以使用特定的目录作为Web目录。
  •     支持CGI脚本,如Perl、PHP等。
  •     支持服务器端包含指令(SSI)。
  •     支持安全Socket层(SSL)。
  •     支持FastCGI。
  •     支持虚拟主机。即通过在一台服务器上使用不同的主机名来提供多个HTTP服务。Apache支持基于IP、主机名和端口号三种类型的虚拟主机服务。
  •     跟踪用户会话。当用户浏览基于Apache的Web站点时,可以通过Apache的mod_usertrack模块对其进行跟踪。
  •     支持动态共享对象。Apache的模块可在运行时动态加载,这就意味着这些模块可以被装入服务器进程空间,从而减少系统的内存开销。
  •     支持多进程。当负载增加时,服务器会快速生成子进程来处理,从而提高系统的响应能力。
  •     支持第三方软件开发商提供的功能模块。比如Apache加载mod_jserv模块后可以支持Java Servlet,这样就可以运行Java应用程序了。
  •     支持多线程和多进程混合模型的MPM。 当MPM类型指定为worker时,由于是使用线程来处理,所以可以处理海量的请求,而系统资源的开销要小于基于进程的服务器。
  •   支持实时监视服务器状态和定制服务器日志
  •   支持通用网关接口
  •   支持基于IP和基于域名的虚拟主机

  •   集成代理服务器模块
  •   
      
  三、apache工作模式:

 Apache 2.X  支持插入式并行处理模块,称为多路处理模块(MPM)。在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择,它们会影响到apache的速度和可伸缩性。
  Worker MPM : 使用多个子进程,每个子进程中又有多个线程。每个线程处理一个请求,该MPM通常对高流量的服务器是一个不错的选择。因为它比prefork MPM需要更少的内存且更具有伸缩性。比较适合负载均衡的场合。
  prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止.这就是预派生(prefork)的由来.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能.
     

  worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求.同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置了所有子进程中的线程总数.如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程.
     
Prefork MPM : 使用多个子进程,但每个子进程不包含多线程。每个进程只处理一个连接。在许多系统上它的速度和worker MPM一样快,但是需要更多的内存。这种无线程的设计在某些性况下优于worker MPM,因为它可在应用于不具备线程安全的第三方模块上(如 PHP3/4/5),且在不支持线程调试的平台上易于调试,另外还具有比worker MPM更高的稳定性。

      prefork 是apache默认的工作模式,可以在编译的时候加参数-with-mpm-work选择工作模式。

概括的说

prefork的特点是预派生

1:这种模式可以不必在请求到来时再产生新的进程,从而减少了系统开销

2:可以防止意外的内存泄漏

3:在服务器负载下降的时候会自当减少子进程数

work的特点是:

支持混合的多线程多进程的多路处理模块

如果对于一个高流量的http服务,work mpm是一个比较好的选择,因为work mpm占用的内存要比prefork要小。



四、apche服务搭建:

A:搭建方式yum 安装apache

默认没有修改apache的http.conf配置文件

实验环境,实验主机为redhat5.8,IP地址为:192.168.137.11

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

查看软件是否已经安装

[root@agent1 ~]# rpm -qa  httpd
httpd-2.2.3-63.el5

安装完成后查看安装文件:

[root@agent1 ~]rpm -ql httpd

   对应的文件做一些简单说明:
    服务脚本:/etc/rc.d/init.d/httpd
    脚本配置文件:/etc/sysconfig/httpd
    运行目录:/etc/httpd
    配置文件:
    主配置文件:/etc/httpd/conf/httpd.conf
    扩展配置:/etc/httpd/conf.d/*.conf
    监听的Socket:80/tcp,443/tcp
    文档根目录:/var/www/html
    CGI:/var/www/cgi-bin/
    默认主页:index.html



在实验之前,须确保在httpd.conf配置文件中:

        httpd服务监听的端口为80【Listen 80】

          开启DocumentRoot "/var/www/html/"
  启动服务查看进程和端口状态

  [root@agent1 ~]# /etc/init.d/httpd start
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.137.11 for ServerName

  [root@agent1 ~]# ps -ef | grep httpd
root     11211     1  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11212 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11213 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11214 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11215 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11217 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11218 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11219 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
apache   11220 11211  0 21:56 ?        00:00:00 /usr/sbin/httpd
root     11249 10953  0 22:01 pts/3    00:00:00 grep httpd
[root@agent1 ~]# netstat -tulnp | grep 80
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      4280/sendmail      
tcp        0      0 :::80                       :::*                        LISTEN      11211/httpd         
[root@agent1 ~]#


  访问http://IP:80

  

   DSC0000.png

  

  

如果想自定义内容,可以通过修改文档根目录的内容

  [root@agent1 html]# pwd

/var/www/html
[root@agent1 html]# cat index.html
my first website1 !!
[root@agent1 html]#

语法检测

[root@agent1 ~]# httpd -t
httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.137.11 for ServerName
Syntax OK
[root@agent1 ~]#

重新加载配置

[root@agent1 ~]# /etc/init.d/httpd reload
Reloading httpd:                                           [  OK  ]
[root@agent1 ~]#

DSC0001.png

B:搭建方式rpm搭建apache

实现环境:redhat7.2 .ip:192.168.137.11

首先查看安装包是否存在

rpm -qa httpd

tar -zxvf httpd-2.4.9.tar.gz
cd httpd-2.4.9/

yum install apr apr-util  apr-devel apr-util-devel
./configure --prefix=/usr/local/apache --enable-rewrite --enable-so

安装apache发现需要安装pcre来支持perl库

yum -y install libpcre
yum -y install libpcre*
./configure --prefix=/usr/local/apache --enable-rewrite --enable-so
yum -y install libpcre-devel*
./configure --prefix=/usr/local/apache --enable-rewrite --enable-so
./configure --prefix=/home/tnuser/apache/  --with-apr=/usr/local/apr/  --with-apr-util=/usr/local/apr-util/  --with-pcre=/usr/local/pcre/  


于是编译安装prce,但是便宜prce时需要C++,C++依赖Development Tools

tar -zxvf pcre-8.40.tar.gz yum -y install C++
yum groupinstall "Development Tools"
cd /root/pcre-8.40pcre-8.40/
chmod -R 777 /root/pcre-8.40
./configure --prefix=/usr/local/pcre/
make && make install
cd httpd-2.4.9/
./configure --prefix=/usr/local/apache/  --with-apr=/usr/local/apr/  --with-apr-util=/usr/local/apr-util/  --with-pcre=/usr/local/pcre/  --enable-rewrite --enable-so  

然后继续编译apache

./configure --prefix=/usr/local/apache/    --with-pcre=/usr/local/pcre/  --enable-rewrite --enable-so  
make  && make install

/usr/local/apache/bin/apachectl start

编译成功后启动服务:
ps -ef | grep 80
netstat -tulnp | grep 80

[root@agent3 conf]# /usr/local/apache/bin/apachectl -v
Server version: Apache/2.4.9 (Unix)
Server built:   Feb  7 2017 07:45:52
[root@agent3 conf]#

查看运行效果:

DSC0002.png

下篇我们将搭建虚拟主机,先熟悉下,源码安装apache的配置文件

[root@agent3 extra]# pwd
/usr/local/apache/conf/extra
[root@agent3 extra]# ll | grep  httpd-vhosts.conf
-rw-r--r-- 1 root root  1467 Feb  7 07:52 httpd-vhosts.conf
[root@agent3 extra]# cd ..
[root@agent3 conf]# ll
total 92
drwxr-xr-x 2 root root  4096 Feb  7 07:52 extra
-rw-r--r-- 1 root root 18232 Feb  7 07:52 httpd.conf
-rw-r--r-- 1 root root 13077 Feb  7 07:52 magic
-rw-r--r-- 1 root root 53011 Feb  7 07:52 mime.types
drwxr-xr-x 3 root root    35 Feb  7 07:52 original
[root@agent3 conf]#

查看http的并发请求数及其TCP连接状态:

  [root@agent1 ~]# netstat  -n | awk '/^tcp/ {++b[$NF]} END {for(a in b) print a, b[a]}'
ESTABLISHED 2
[root@agent1 ~]#
用tcpdump嗅探80端口的访问看看谁最高:
  tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
  

  

  









运维网声明 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-636683-1-1.html 上篇帖子: apache 禁止trace或track防止xss*** 下篇帖子: 简单编译安装Apache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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