httpd 2.2(Apache Web服务器)

apache (Web服务器)

简介:

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。 

 

Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。

它可以运行在几乎所有广泛使用的计算机平台上。

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用

 

http请求处理过程

一次完整的http请求处理过程:

(1) 建立或处理连接:接收请求或拒绝请求

(2) 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;

          (3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据请求报文的首部来判断用户请求的资料

(4) 访问资源:获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源;这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot

(5) 构建响应报文

(6) 发送响应报文,有长连接和短连接模式

(7) 记录日志

并发访问响应模型(Web I/O):

1.单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;

2.多进程I/O结构:并行启动多个进程,每个进程响应一个请求;

3.复用I/O结构:一个进程响应n个请求;

         (1)多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;

         (2)事件驱动:event-driven

4复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;

apache 的工作模式

    1.prefork:多进程模型,每个进程响应一个请求;

一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;

    2.worker:多线程模型,每个线程响应一个请求;

一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;                                   

    3.event:事件驱动模型,每个线程响应n个请求;

一个主进程:生成m个子进程,每个进程直接响应n个请求;

 

 

安装前准备

说明

操作系统:CentOS 6.7 64

Apache 版本:httpd-2.2.15-47.el6.centos.3.x86_64

httpd服务器ip:192.168.1.5

 

1.  配置好IPDNS 、网关,确保使用远程连接工具能够连接服务器

2.       配置防火墙,iptables –F 清理防火墙规则或者关闭iptables

3.       关闭SELINUX, setenforce 0  #立即生效(实际是宽容模式)

 

安装配置

1.  安装apache,yum安装会自动解决依赖关系

yum -y install httpd

2.  启动httpd 服务,并测试页面是否显示正常

service httpd start

如果启动报错信息是:httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

那就去主配置文件找到#ServerName www.example.com:80 ,把前面的注释去掉就可以启动不报错了.

blob.png

3.  定义server页面文档路径,在新的路径目录下创建文件内容,重新加载服务,测试页面.

mkdir -pv /www/htdocs

vi /www/htdocs/index.html

test Page

主配置文件修改这一行 DocumentRoot "/var/www/html"

vi /etc/httpd/conf/httpd.conf

DocumentRoot "/www/htdocs"  #修改成这样

 service httpd reload

    blob.png

4.  基于来源访问控制.

vi /etc/httpd/conf/httpd.conf

    <Directory "/www/htdocs">  #修改这里的路径    
    Order allow,deny
    Deny from 192.168.1.3  #找到这一行添加192.168.1.3
    Allow from all

    service httpd reload

blob.png

5.  设置路径别名

 cd /www/htdocs/

 vi bbs/index.html

 Page at /www/htdocs/bbs      #先自己测试看看是否是显示的内容

 mkdir /forum

 vi /forum/index.html

 Page /forum

 vi /etc/httpd/conf/httpd.conf

 Alias /bbs/ "/forum/"

 

service httpd reload

blob.png

6.  基于用户访问控制

     cd /www/htdocs/

    mkdir amdin

    vi admin/index.html

    Page FOR Admin

    vi /etc/httpd/conf/httpd.conf  #在主配置文件下添加如下几行

     <Directory "/www/htdocs/admin">
            Options None
            AllowOverride None
            AuthType Basic
            AuthName "Administator private"
            AuthUserFile "/etc/httpd/conf.d/.htpasswd"
            Require valid-user
     </Directory>


     创建2个用户

    htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom

    htpasswd -m /etc/httpd/conf.d/.htpasswd jerry

    service httpd reload

    blob.png

7.  基于组的用户认证,基于组的认证修改的配置文件在以上的例子添加修改

     vi /etc/httpd/conf/httpd.conf  #在主配置文件下添加如下几行

     <Directory "/www/htdocs/admin">
            Options None
            AllowOverride None
            AuthType Basic
            AuthName "Administator private"
            AuthUserFile "/etc/httpd/conf.d/.htpasswd"
                    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
            Require group webadmin
     </Directory>

    htpasswd -m /etc/httpd/conf.d/.htpasswd obama

    创建组添加用户

    vi /etc/httpd/conf.d/.htgroup

      webadmin:jerry obama

     

    service httpd reload

    blob.png

 

虚拟主机

注意:现在httpd服务器ip172.28.0.97

1.  基于ip 的虚拟主机配置,进入主配置文件修改

vi /etc/httpd/conf/httpd.conf

#DocumentRoot "/var/www/html"    #把这行注释掉

        <VirtualHost 172.28.0.97:80>    
            ServerName web1.test.com
            DocumentRoot "/vhosts/web1/htdocs"
        </VirtualHost>

然后创建相应的目录和内容,并重新加载配置文件和测试

mkdir -pv /vhosts/{web1,web2}/htdocs

vi /vhosts/web1/htdocs/index.html

Page at Web1

service httpd reload

        blob.png

2.  基于端口的虚拟主机,在以上的例子中在多个8080端口

vi /vhosts/web2/htdocs/index.html

    Page at Web2

vi /etc/httpd/conf/httpd.conf

        Listen 8080  #添加这一行监听8080端口    
        <VirtualHost 172.28.0.97:8080>
            ServerName web3.magedu.com
            DocumentRoot "/vhosts/web2/htdocs"
        </VirtualHost>

 

httpd -t     #测试语法错误

service httpd restart

blob.png

3.  基于名称的虚拟主机,在以上的虚拟配置上修改,并测试

vi /etc/httpd/conf/httpd.conf

NameVirtualHost 172.28.0.97:80  #把注释去掉,表示基于主机名的虚拟主机

blob.png

httpd -t

mkdir -pv /web/vhosts/{www1,www2}

vi /web/vhosts/www1/index.html

    Page at www1.stu.com

vi /web/vhosts/www2/index.html

Page at www2.stu.com

 

        在另外一台机子上可以在hosts文件中添加172.28.0.97 www1.stu.com www2.stu.com

blob.png

4.  通过www1.stu.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);

