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

[经验分享] yum安装apache服务器

[复制链接]
发表于 2018-11-22 10:58:29 | 显示全部楼层 |阅读模式
  httpd:
  安装方法:yum -y install httpd
  rpm -ql  httpd   #查看有哪些配置文件的;
  
  /etc/httpd/conf/magic   #定义本地主机如何识别mime格式的,通过mime编码而来的其他的非纯文本文档。
  /etc/rc.d/init.d/httpd  #服务脚本的启动文件
  /etc/sysconfig/httpd    #服务脚本的配置文件
  我们将/etc/sysconfig/httpd下面的配置文件进行更改,我们的服务脚本就可以允许在不同的模式下了。
  /usr/bin/ab   #apache压力测试所用的配置文件;
  /usr/bin/htpasswd #基于权限进行创建;
  

  下面我们查看下服务是否开启使用这个命令:
  [root@localhost test]# netstat -tnlp |grep 80
  tcp        0      0 :::80                       :::*                        LISTEN      27259/httpd
  [root@localhost test]# ps -aux |grep http
  [root@localhost test]# ps -aux |grep http
  Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
  root     27259  0.0  0.3 175308  3192 ?        Ss   17:46   0:00 /usr/sbin/httpd
  apache   27260  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27261  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27262  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27263  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27264  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27266  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27267  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/httpd
  apache   27268  0.0  0.2 175308  2380 ?        S    17:46   0:00 /usr/sbin/htt
  

  这个时候就可以在客户端查看web服务器的欢迎页面了;这个时候我们看到的这个欢迎页面的默认地址为/etc/httpd/conf.d/welcom.conf
  

  修改web服务器的页面路径下的配置文件:
  [root@localhost html]# pwd
  /var/www/html
  [root@localhost html]# cat a.html
  
  haha
  
  welcom to my test file.
  
  
  [root@localhost html]# service httpd restart
  这个时候,我们去访问的时候,给个页面。发现还是没法查看,因为默认的页面需要手动去指定。
  [root@localhost conf]# pwd
  /etc/httpd/conf
  [root@localhost conf]# grep "Section" httpd.conf
  ### Section 1: Global Environment
  ### Section 2: 'Main' server configuration
  ### Section 3: Virtual Hosts
  注意:要有主服务器段,就不能有虚拟主机,有虚拟主机就不能有主服务器段。因为我们安装的apache是系统自带的,所以版本比较低。
  

  [root@localhost conf]# more /etc/httpd/conf/httpd.conf
  KeepAlive Off #是否开启长链接;
  长链接的时间针对不同的服务器来讲,需要进行不同的测试。
  我们可以使用ab参数进行测试,LoadRunner。
  

  APACHE MPM模块:
  Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作。不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率。Apache httpd 通过模块化的设计来适应各种环境。这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性。
  

  Apache HTTP 服务器 2.0 扩展此模块化设计到最基本的 web 服务器功能。 它提供了可以选择的多处理模块(MPM),用来绑定到网络端口上,接受请求, 以及调度子进程处理请求。
  

  扩展到这一级别的服务器模块化设计,带来两个重要的好处:
  

  Apache httpd 能更优雅,更高效率的支持不同的平台。尤其是 Apache httpd 的 Windows 版本现在更有效率了,因为 mpm_winnt 能使用原生网络特性取代在 Apache httpd 1.3 中使用的 POSIX 层。它也可以扩展到其它平台 来使用专用的 MPM。
  Apache httpd 能更好的为有特殊要求的站点定制。例如,要求 更高伸缩性的站点可以选择使用线程的 MPM,即 worker 或 event; 需要可靠性或者与旧软件兼容的站点可以使用 prefork。
  在用户看来,MPM 很像其它 Apache httpd 模块。主要是区别是,在任何时间, 必须有一个,而且只有一个 MPM 加载到服务器中。可用的 MPM 列表位于 模块索引页面
  
  下表列出了不同系统的默认 MPM。如果你不在编译时选择,那么它就是你将要使用的 MPM。
  

  Netwarempm_netware
  OS/2mpmt_os2
  Unixprefork,worker 或 event,取决于平台特性
  Windowsmpm_winnt
  

  在 Unix 或类似平台中,MPM 可以构建为动态模块,与其它动态模块一样在运行时加载。 构建 MPM 为动态模块允许通过修改 LoadModule 指令内容来改变 MPM,而不用重新构建服务器程序。
  

  在执行 configure 脚本时,使用 --enable-mpms-shared 选项可以启用此特性。 当给出的参数为 all 时,所有此平台支持的 MPM 模块都会被安装。还可以在参数中给出模块列表。
  

  默认 MPM,可以自动选择或者在执行 configure 脚本时通过 --with-mpm 选项来指定,然后出现在生成的服务器配置文件中。 编辑 LoadModule 指令内容可以选择不同的 MPM。
  

  MPM: Multi Path Modules (多道处理模块)定义apache来处理多个用户请求时候的模型  98分钟
  mpm_winnt
  prefork (一个请求用一个进程响应)
  worker  (一个请求用一个线程响应) (web服务器生成多个进程,同时每个进程可以生成多个线程,用一个线程响应一个用户请求。默认情况下,服务启动的时候,
  生成两个进程。linux上经过测试发现worker模型没有event模型好)
  event   (一个进程处理多个请求)2.4以后默认就支持event这个机制。多路复用多线程web服务器
  
  
  2.2默认使用的是prefork,稳定性可以。
  

  当前服务器使用的模块有哪些:可以使用如下命令:这些都是编译好的。
  

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

  /usr/sbin/httpd.event
  /usr/sbin/httpd.worker
  

  [root@localhost conf]# rpm -ql httpd|grep bin
  /usr/sbin/httpd.event
  /usr/sbin/httpd.worker
  

  如果想使用某一个模型只需要更改另外一个配置文件即可:
  [root@localhost conf]# cat /etc/sysconfig/httpd        #全局的配置文件
  # Configuration file for the httpd service.
  

  #
  # The default processing model (MPM) is the process-based
  # 'prefork' model.  A thread-based model, 'worker', is also
  # available, but does not work with some modules (such as PHP).
  # The service must be stopped before changing this variable.
  #
  #HTTPD=/usr/sbin/httpd.worker
  

  2.2中event不建议用,bug多。测试版本。2.4以后使用event比较好。
  以上说明了如何在redhat上切换MPM可执行的对应程序的。而这个可执行程序编译完成后,就确定使用哪一些MPM了。因此红帽编译了三次,生成了三个MPM。
  

  

  同时在主配置文件中,有三个模型.下面说明模块的使用属性:
  

  
  StartServers       8
  MinSpareServers    5
  MaxSpareServers   20
  ServerLimit      256        #最多允许多少个用户请求
  MaxClients       256#最多允许多少个用户,修改这个参数之后需要将此进程kill掉,然后再开启。
  MaxRequestsPerChild  4000#一个进程最多响应多少个用户请求,达到这个次数之后,无论如何将其kill掉,再生成一个新的进程。
  #注意所有的数据都需要自己进行测试。
  

  

  
  StartServers         2   #默认启动的进程数
  MaxClients         150
  MinSpareThreads     25  #最小空闲线程
  MaxSpareThreads     75 #最大空闲线程数
  ThreadsPerChild     25  #一个进程可以生成多少个线程
  MaxRequestsPerChild  0   #每一个进程最多响应多少个请求,因为进程不处理用户请求,所以设置为0,表示不做限定。
  
  

  #Listen 12.34.56.78:80
  Listen 80#说明监听当前主机上的所有80端口。listen指令可以出现多次。
  LoadModules#指定apache要装载的模块;
  Include conf.d/*.conf
  User apache  #开启服务器所用的用户
  Group apache  #开启服务所用的组名
  

  

  httpd属性配置:
  [root@localhost conf]# grep "Section" httpd.conf
  ### Section 1: Global Environment
  ### Section 2: 'Main' server configuration
  ### Section 3: Virtual Hosts
  分为三段当你,2,3段是冲突的。只能启用一个。
  

  UseCanonicalName Off          #使用正式名称;
  DocumentRoot "/var/www/html"  #文档根目录,这个目录也是可以更改的;
  

  URL路径与本地系统路径不是一个概念;URL路径是对应于DocumentRoot路径而言的。同时默认需要定义它可以被那些用户访问。
  options定义其下的路径如何被访问,默认路径的权限这里也做限定。
  这个就是做默认路径的访问控制的;
  
  

  #
  # Possible values for the Options directive are "None", "All",
  # or any combination of:
  #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
  #
  # Note that "MultiViews" must be named *explicitly* --- "Options All"
  # doesn't give it to you.
  #
  # The Options directive is both complicated and important.  Please see
  # http://httpd.apache.org/docs/2.2/mod/core.html#options
  # for more information.
  #
  Options Indexes FollowSymLinks                              #定义索引文件,将该目录下的所有内容都看到,默认是开放的,需要禁用。但是
  当我们做下载的时候不需要禁用。Indexes 允许索引目录的。Options后面加none表示所有都不支持。
  FollowSymLinks是否支持链接文件。这里的是允许使用符号链接。
  Options有五个默认没有任何功能;
  Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
  None: 不支持任何选项
  Indexes: 允许索引目录
  FollowSynLinks: 允许访问符号链接指向的原文件
  Includes: 允许执行服务端包含(SSI)SEVER SIDE INCLUDE  #这个也不安全,除非特殊需要
  SymLinksifOwnerMatch:允许执行符号链接,同时制定属主跟httpd进程一直;
  ExecCGI: 允许运行CGI脚本;是否允许CGI脚本。有的时候需要打开这个功能;
  MultiViews:多视图的一种机制;
  All: 支持所有选项;
  #
  # AllowOverride controls what directives may be placed in .htaccess files.
  # It can be "All", "None", or any combination of the keywords:
  #   Options FileInfo AuthConfig Limit
  #
  AllowOverride None                       #是否允许覆盖
  AllowOverride Authconfig                 #
  

  #
  # Controls who can get stuff from this server.
  #
  #   Order allow,deny#用于定义IP或基于主机的访问控制功能的。定义列表,先allow,后deny。deny是默认值。allow和deny的次序很关键。
  #  Allow from all   #仅允许172.16.100.0访问;
  

  #拒绝:192.168.0.1访问;
  Order deny,allow
  deny from 192.168.0.1  172.16.100.1
  
  地址的表示方式:
  IP
  network/netmask
  HOSTNAME: www.a.com
  DOMAINNAME: zledu.com
  Partial IP: 172.16, 172.16.0.0/16
  在http2.4之后,不使用allow和deny的机制了。
  修改完配置文件之后,可以使用httpd -t这个选项来查看配置文件的语法是否正确。
  自己如何访问自己?使用elinks纯文本的浏览器。在纯文本的界面下,浏览网页的一个工具。
  远程链接的情况下,由于语言不匹配可能会出现乱码。
  elinks  http://172.16.100.1
  -dump表示把网页内容显示完成之后,立即退出。
  -source      显示网页的源码;
  

  
  AllowOverride Authconfig           #如果改成none,就不会去读取.htaccess配置文件。
  AuthType Basic
  AuthName "Restricted Files"
  AuthUserFile /usr/local/apache/passwd/passwords
  Require user zl
  

  这个文件的创建只能用某一特定命令:
  htpasswd -c -m  AuthUserFile /usr/local/apache/passwd/passwords  zl
  如果要添加第二个用户将-c参数去掉即可。
  htpasswd -m  AuthUserFile /usr/local/apache/passwd/passwords  zl2
  option:-D删除用户时使用。
  

  AuthType Basic
  AuthName "By Invitation Only"
  # Optional line:
  AuthBasicProvider file
  AuthUserFile /usr/local/apache/passwd/passwords
  AuthGroupFile /usr/local/apache/passwd/groups
  Require group GroupName
  

  如果使用Group验证,则需要事先将这几个用户进行创建,创建完成后,编辑某一文件,在其下面写上:
  GroupName: rbowen dpitts sungo rshersey
  

  

  Require valid-user              #说明只要是AuthUserFile或者AuthGroupFile里面有的用户都可以拿过来使用。
  

  

  httpd -M   查看系统装的http的的模块文件有哪些。
  

  

  PV:page  view页面访问量。网站统计值里面经常用的指标;PV是按照天数来统计的;每天的页面访问量。必须是一个完整的页面才行。
  UV:USER VIEW ;每天的独立IP访问量。
  

  apache:服务器
  

  虚拟主机:
  apache服务:
  中心主机
  虚拟主机
  基于IP
  IP1:80
  IP2:80
  基于端口
  IP:80
  IP:8080
  基于域名
  IP:80
  主机名不同
  www.zldu.com
  www.a.org
  www2.a.org
  www.b.net
  基于主机名,虽然也经过地址解析,但是http协议自身所带的http头信息里面的host能够帮我们找到正确的资源。
  apache:
  中心主机
  虚拟主机
  
  apache 2.4以后想定义什么样的主机就定义什么样的主机。
  

  

  ServerName:
  ServerAlias:        #服务器也是可以有别名的;
  DocumentRoot /www/a.org/
     #Directory封装的是文件系统路径
  Option
  AllowOverride
  
  
  Alias
  ErrorLog
  CustomLog
  

    #定义URL的时候用的;所使用的方法只有Get方法,其他任何方法都不支持。
  ScriptAlias     #允许执行CGI脚本的路径;有了CGI技术,我们的APACHE进程就能够通过CGI协议调用另外一个进程,使其允许一段程序;将其允许结果返回给apache。
  
  

  html,text。
  

  

  

  

  MVC
  

  那么如何将这所有的属性用一个容器进行封装:virtualhost
  如何使用虚拟主机,得先取消中心主机,注释中心主机的DocumentRoot即可。
  虚拟主机的定义:
  
  

  
  

  HOST的格式:
  基于IP,HOST的写法
  HOST
  IP1:80
  IP2:80
  
  基于端口:
  HOST
  IP:80
  IP:8080
  
  基于域名:
  *:80
  ServerName 不同
  

  如何建立自己的虚拟主机呢?方法如下:
  编辑vim /etc/httpd/conf/httpd.conf将里面的主配置文档DocumentRoot进行注释;
  然后在/etc/httpd/conf.d目录下面建个文件:
  virtual.conf
  

  [root@localhost conf.d]# cat virtual.conf
  
  ServerName www.zledu.com
  DocumentRoot "/www/zledu.com"
  CustomLog   /var/www/httpd/zledu.com/access_log combined
  
  Options None
  AllowOverride none
  Deny from 172.16.100.177
  
  
  

  

  
  ServerName www.a.org
  DocumentRoot "/www/a.org"
  
   Options None
   AuthOverride authconfig
   AuthType  basic
   AuthName "Restrict area"
   AuthUserFile "/etc/httpd/.htpasswd"
   Required valid-user
  
  
  htpasswd -c -m /etc/httpd/.htpasswd tom
  htpasswd -m /etc/httpd/.htpasswd jerry
  
  ServerName www.d.goy
  DocumentRoot "/www/d.goy"
  
  
  ServerName www.a.org
  DocumentRoot "/www/b.net"
  
  

  

  [root@localhost conf.d]#
  

  

  设定默认虚拟主机
  
  DocumentRoot /www/default80
  # ...
  
  

  
  DocumentRoot /www/default
  # ...
  
  

  

  
  SetHandler server-status
  Order Deny,Allow
  Deny from all
  Allow from .foo.com
  
  

  服务器的状态信息,一般情况下不开启。只开启给特定IP的特定用户。
  

  

  基于OPENSSL的HTTPS服务:
  client        server(443)
  

  ssl协商完成之后,将公钥信息发送给客户端,客户端对整数进行验证,客户端验证完成后,发送一个对称秘钥给服务器端。
  

  客户端要信任证书颁发机构,能够信任别人发的证书所用。
  

  SSL会话在建立的时候跟主机名关系不大。ssl是没法基于主机名进行区分的。
  如果服务器只有一个IP地址,ssl的功能只能提供给一个虚拟主机。
  
  yum  install  mod_ssl
  rpm -ql mod_ssl
  [root@localhost ~]# rpm -ql mod_ssl
  /etc/httpd/conf.d/ssl.conf
  /usr/lib64/httpd/modules/mod_ssl.so
  /var/cache/mod_ssl
  /var/cache/mod_ssl/scache.dir
  /var/cache/mod_ssl/scache.pag
  /var/cache/mod_ssl/scache.sem
  

  下面模拟100.8做CA;
  cd /etc/pki
  ls
  cd CA/
  (umask 077;openssl genrsa -out private/cakey.pem  2048)               #生成一个私有钥匙对
  ls -l private/
  openssl req -new -x509 -key private//cakey.pem -out cacert.pem -days 3655
  生成一个自签证书,发给自己。
  [root@localhost CA]# mkdir certs crl newcerts
  [root@localhost CA]# touch index.txt
  [root@localhost CA]# echo 01 >serial
  more  /etc/pki/tls/openssl.cnf
  # the resulting certificates are compatible with Netscape
  string_mask = MASK:0x2002
  

  # req_extensions = v3_req # The extensions to add to a cer
  tificate request
  

  [ req_distinguished_name ]
  countryName                     = Country Name (2 letter c
  ode)
  countryName_default             = CN
  countryName_min                 = 2
  countryName_max                 = 2
  

  stateOrProvinceName             = State or Province Name (
  full name)
  stateOrProvinceName_default     = Henan
  

  localityName                    = Locality Name (eg, city)
  localityName_default            = Zhengzhou
  

  0.organizationName              = Organization Name (eg, c
  ompany)
  0.organizationName_default      = zl
  

  # we can do this but it is not needed normally :-)
  #1.organizationName             = Second Organization Name
  (eg, company)
  #1.organizationName_default     = World Wide Web Pty Ltd
  

  organizationalUnitName          = Organizational Unit Name
  (eg, section)
  organizationalUnitName_default  =Tech
  

  [root@localhost CA]# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3650
  [root@localhost tmp]# rm httpd.c* -f
  

  

  在172.16.100.1上进行配置:
  [root@localhost httpd]# ls
  conf  conf.d  logs  modules  run
  [root@localhost httpd]# mkdir ssl
  [root@localhost httpd]# cd ssl
  [root@localhost ssl]# ls
  [root@localhost ssl]# pwd
  /etc/httpd/ssl
  [root@localhost ssl]
  (umask 077;openssl genrsa 1024 >httpd.key)
  

  [root@localhost ssl]# openssl req -new -key httpd.key -out httpd.csr #生成一个证书颁发请求,注意里面的内容跟配置文件一致;
  [root@localhost ssl]# scp httpd.csr 172.16.100.8:/tmp  #将证书申请放到172.16.100.8这个服务器上面去;
  [root@localhost ssl]# scp 172.16.100.8:/tmp/httpd.crt ./  #将签发好的证书放到本地;
  [root@localhost ssl]# cd /etc/httpd/conf.d/
  vi ssl.conf
  
  

  # General setup for the virtual host, inherited from global configuration
  #DocumentRoot "/var/www/html"
  #ServerName www.example.com:443
  ServerName www.zledu.com
  SSLCertificateFile /etc/httpd/ssl/httpd.crt
  SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
  将如下目录下的证书给windows进行传输一份,并改名字叫.crt结尾即可。直接安装即可。受信任的证书颁发。
  [root@localhost CA]# pwd
  /etc/pki/CA
  [root@localhost CA]# ls
  cacert.pem
  

  做测试的时候,要将这个证书颁发机构给加入到windows服务器里面来。
  

  

  
  





运维网声明 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-638155-1-1.html 上篇帖子: Apache服务器之一理论讲解(Apache) 下篇帖子: apache cgi python
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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