apache_安装以及基本的配置

RedHat (httpd):
    rpm 包:
    源码编译
elinks http://192.168.21.123  (交互式,纯文本)
     -dump     显示网页之后直接退出,不在进行交互式
     -source   显示网页源码

curl http://192.168.21.123

httpd: SELinux 事先将其配置为 permissive 或 disabled

httpd:
    /usr/sbin/httpd   (MPM: preforx)
        httpd: root,root (master process)
    httpd: apache,apache (worker process)
    /etc/rc.d/init.d/httpd
    port:(80/tcp), (ssl:443/tcp)

    /etc/httpd/  :工作跟目录,相当于程序安装目录
    /etc/httpd/conf/ :配置文件目录
        主配置文件 :httpd.conf
    /etc/httpd/conf.d/*.conf  是主配置文件的组成部分
    
    /etc/httpd/modules/ :模块目录
    /etc/httpd/logs/ :日志目录
        日志文件有两类:访问日志 access_log,错误日志:err_log
    
    /var/www/
            html
        cgi-bin

        cgi :Common Gateway Interface
             Client --> httpd (index.cgi) --> Spawn process (index.cgi) --> httpd --> client
            
        fastcgi :
    
http://httpd.apache.org

自己安装帮助手册
  # yum -y install httpd-manual

  http://192.168.21.117/munual

httpd.conf:
    directive value
       指令不区分大小写
       value 区分大小写
    


    MPM : Multi-Processing Modules
         mpm_winnt
     prefork    (一个请求用一个进程响应)
     worker     (一个请求用一个线程响应,(启动多个进程,每个进程生成多个线程))
     event      (一个进程处理多个请求)
   # rpm -ql | grep sbin
   # httpd -l
   # less /etc/sysconfig/httpd

#prefork 模型
<IfModule prefork.c>
StartServers       8     #httpd启动是启动的进程个数
MinSpareServers    5     #保持最少空闲进程的个数
MaxSpareServers   20     #最多空闲进程的个数
ServerLimit      256     #限制MaxClients
MaxClients       256     #最大同时连接的请求数
MaxRequestsPerChild  4000 #单个进程最大处理的请求数,超过阀值后kill之后重新生成一个新的进程
</IfModule>


#worker 模型
<IfModule worker.c>
StartServers         4   #启动进程的个数
MaxClients         300   #最大同时连接的请求数
MinSpareThreads     25   #最小的空闲总线程数
MaxSpareThreads     75   #最大的空闲总线程数
ThreadsPerChild     25   #每个进程的线程数
MaxRequestsPerChild  0
</IfModule>


#监听地址和端口,可以有多行
Listen [IP:]port
Listen 80
Listen 172.16.10.1:8080


#包含的配置文件
Include cond.d/*.conf

#URL根目录相对应的本地路径
DocumentRoot "/var/www/html"

URL路径<>本地文件路径,URL是相对于DocumentRoot的路径而言


<Directory "/var/www/html">
  Options None
  AllowOverride None
  Order allow,deny
  Allow from 192.168.100.0/24
</Directory>


Options
    None :不支持任何选项
    Indexes :允许索引目录  (不安全的)
    FollwSymLinks :允许访问符号链接指向的源文件,不要开启,影响访问速度
    Includes :允许执行服务端包含(SSI) (不安全的)
    ExecCGI :允许运行CGI脚本
    Multiviews :根据客户端来源的语言显示相应的资源
    All :启用所有选项


AllowOverride : 是否覆盖Order项,none  all,或者使用密码验证等
#使用用户密码验证:
    AllowOverride AuthConfig
    Authtype Basic
    AuthName "受限制的访问站点"
    AuthUserFile "/etc/httpd/conf/htpasswd"
    AuthGroupFile "/etc/httpd/conf/htgroup"
    Require user user_name  | valid-user | group mygroup
       # user_name 允许登录的用户
       # valid-user 允许所有的用户登录
       # group mygroup 允许登录的用户组


Order :用于定义基于主机的访问控制功能,IP,网络地址或主机定义访问控制机制
    order allow,deny
    allow from xx
    deny from xx

    地址的表示方式
      IP
      network/netmask
      HOSTNAME :www.a.com
      DOMAINNAME :test.com
      Partial IP :172.1172.16.0.0/16



建立AuthUserFile
[root@rs1 ~]# htpasswd -c -m /etc/httpd/conf/htpasswd hadoop
New password:
Re-type new password:
Adding password for user hadoop


向存在的htpasswd 中添加用户
[root@rs1 ~]# htpasswd -m /etc/httpd/conf/htpasswd hale
New password:
Re-type new password:
Adding password for user hale


创建AuthGroupFile
[root@rs1 ~]# cd /etc/httpd/conf
[root@rs1 conf]# ll
total 56
-rw-r--r--  1 root root    88 Dec 16 18:02 htpasswd
-rw-r--r--  1 root root 34422 Dec 16 15:53 httpd.conf
-rw-r--r--. 1 root root 13139 Oct 16  2014 magic
[root@rs1 conf]# vim htgroup
[root@rs1 conf]# httpd -t
Syntax OK

  vim htgroup
     mygroup:hadoop hale #此处添加的用户必须存在于 AuthUserFile



#定义URI别名,它有自己的本地文件路径,与DocumentRoot根无关
# curl http://192.168.21.117/icons/

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>




apache 虚拟主机:
  apache:服务器,Host,物理主机


  虚拟主机:
    一个apache服务器服务于多个不同的站点:

apache:
    中心主机:
    虚拟主机:
         基于端口:
            IP:80
        IP:8080

     基于IP:
        IP1:80
        IP2:80

     基于域名:
            IP:80
          主机名不同
             www.a.com
         www.b.com
         www.c.com


                apache 2.2
                  启用 NameVirtualHost


                apache 2.4
                  直接定义虚拟主机,不需要指令NameVirtualHost


serverName
serverAlias
DocumentRoot "/www/a.com"
 <Directory "/www/a.com">
    Options None
    AllowOverride None

 </Directory>
Alias
ErrorLog
CustomLog

<Location "/status">
  SetHandler server_status

</Location>
ScriptAlias

要使用虚拟主机,需要先取消中心主机,注释中心的DocumentRoot即可
虚拟主机的定义:

#DocumentRoot "/var/www/html"

#基于端口和IP的虚拟主机
<VirtualHost 172.16.10.1:80>
    ServerName ip1.hale.com
    DocumentRoot "www/ip1"
</VirtualHost>

<VirtualHost 172.16.10.2:80>
    ServerName ip2.hale.com
    DocumentRoot "/www/ip2"
</VirtualHost>

<VirtualHost 172.16.10.1:8080>
    ServerName port2.hale.com
    DocumentRoot "/www/port2"
</VirtualHost>


#基于主机名的虚拟主机
NameVirtualHost 192.168.10.2:80
<VirtualHost 192.168.10.2:80>
    ServerName name1.hale.com
    DocumentRoot "/www/name1"
</VirtualHost>

<VirtualHost 192.168.10.2:80>
    ServerName name2.hale.com
    DocumentRoot "/www/name2"
</VirtualHost>




基于openssl的https

apache的ssl需要 mod_ssl 的支持
# yum install mod_ssl

# rpm -ql mod_ssl


一个apache服务可以有多个http虚拟主机,但只能有一个https虚拟主机

#使用openssl创建需要的CA,此处直接在http服务器上生成证书

# vim /etc/pki/tls/openssl.cnf
# cd /etc/pki/CA/
# ls
# (umask 077; openssl genrsa 2048 > private/cakey.pem)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem
# echo 01 > serial
# touch index.txt

# cd /var/www/ssl
# mkdir /var/www/ssl
# cd /var/www/ssl
# (umask 077; openssl genrsa 1024 > https.key)
# openssl req -new -key https.key -out https.csr
# openssl ca -in https.csr -out https.crt -days 3650
# ls


#修改ssl.conf配置
#需要修改的主要配置项,其他的项目根据需求进行修改

# vim /etc/httpd/conf.d/ssl.conf

<VirtualHost _default_:443>

ServerName https.hale.com
DocumentRoot "/var/www/ssl"
<Directory "/var/www/ssl">
  Options None
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

SSLEngine on
SSLCertificateFile /var/www/ssl/https.crt
SSLCertificateKeyFile /var/www/ssl/https.key
</VirtualHost>

你可能感兴趣的:(apache_安装以及基本的配置)