cd /web/vhosts/www1/

mkdir admin

htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom

vi /etc/httpd/conf/httpd.conf

blob.png

blob.png

service httpd reload

 

blob.png

 

为上面的第1个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

httpd服务器ip:172.28.0.97

CA服务器IP172.28.0.59

1.  生成密钥对 cakey.pem,并创建所需文件(在CA服务器上操作)

cd /etc/pki/CA/

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

touch index.txt

echo 01 > serial

2.  开始申请CA机构的根证书,20年x509类型(在CA服务器上操作)

    openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

    -new: 生成新证书签署请求;

-x509: 专用于CA生成自签证书;

-key: 生成请求时用到的私钥文件;

-days n:证书的有效期限;

-out /PATH/TO/SOMECERTFILE: 证书的保存路径;

blob.png

3.  在httpd服务器上,生成自己的私钥key与csr证书请求

cd /etc/httpd/

mkdir ssl

cd ssl/

(umask 077;openssl genrsa -out httpd.key 1024)  #生成自己的私钥

openssl req -new -key httpd.key -out httpd.csr

blob.png

4.  把证书传送给CA

    scp httpd.csr root@172.28.0.59:/tmp/

    blob.png

 

5.  在CA上签署证书,并将证书发还给请求者(在CA服务器上操作)

openssl ca -in /tmp/httpd.csr -out certs/www1.stu.com.crt -days 365

scp certs/www1.stu.com.crt 172.28.0.97:/etc/httpd/ssl

blob.png

blob.png

 

6.  httpd要支持SSL 需要安装这个mod_ssl模块

 yum -y install mod_ssl

 cd /etc/httpd/conf.d/

 vi ssl.conf

    <VirtualHost 172.28.0.97:443>   #修改这行IP    
    DocumentRoot "/web/vhosts/www1" #注释去掉修改
    ServerName  www1.stu.com        #注释去掉修改
    #   Server Certificate:
    SSLCertificateFile /etc/httpd/ssl/www1.stu.com.crt  #修改证书文件路径
    #   Server Private Key:
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key      #这个证书私钥
     service httpd restart

7.  测试https是否配置成功

在其他的机子上做测试

openssl s_client -connect 172.28.0.97:443 -CAfile /etc/pki/CA/cacert.pem

blob.png

blob.png

原创文章,作者:liangkai,如若转载,请注明出处:http://www.178linux.com/13843

(0)
liangkailiangkai
上一篇 2016-03-29
下一篇 2016-03-30

相关推荐

  • 文件编辑之神器Sed

    pattern space   //  文本中每行内容都会进入到pattern space中, 如果匹配到了,就会进入到右分支, 如果没有匹配到,则进入左分支。 hold space  //  就是已经被模式匹配到, 并且编辑后保存的内容就是hold space 中. 默认情况下,当没有被匹配之后,没有匹配到…

    Linux干货 2016-08-15
  • Linux软件包管理之rpm和yum的使用

    rpm命令的使用 什么是RPM? rpm:RPM Package Manager (原Redhat Package Manager) Linux 软件包管理工具 特定的程序由应用程序组成;     GPL:源码     glibs:标准的C库 常见Linux发行版的软件包管理器:…

    Linux干货 2016-08-25
  • N25第四周博客作业

    第四周博客作业 1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。      3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的i…

    Linux干货 2016-12-19
  • N22-第五周作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# cat /etc/passwd | grep "^root" | cut -d: -f7 /bin/bash 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello()…

    Linux干货 2016-09-15
  • grep基本正则表达式以及扩展正则表达式

    基本正则表达式: grep:Globel serach REgular expression and print out the line 作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行 模式:由正则表达式的元字符及文本字符所编写出的过滤条件 grep选项:       &nbs…

    Linux干货 2016-08-08
  • Xen虚拟化平台安装及实时迁移

    前言 Xen是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,Xen可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源极少。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Redhat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。 Xen虚拟化类型 Xen对…

    Linux干货 2015-07-19

评论列表(1条)

  • stanley
    stanley 2016-03-30 12:14

    已置顶,优化点:
    1. markdown 神器可参考
    2. 题目不够专业