精华内容
下载资源
问答
  • httpd服务

    千次阅读 2020-08-27 19:59:23
    httpd服务 文章目录@[toc]httpd简介httpd版本httpd的特性httpd-2.4新增的模块httpd基础httpd自带的工具程序rpm包安装的httpd程序环境web相关命令curl命令httpd命令安装httpdhttpd常用配置 httpd简介 httpd是Apache...

    httpd服务

    httpd简介

    • httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
    • 通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中作为服务运行,也就是说httpd服务可以跨平台使用。
      • 网站的实现方式
        • 在Linux中可以用httpd、nginx、tengin(nginx的升级版)、tomcat等来搭建网站服务
        • 在Windows中可用IIS来实现网站的搭建

    httpd版本

    httpd的两大经典版本,httpd-2.2和httpd-2.4。

    • Redhat6系列的版本默认提供的是httpd-2.2版本的rpm包
    • Redhat7系列的版本默认提供的是httpd-2.4版本的rpm包

    httpd的特性

    httpd有很多特性,下面主要介绍httpd-2.2版本和httpd-2.4版本各自的特性。

    注:2.4版本包含2.2版本的所有特性

    版本特性
    2.2事先创建进程
    按需维持适当的进程
    模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
    支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
    支持https协议(通过mod_ssl模块实现)
    支持用户认证
    支持基于IP或域名的ACL访问控制机制
    支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码)
    支持URL重写
    支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)
    2.4httpd-2.4的新特性:
    MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
    支持event MPM,eventMPM模块生产环境可用,event MPM(事件模块)
    支持异步读写
    支持每个模块及每个目录分别使用各自的日志级别
    每个请求相关的专业配置,使用来配置
    增强版的表达式分析器
    支持毫秒级的keepalive timeout(长连接超时)
    基于FQDN的虚拟主机不再需要NameVirtualHost指令
    支持用户自定义变量
    支持新的指令(AllowOverrideList)
    降低对内存的消耗
    • keepalive:长连接,连接建立后会等一段时间然后自动断开,而短连接是建立连接后立即传输数据然后断开连接
    工作模型工作方式
    prefork多进程模型,预先生成进程,一个请求用一个进程响应,一个主进程负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
    worker基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
    event基于事件的驱动,一个进程处理多个请求

    httpd-2.4新增的模块

    httpd-2.4在之前的版本基础上新增了几大模块

    模块功能
    mod_proxy_fcgi反向代理时支持apache服务器后端协议的模块
    mod_ratelimit提供速率限制功能的模块
    mod_remoteip基于ip的访问控制机制被改变,不再支持使用Order,Deny,Allow来做基于IP的访问控制

    fcgi:fastcgi,通用网关协议,前端和后端进行联系的一种协议


    httpd基础

    httpd自带的工具程序

    工具功能
    htpasswdbasic认证基于文件实现时,用到的帐号密码生成工具
    apachectlhttpd自带的服务控制脚本,支持start,stop,restart
    apxs由httpd-devel包提供的,扩展httpd使用第三方模块的工具
    rotatelogs日志滚动工具
    suexec访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
    abapache benchmark,httpd的压力测试工具
    • 日志滚动
      • 按天生成日志
      • 按大小生产日志
    • 压力测试
      • 模拟多人同时访问服务器,测试服务器的最多能够支持多少人同时在线

    rpm包安装的httpd程序环境

    文件/目录对应的功能
    /var/log/httpd/access_log访问日志
    /var/log/httpd/error_log错误日志
    /var/www/html/站点(网站)文档目录
    /usr/lib64/httpd/modules/模块文件路径
    /etc/httpd/conf/httpd.conf主配置文件
    /etc/httpd/conf.modules.d/*.conf模块配置文件
    /etc/httpd/conf.d/*.conf辅助配置文件
    • MPM:以DSO(动态加载)机制提供,配置文件为/etc/httpd/conf.modules.d/00-mpm.conf,以.so结尾的文件就是模块
    • 如果/var/www/html/目录下没有文件,则会显示默认首页,如果显示其他页面,要在目录下面新建一个目录,然后把想要显示的的网页的移到到这个目录里面并且改名为index.html即可
    [root@cwt ~]# cd /var/www/html/
    [root@cwt html]# mkdir test
    [root@cwt html]# cd test/
    [root@cwt test]# vim index.html 
    This is a test page
    

    在这里插入图片描述

    • 如果在httpd安装完毕后想要添加其他功能,编译完所需的模块后应该把模块放到/usr/lib64/httpd/modules/目录下面

    web相关命令

    curl命令

    curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。

    • curl支持的功能
      • https认证
      • http的POST/PUT等方法
      • ftp上传
      • kerberos认证
      • http上传
      • 代理服务器
      • cookies
      • 用户名/密码认证
      • 下载文件断点续传(常用)
      • socks5代理服务器
      • 通过http代理服务器上传文件到ftp服务器

    语法:curl [options] [URL …]

    • 常用选项
      • -A/–user-agent < string > #设置用户代理发送给服务器
      • -basic #使用Http基本认证
      • –tcp-nodelay #使用TCP_NODELAY选项
      • -e/–referer < URL > #来源网址
      • –cacert < file > #CA证书(SSL)
      • –compressed #要求返回时压缩的格式
      • -H/–header < line > #自定义请求首部信息传递给服务器
      • -I/–head #只显示响应报文首部信息
      • –limit-rate < rate > #设置传输速度
      • -u/–user < user[:password] > #设置服务器的用户和密码
      • -0/–http1 #使用http 1.0版本,默认使用1.1版本。这个选项是数字0而不是 字母o
      • -o/–output #把输出写到文件中
      • -#/–progress-bar #进度条显示当前的传送状态
    //通过curl下载文件
    [root@cwt ~]# curl -o wget-1.19.5-8.el8_1.1.x86_64.rpm  http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/wget-1.19.5-8.el8_1.1.x86_64.rpm
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      7  734k    7 54810    0     0   4094      0  0:03:03  0:00:13  0:02:50  2028
      
      
    //通过curl访问网站
    [root@cwt ~]# curl https://www.baidu.com
    

    httpd命令

    语法:httpd [options]

    • 常用选项

      • -l #查看静态编译的模块,列出核心中编译了哪些模块,它不会列出使用LoadModule指令动态加载的模块,静态模块就是在编译的时候就指定编译的模块,动态模块就是编译安装完后又编译安装的模块
      [root@cwt ~]# httpd -l
      Compiled in modules:
        core.c
        mod_so.c
        http_core.c
      
      • -M #输出一个已经启用的模块列表,包括静态编译在服务器中的模块和作为DSO动态加载的模块
      [root@cwt ~]# httpd -M
      AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe34:c82. Set the 'ServerName' directive globally to suppress this message
      Loaded Modules:
       core_module (static)           //静态模块
       so_module (static)
       http_module (static)
       access_compat_module (shared)         //动态模块
       actions_module (shared)
       ...
      
      • -v #显示httpd的版本,然后退出
      [root@cwt ~]# httpd -v
      Server version: Apache/2.4.37 (centos)
      Server built:   Jun  8 2020 20:14:33
      
      • -V #显示httpd和apr/apr-util的版本和编译参数,然后退出
      [root@cwt ~]# httpd -V
      Server version: Apache/2.4.37 (centos)
      Server built:   Jun  8 2020 20:14:33
      Server's Module Magic Number: 20120211:83
      Server loaded:  APR 1.6.3, APR-UTIL 1.6.1
      Compiled using: APR 1.6.3, APR-UTIL 1.6.1
      Architecture:   64-bit
      Server MPM:     event
        threaded:     yes (fixed thread count)
          forked:     yes (variable process count)
      Server compiled with....
       -D APR_HAS_SENDFILE
       -D APR_HAS_MMAP
       -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
       -D APR_USE_SYSVSEM_SERIALIZE
       -D APR_USE_PTHREAD_SERIALIZE
       -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
       -D APR_HAS_OTHER_CHILD
       -D AP_HAVE_RELIABLE_PIPED_LOGS
       -D DYNAMIC_MODULE_LIMIT=256
       -D HTTPD_ROOT="/etc/httpd"
       -D SUEXEC_BIN="/usr/sbin/suexec"
       -D DEFAULT_PIDLOG="run/httpd.pid"
       -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
       -D DEFAULT_ERRORLOG="logs/error_log"
       -D AP_TYPES_CONFIG_FILE="conf/mime.types"
       -D SERVER_CONFIG_FILE="conf/httpd.conf"
      
      • -X #以调试模式运行httpd。仅启动一个工作进程,并且服务器不与控制台脱离
      • -t #检查配置文件是否有语法错误,不能检测文件的内容是否有问题
      [root@cwt ~]# httpd -t
      Syntax OK
      

    安装httpd

    [root@cwt ~]# dnf -y install httpd
    
    //安装完毕后关闭防火墙
    [root@cwt ~]# systemctl stop firewalld
    
    //启动httpd服务
    [root@cwt ~]# systemctl start httpd
    [root@cwt ~]# systemctl status httpd
    ● httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Tue 2020-08-25 08:41:15 CST; 15s ago
         Docs: man:httpd.service(8)
     Main PID: 6097 (httpd)
       Status: "Running, listening on: port 80"
        Tasks: 213 (limit: 24854)
       Memory: 35.8M
       CGroup: /system.slice/httpd.service
               ├─6097 /usr/sbin/httpd -DFOREGROUND
               ├─6101 /usr/sbin/httpd -DFOREGROUND
               ├─6102 /usr/sbin/httpd -DFOREGROUND
               ├─6103 /usr/sbin/httpd -DFOREGROUND
               └─6123 /usr/sbin/httpd -DFOREGROUND
    
    Aug 25 08:41:15 cwt systemd[1]: Starting The Apache HTTP Server...
    Aug 25 08:41:15 cwt systemd[1]: Started The Apache HTTP Server.
    Aug 25 08:41:15 cwt httpd[6097]: Server configured, listening on: port 80
    
    //测试服务是否启动正常,打开浏览器在地址栏输入虚拟机IP地址,虚拟机的IP地址用 ip a命令查看
    

    在这里插入图片描述


    httpd常用配置

    切换使用MPM编辑,/etc/httpd/conf.modules.d/00-mpm.conf文件

    LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
    NAME有三种:
        prefork
        event
        worker
    
    //只需要把对于的# 号去掉并重启服务就可以了,需要注意的是只能同时只能启用一种工作模式
    [root@cwt ~]# vim /etc/httpd/conf.modules.d/00-
    00-base.conf      00-lua.conf       00-optional.conf  00-systemd.conf
    00-dav.conf       00-mpm.conf       00-proxy.conf     
    [root@cwt ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf 
    # Select the MPM module which should be used by uncommenting exactly
    # one of the following LoadModule lines.  See the httpd.conf(5) man
    # page for more information on changing the MPM.
    
    # prefork MPM: Implements a non-threaded, pre-forking web server
    # See: http://httpd.apache.org/docs/2.4/mod/prefork.html
    #
    # NOTE: If enabling prefork, the httpd_graceful_shutdown SELinux
    # boolean should be enabled, to allow graceful stop/shutdown.
    #
    #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    
    # worker MPM: Multi-Processing Module implementing a hybrid
    # multi-threaded multi-process web server
    # See: http://httpd.apache.org/docs/2.4/mod/worker.html
    #
    #LoadModule mpm_worker_module modules/mod_mpm_worker.so
    
    # event MPM: A variant of the worker MPM with the goal of consuming
    # threads only for connections with active processing
    # See: http://httpd.apache.org/docs/2.4/mod/event.html
    #
    LoadModule mpm_event_module modules/mod_mpm_event.so
    

    访问控制法制

    法则功能
    Require all granted允许所有主机访问
    Require all deny拒绝所有主机访问
    Require ip IPADDR授权指定来源地址的主机访问
    Require not ip IPADDR拒绝指定来源地址的主机访问
    Require host HOSTNAME授权指定来源主机名的主机访问
    Require not host HOSTNAME拒绝指定来源主机名的主机访问
    IPADDR的类型HOSTNAME的类型
    IP:192.168.1.1
    Network/mask:192.168.1.0/255.255.255.0
    Network/Length:192.168.1.0/24
    FQDN:特定主机的全名
    DOMAIN:指定域内的所有主机

    注意:httpd-2.4版本默认是拒绝所有主机访问的,所以安装以后必须做显示授权访问

    [root@cwt ~]# ls /var/www/html/
    test  xxx
    
    //通过查看日志查看IP地址
    [root@cwt ~]# tail /var/log/httpd/access_log 
    192.168.86.1 - - [25/Aug/2020:09:23:05 +0800] "GET / HTTP/1.1" 403 4006 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36 Edg/84.0.522.63"
    
    //修改配置文件
    [root@cwt ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf 
    <Directory "/var/www/html/test">
            <RequireALL>
                    Require not ip 192.168.86.1
                    Require all granted
            </RequireALL>
    </Directory>
    
    //修改之后,重新启动服务
    [root@cwt ~]# systemctl restart httpd
    

    在这里插入图片描述


    虚拟主机:

    虚拟机主机分类:

    • 相同IP不同端口
    • 不同IP相同端口
    • 相同IP相同端口不同域名

    例:

    • 相同IP不同端口
    [root@cwt ~]# vim /etc/httpd/conf/httpd.conf 
    ServerName www.example.com:80           //取消这一行的注释信息
    
    //把/usr/share/doc/httpd/httpd-vhosts.conf这个文件复制一份到/etc/httpd/conf.d/下面
    [root@cwt conf.d]# cp /usr/share/doc/httpd/httpd-vhosts.conf .
    [root@cwt conf.d]# ls
    README  autoindex.conf  httpd-vhosts.conf  userdir.conf  welcome.conf
    
    [root@cwt conf.d]# vim httpd-vhosts.conf
    <VirtualHost *:80>
        DocumentRoot "/var/www/html/test"
        ServerName test.example.com
        ErrorLog "/var/log/httpd/test.example.com-error_log"
        CustomLog "/var/log/httpd/test.example.com-access_log" common
    </VirtualHost>
    
    Listen 81                         //81端口默认没有监听,需要手动监听
    <VirtualHost *:81>
        DocumentRoot "/var/www/html/xxx"
        ServerName xxx.example.com
        ErrorLog "/var/log/httpd/xxx.example.com-error_log"
        CustomLog "/var/log/httpd/xxx.example.com-access_log" common
    </VirtualHost>
    
    //重启服务
    [root@cwt conf.d]# systemctl restart httpd
    
    //查看端口是否正常监听
    [root@cwt conf.d]# ss -antl
    State     Recv-Q     Send-Q          Local Address:Port          Peer Address:Port     
    LISTEN    0          128                   0.0.0.0:22                 0.0.0.0:*        
    LISTEN    0          128                         *:80                       *:*        
    LISTEN    0          128                         *:81                       *:*        
    LISTEN    0          128                      [::]:22                    [::]:*        
    
    //创建网页目录并修改属主和属组
    [root@cwt html]# mkdir test 
    [root@cwt html]# mkdir xxx
    [root@cwt html]# chown -R apache.apache test
    [root@cwt html]# chown -R apache.apache xxx
    [root@cwt test]# echo 'This is a test page' > index.html
    [root@cwt xxx]# echo 'hello 123' > index.html
    
    //在浏览器上打开网页测试
    

    在这里插入图片描述
    在这里插入图片描述


    • 不同IP相同端口
    [root@cwt ~]# vim /etc/httpd/conf.d/httpd-vhosts.conf
    <VirtualHost 192.168.86.129:80>
        DocumentRoot "/var/www/html/test"
        ServerName test.example.com
        ErrorLog "/var/log/httpd/test.example.com-error_log"
        CustomLog "/var/log/httpd/test.example.com-access_log" common
    </VirtualHost>
    
    <VirtualHost 192.168.86.110:80>
        DocumentRoot "/var/www/html/xxx"
        ServerName xxx.example.com
        ErrorLog "/var/log/httpd/xxx.example.com-error_log"
        CustomLog "/var/log/httpd/xxx.example.com-access_log" common
    </VirtualHost>
    
    //修改完后保存配置文件然后重启服务
    [root@cwt ~]# systemctl restart httpd
    
    //添加192.168.86.110IP地址
    [root@cwt ~]# ip addr add 192.168.86.110/24 dev eth0
    [root@cwt ~]# ip a s eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:0c:29:34:0c:82 brd ff:ff:ff:ff:ff:ff
        inet 192.168.86.129/24 brd 192.168.86.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet 192.168.86.110/24 scope global secondary eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fe34:c82/64 scope link 
           valid_lft forever preferred_lft forever
           
    //打开浏览器测试
    

    在这里插入图片描述

    在这里插入图片描述


    • 相同IP相同端口不同域名
    [root@cwt ~]# vim /etc/httpd/conf.d/httpd-vhosts.conf
    <VirtualHost *:80>
        DocumentRoot "/var/www/html/test"
        ServerName test.example.com
        ErrorLog "/var/log/httpd/test.example.com-error_log"
        CustomLog "/var/log/httpd/test.example.com-access_log" common
    </VirtualHost>
    
    <VirtualHost *:80>
        DocumentRoot "/var/www/html/xxx"
        ServerName xxx.example.com
        ErrorLog "/var/log/httpd/xxx.example.com-error_log"
        CustomLog "/var/log/httpd/xxx.example.com-access_log" common
    </VirtualHost>
    
    //修改完毕后保存配置文件,然后重启服务
    [root@cwt ~]# systemctl restart httpd
    
    //因为配置文件中的域名不存在,也没有DNS服务器所以无法解析,所以我们需要模拟这杨一个环境,DNS服务器在解析域名的时候,会查看hosts文件里面的映射关系,所以我们需要去修改这个配置文件,注意是修改物理机的hosts的文件而不是虚拟机
    
    在Windows中hosts文件的位置在:C:\Windows\System32\drivers\etc
    在MAC中hosts的文件位置在:/etc/hosts
    在hosts中添加两行内容:
    192.168.86.129        test.example.com
    192.168.86.110        xxx.example.com
    
    //打开浏览器测试
    

    在这里插入图片描述

    在这里插入图片描述


    SSL证书:

    SSL证书需要购买,因为是虚拟环境,所以我们可以自己生成一个证书

    • 启用模块:编辑/etc/httpd/conf.modules.d/00-ssl.conf文件,添加下面这行,如果已经有了但是注释了,则取消注释即可,这个模块默认没有安装,需要先安装
    [root@cwt ~]# yum -y install mod_ssl
    
    LoadModule ssl_module modules/mod_ssl.so
    
    • openssl实现私有CA,CA的配置文件:/etc/pki/tls/openssl.cnf

      • CA生成一对密钥
      [root@cwt ~]# cd /etc/pki/CA/             //在Redhat8上CA目录没有需要手动创建
      [root@cwt CA]# mkdir private
      [root@cwt CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)     //生成密钥,括号必须要
      [root@cwt CA]# openssl rsa -in private/cakey.pem -pubout          //提取公钥,这步可以跳过
      
      • CA生成自签署证书
      [root@cwt CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) [XX]:CN                     //国家的名字,简写
      State or Province Name (full name) []:HB                  //省份的名字
      Locality Name (eg, city) [Default City]:WH                //城市的名字
      Organization Name (eg, company) [Default Company Ltd]:test.example.com                //公司的域名
      Organizational Unit Name (eg, section) []:test.example.com    //单位的名字
      Common Name (eg, your name or your server's hostname) []:test.example.com    //主机的名字
      Email Address []:123@123.com       //邮箱
      
      [root@cwt CA]# openssl x509 -text -in cacert.pem        //查看证书的内容,这步可以跳过
      

      注意:在真实的环境中,签署证书的时候要按照真是的环境填写证书的内容

      • 在CA目录下创建certs newcerts crl目录,并生成序列号
      [root@cwt CA]# mkdir certs newcerts crl
      [root@cwt CA]# touch index.txt && echo 01 > serial
      
      
      • 客户端(例如httpd服务器)生成密钥
      [root@cwt CA]# cd /etc/httpd && mkdir ssl && cd ssl
      [root@cwt ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
      
      • 客户端生成证书签署请求
      [root@cwt ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
      Ignoring -days; not generating a certificate
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) [XX]:CN
      State or Province Name (full name) []:HB
      Locality Name (eg, city) [Default City]:WH
      Organization Name (eg, company) [Default Company Ltd]:test.example.com
      Organizational Unit Name (eg, section) []:test.example.com
      Common Name (eg, your name or your server's hostname) []:test.example.com
      Email Address []:123@123.com
      
      Please enter the following 'extra' attributes
      to be sent with your certificate request
      A challenge password []:                         //是否需要给证书设置密码,可以直接回车跳过
      An optional company name []:
      
      • 客户端把证书签署请求文件发送给CA
      scp httpd.csr root@CA端IP:/root      //因为我们现在的环境是在本地,所以这一步可以不用做
      
      • CA签署客户端提交上来的证书
      [root@cwt ssl]# openssl ca -in ./httpd.csr -out httpd.crt -days 365
      
      • CA把签署好的证书httpd.crt发给客户端
      scp httpd.crt root@客户端IP:/etc/httpd/ssl/
      

    配置httpd步骤:

    • 生成证书,上面的步骤已经做了
    • 修改httpd.conf配置文件,取消以下内容的注释
        LoadModule ssl_module modules/mod_ssl.so
        Include /etc/httpd24/extra/httpd-vhosts.conf
        Include /etc/httpd24/extra/httpd-ssl.conf
    
    • 在httpd-vhosts.conf中配置虚拟主机
    • 在httpd-ssl.conf中配置证书的位置
    [root@cwt ~]# cd /etc/httpd/conf.d/
    [root@cwt conf.d]# ls
    README  autoindex.conf  httpd-vhosts.conf  ssl.conf  userdir.conf  welcome.conf
    [root@cwt conf.d]# vim ssl.conf 
    
    DocumentRoot "/var/www/html/test"
    ServerName test.example.com:443           //取消这两行的注释,并修改对应的位置
    
    SSLCertificateFile /etc/httpd/ssl/httpd.crt
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key     //修改证书和密钥的位置,使用绝对路径
    
    • 检查配置文件是否有语法错误

    • 重启服务

    • 设置hosts以便域名访问(实际工作中无需做此步)

    • 打开浏览器测试

    .so
    Include /etc/httpd24/extra/httpd-vhosts.conf
    Include /etc/httpd24/extra/httpd-ssl.conf

    
    - 在httpd-vhosts.conf中配置虚拟主机
    - 在httpd-ssl.conf中配置证书的位置
    
    ```bash
    [root@cwt ~]# cd /etc/httpd/conf.d/
    [root@cwt conf.d]# ls
    README  autoindex.conf  httpd-vhosts.conf  ssl.conf  userdir.conf  welcome.conf
    [root@cwt conf.d]# vim ssl.conf 
    
    DocumentRoot "/var/www/html/test"
    ServerName test.example.com:443           //取消这两行的注释,并修改对应的位置
    
    SSLCertificateFile /etc/httpd/ssl/httpd.crt
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key     //修改证书和密钥的位置,使用绝对路径
    
    • 检查配置文件是否有语法错误

    • 重启服务

    • 设置hosts以便域名访问(实际工作中无需做此步)

    • 打开浏览器测试

    在这里插入图片描述

    展开全文
  • 简易的web服务器实现, 有httpd 服务器通过管道实现动态流程. 解析协议发送响应. 并附带一个 简易的 client.c 的测试客户端
  • httpd服务架设简单web站点的部署过程一、web部署过程1、确定网站的名称、以及IP地址2、配置启动httpd服务2.1、配置httpd服务2.2、启动httpd服务3、部署网页文档4、在客户端访问web站点5、查看web站点的访问情况二、...

    一、web部署过程

    首先先安装好httpd服务没有安装的请参考:https://blog.csdn.net/wulimingde/article/details/108322715

    1、确定网站的名称、以及IP地址

    若要向Internet中发布一个网站,首先需要申请一个合法的互联网地址,并且向DNS服务商注册一个完整的网站名称。满足这些要求后就可以在网上部署一个自己的网站了。

    将设我们要在服务器搭建一个web站点,IP地址是20.0.0.55,网站的名称为www.wlm.com用来作为我们的服务器端。

    如果想在客户端访问我们的服务器端,需要客户端在浏览器中通过地址www.wlm.com来访问服务器端的wed站点。客户端应该有可用的DNS域名解析服务,可以将www.wlm.com解析为IP地址20.0.0.22。

    在web服务器端,将IP地址设置为20.0.0.55,将主机名称设置为www(可根据需求设置);修改/etc/hosts文件,添加相应的映射记录以提高本地解析速度。

    [root@www ~]# vim /etc/hosts
    20.0.0.55  www.wlm.com
    

    2、配置启动httpd服务

    2.1、配置httpd服务

    编辑httpd服务的主配置文件httpd.conf,查找配置项“SeverName”,在附近添加一行内容“ServiceName www.kgc.com”,用于设置网站名称。

    [root@www ~]# vi /usr/local/httpd/conf/httpd.conf
    ServerName www.wlm.com
    

    每次修改完httpd.conf文件的配置内容以后,建议使用“apache -t或httpd -t”命令对配置内容进行语法检查。如果没有语法错误,将会显示“Syntax OK”,如果有错误就会报错,就可以根据错误提示信息来修改配置文件。

    [root@wode ~]# /usr/local/httpd/bin/apachectl -t
    Syntax OK   //表示修改的配置格式没有错误
    //我们之前把路径优化过可以直接使用命令
    [root@wode ~]# apachectl -t
    Syntax OK   
    [root@wode ~]# httpd -t
    Syntax OK    
    
    2.2、启动httpd服务
    [root@wode ~]# systemctl start httpd   //启动httpd服务
    [root@wode ~]# netstat -aupt |grep httpd  //过滤httpd服务的网络连接状况
    tcp6       0      0 [::]:http      [::]:*       LISTEN      9148/httpd 
    

    3、部署网页文档

    网站根目录位于/usr/local/httpd/htdocs下,需要将web站点要发布的网页文档复制或上传到此目录下。在这个目录中已经存在了httpd服务器默认提供的一个名为index.html的测试网页,作为访问网站时的默认首页。

    [root@wode ~]# cat /usr/local/httpd/htdocs/index.html   //产看默认网页的位置和显示内容
    <html><body><h1>It works!</h1></body></html>
    

    4、在客户端访问web站点

    在客户端可以通过域名或者IP地址访问httpd服务器,将可以看到web站点的页面内容。若使用的时httpd服务默认的首页,则页面会显示“It works !”,表示httpd服务已经正常使用了。
    注:客户机访问的时候建议使用谷歌浏览器
    在这里插入图片描述

    5、查看web站点的访问情况

    httpd服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别通过access_log和error_log,位于/usr/local/httpd/logs目录下。
    查看访问日志文件access_log,可以及时了解web站点的访问情况。访问日子中的每一行对应的一条访问记录,记录了客户机的IP地址、访问服务器的日期和时间、请求的网页对象等信息。

    [root@wode ~]# tail /usr/local/httpd/logs/access_log   //查看访问日志文件
    20.0.0.1 - - [01/Sep/2020:19:46:57 +0800] "GET / HTTP/1.1" 200 45   //访问记录
    20.0.0.1 - - [01/Sep/2020:19:46:57 +0800] "GET /favicon.ico HTTP/1.1" 404 209
    

    查看错误日志文件error_log,可以排查服务器运行故障提供参考依据。错误日志文件中的每一行对应一条错误记录,记录了发生错误的日期和时间、错误事件类型、错误事件的内容描述等信息。

    [root@wode ~]# tail /usr/local/httpd/logs/error_log   //查看错误访问日志文件
    [Tue Sep 01 19:18:59.476349 2020] [mpm_event:notice]\
     [pid 52289:tid 139752290195264] AH00489: \
     Apache/2.4.29 (Unix) configured -- resuming normal operations   //错误访问记录
    [Tue Sep 01 19:18:59.476454 2020] [core:notice] [pid 52289:tid \
    139752290195264] AH00094: Command line: '/usr/local/httpd/bin/httpd'
    

    以上就是使用httpd服务器部署简单web站点的基本步骤,里面涉及到的httpd.conf配置文件的改动量非常少,要搭建一台简单的web服务器还是十分容易的。

    二、httpd服务器的httpd.conf主配置文件解析

    主配置文件httpd.conf有注释行、设置行两部分内容组成。与大多数Linyx配置文件一样,注释性的文字以“#”开始,包含了对相关配置内容的说明解释。除了注释行和空行以外的内容即设置行,构成了web服务的有效配置。根据配置所作用的范围不同,设置行又可分为全局配置和区域配置。

    1、全局配置项

    全局配置决定httpd服务器的全局运行参数,使用“关键字 值”得配置格式。

    每一条全局配置都是一项独立的配置,不需要包含这其他任务区域中。

    以下列出了httpd.conf文件中最常用的一些全局配置项。
    ServerRoot “/usr/local/httpd”
    Listen 80
    User daemon
    Group daemon
    ServerAdmin
    ServerName www.wlm.com
    DocumentRoot “/usr/local/httpd/htdocs”
    DirectoryIndex index.html index.php
    ErrorLog logs/error log
    LogLevel warn
    CustomLog logs/access log common
    PidFile logs/httpd.pid
    CharsetDefault UTF-8
    lnclude confextra/httpd-default.conf
    这些常用的全局配置项具体含义如下:

    • ServerRoot:设置httpd服务器的根目录,该目录下包括了运行Web站点必需的子目录和文件。默认情况下,httpd 服务器的根目录为httpd的安装目录。
      /usr /local/httpd:与编译安装时所指定的httpd安装目录相同。在httpd .conf配置文件中,如果指定 目录或文件位置时不使用绝对路径,则该目录或文件位置都认为是在服务器的根目录下。
    • Listen:设置httpd服务器监听的网络端口号,默认为80.
    • User:设置运行httpd进程时的用户身份,默认为daemon。
    • Group:设置运行httpd进程时的组身份,默认为daemon。
    • ServerAdmin:设置httpd服务器的管理员E一mail地址,可以通过此E一mail地址及时联系Web站点的管理员。
    • ServerName:设置Web站点的完整主机名(主机名+域名)。
    • DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易和ServerRoot混淆,需要格外注意。
    • Directorylndex:设置网站的默认索引页〈首页),可以设置多个首页文件,以空格分开认的首页文件为index , html。
    • ErrorLog:设置错误日志文件的路径,默认路径为logs/ error_log。
    • LogLevel:设置记录日志的级别,默认级别为warn(警告)。
    • CustomLog:设置访问日志文件的路径.日志类型,默认路径为logs/access_log,使用的类型为common(通用格式)。
    • PidFile:设置用于保存httpd进程号(PID)的文件,默认保存地址为logs/httpd .pid,logs目录位于Apache的服务器根目录下。
    • DefaultCharset:设置站点中的网页默认使用的字符集编码,如utf—8. gb2312等。
    • Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,再使用Include配置项将其包含到httpd . conf文件中,这样便于独立进行配置功能的维护而不影响主配置文件。

    2、区域配置项

    除了全局配置以外,httpd.conf文件中的大多数配置时包括这区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。常见的区域配置形式如下。

    <Directory />    //定义"/"目录区域的开始
    Options FollowSymLinks   //控制选项,允许使用符号链接
    AllowOverride none   //不允许隐含控制文件中的覆盖配置
    Require all denied      //禁止任何人访问此区域
    </Directory>       //定义"/"目录区域的结束
    

    在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对根目录有效,而不会作用于全局或其他目录区域。需要注意的是,这里所说的根目录是指设置httpd服务器的根目录(ServerRoot所设置的值).而不是CentOS系统的根目录。

    展开全文
  • 详解 Linux 环境下部署 HTTPD 服务

    千次阅读 2019-11-07 17:15:04
    Apache HTTP Server”是开源软件项目,基于标准的 HTTP 网络协议提供的网页浏览服务,可运行在 Linux、UNIX、Windows 等多种操作系统平台。...配置 Apache 网站服务前,需正确安装好 httpd 服务...

    Apache HTTP Server”是开源软件项目,基于标准的 HTTP 网络协议提供的网页浏览服务,可运行在 Linux、UNIX、Windows 等多种操作系统平台。其 Apache 的官方网站如下;
    在这里插入图片描述http://httpd.apache.org/
    在这里插入图片描述
    http://www.apache.org/
    在这里插入图片描述
    2.安装 httpd 服务器
    配置 Apache 网站服务前,需正确安装好 httpd 服务器软件。其安装方式可以用 RPM 包的方式或源码编译安装的方式来进行安装,RPM 包安装起来比较简单快速,在功能上有一定的局限性。那么在实际生产环境中,使用源码编译安装的方式更普遍些。

    为避免发生端口冲突等现象,建议卸载使用 RPM 方式安装的 httpd 服务。

    rpm -e httpd --nodeps

    将下载的 httpd 源码包进行解压并释放到目录 /usr/src 下,并进入到解压后的源码包目录下。

    tar zxf httpd-2.2.17.tar.gz -C /usr/src

    cd /usr/src/httpd-2.2.17/

    配置可根据服务器的实际应用需要,设置不同的定制选项,比如:安装路径、启用动态加载模块支持等选项,若要获取其他可用的配置选项及其含义,可执行 “./configure --help” 命令即可查询。

    通过下述配置命令中,所包含的各选项的含义如下:
    –prefix:指定将 httpd 服务程序安装到哪个目录;
    –enable-so:启用动态加载模块支持,其 httpd 具备进一步的扩展能力;
    –enable-rewrite:启用网页地址重写功能,其用于网站优化及目录迁移;
    –enable-charset-lite:启动字符集支持,其支持使用各种字符集编码的网页;
    –enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力;

    ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

    完成以上配置后,方可执行命令 “make” 来进行编译,将源代码转换为可执行程序,然后执行命令 “make install” 来完成最后的安装,在这里我们可以将两条命令结合为一条命令来执行 “make && make install” 编译的过程中需花费较长的时间,需耐心等待。

    make && make install

    在配置的过程中,我们将 “–prefix” 的选项来进行制定,那么编译好的 httpd 程序及文件目录等相关文件复制到所配置的安装目录下 /usr/local/httpd ,因此我们可以在该目录下进行确认安装结果是否成功;

    安装好的目录下,会有一些子目录将主要目录各用途简单介绍:
    bin:存放 httpd 服务的各种执行程序文件,主要包括主程序 httpd 等;
    cgi-bin:存放各种 CGI 程序文件;
    conf:存放 httpd 服务的各种配置文件,主要包括主配置文件 httpd.conf 等;
    htdocs:存放网页文档,其默认网页文件为:index.html
    logs:存放 httpd 服务的日志文件;
    modules:存放 httpd 服务的各种模块文件;

    ls /usr/local/httpd

    bin build cgi-bin conf error htdocs icons include lib logs man manual modules

    因为本次安装我们通过源码编译的方式来安装的 httpd 服务,因此程序路径并不在默认的搜索路径中,可为程序添加符号链接;

    ln -s /usr/local/httpd/bin/* /usr/local/bin/

    ls -l /usr/local/bin/httpd /usr/local/bin/apachectl

    lrwxrwxrwx. 1 root root 30 7月 27 06:54 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
    lrwxrwxrwx. 1 root root 26 7月 27 06:54 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd

    可执行命令 “httpd -v” 来查看程序版本;

    httpd -v

    Server version: Apache/2.2.17 (Unix)
    Server built: Jul 27 2019 06:48:56

    将 httpd 添加为系统服务,可通过命令 chkconfig 来进行管理。可将 apachectl 脚本复制为 /etc/init.d/httpd,并在文件的开头进行添加级别的 chkconfig 配置及相关描述信息;每当 Linux 系统进入 3、5 运行级别下时,httpd 服务将自动运行,那么在今后日常的维护下,可使用 apachectl 工具来进行控制 httpd 服务,同时也可以使用 /etc/init.d/httpd 脚本来进行控制;

    当执行命令 “/etc/init.d/httpd start” 启动时,同样也可以执行命令 “/usr/local/httpd/bin/apachectl start” 来启动 httpd 服务;

    cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

    vi /etc/init.d/httpd

    #!/bin/sh

    chkconfig:35 66 88 # 服务设别参数,在级别 3、5 中启动;启动和关闭的顺序分别为:85、21

    description:http apache # 服务描述信息

    … //省略部分内容

    将 httpd 添加为系统服务,并查看 httpd 服务的自启动状态;

    chkconfig --add httpd # 将 httpd 添加为系统服务

    chkconfig --list httpd # 查看 httpd 服务的自启动状态

    httpd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
    3.httpd 服务的基本配置
    确认 IP 地址及网站名称

    vi /etc/hosts

    192.168.3.123 www.jacktiangjwan.com

    配置 httpd 服务

    编辑 httpd 服务的主配置文件 httpd.conf,在该配置文件中找到配置项 “ServerName”,在原有的基础上进行修改配置或在添加一行配置 “ServerName www.jacktiangjwan.com” 用于设置网站名称。

    vi /usr/local/httpd/conf/httpd.conf

    … //省略部分内容
    ServerName www.jacktian.com
    … //省略部分内容

    修改完 httpd.conf 配置文件后,可使用命令 apachectl 结合 “-t” 选项对配置内容进行检查是否有误,如果显示 “Syntax OK” 的返回值时,则说明无误,若显示其他输出时,则需要根据相应的错误信息来进行修改配置;

    /usr/local/httpd/bin/apachectl -t

    Syntax OK

    启动 httpd 服务

    使用脚本文件 /usr/local/httpd/bin/apachectl 或 /etc/init.d/httpd,通过 start、stop、restart 选项来进行控制,用来启动、停止、重启该服务,且启动 httpd 服务后,默认监听 TCP 的端口号为:80

    /etc/init.d/httpd start

    netstat -anpt | grep httpd

    tcp 0 0 :::80 ::😗 LISTEN 55498/httpd

    部署网页文档

    新编译安装的 httpd 服务,网站根目录在 /usr/local/httpd/htdocs 下,默认是已经提供了一个名为 index.html 的文件,同时你也可以将该文件中的内容进行修改为自己所想要显示出的内容来作为访问网站的默认网页。

    cat /usr/local/httpd/htdocs/index.html

    Hello World!

    验证 Web 站点

    在客户端中打开浏览器,在地址栏中输入域名或 IP 地址来访问 httpd 服务,将可以看到 Web 站点的页面内容。
    在这里插入图片描述

    查看 Web 站点的访问情况

    httpd 服务使用了两种类型日志:访问日志和错误日志,文件名分别为:access_log 和 error_log,均位于 /usr/local/httpd/logs 目录下。
    在这里插入图片描述
    查看访问日志文件,可及时了解 Web 站点的访问情况。

    访问日志中的每一行对应一条访问记录,其主要包括:客户端的 IP 地址,访问服务器的日期、时间,请求的网页对象等信息;
    tail /usr/local/httpd/logs/access_log
    192.168.3.124 - - [27/Jul/2019:07:22:57 +0800] “GET / HTTP/1.1” 200 44
    192.168.3.124 - - [27/Jul/2019:07:22:57 +0800] “GET /favicon.ico HTTP/1.1” 404 209
    192.168.3.124 - - [27/Jul/2019:07:22:57 +0800] “GET /favicon.ico HTTP/1.1” 404 209
    192.168.3.124 - - [27/Jul/2019:07:24:14 +0800] “GET / HTTP/1.1” 200 48

    查看错误日志文件,可排查服务器运行故障所提供的参考信息。

    错误日志中的每一行对应一条错误记录,其主要包括:发生错误的日期、时间,错误事件类型,错误事件的内容描述等信息;

    tail /usr/local/httpd/logs/error_log

    [Sat Jul 27 07:07:08 2019] [notice] Apache/2.2.17 (Unix) configured – resuming normal operations
    [Sat Jul 27 07:17:28 2019] [notice] SIGHUP received. Attempting to restart
    [Sat Jul 27 07:17:28 2019] [notice] Apache/2.2.17 (Unix) configured – resuming normal operations
    [Sat Jul 27 07:22:57 2019] [error] [client 192.168.3.124] File does not exist: /usr/local/httpd/htdocs/favicon.ico
    [Sat Jul 27 07:22:57 2019] [error] [client 192.168.3.124] File does not exist: /usr/local/httpd/htdocs/favicon.ico
    4.httpd.conf 配置文件
    全局配置项

    主配置文件 httpd.conf 与大多数 Linux 配置文件相似,注释行以 “#” 开始,其包含了对相对配置内容进行的说明和解释。除注释行及空行外,其他内容均为 Web 服务的有效配置,根据配置所起的作用不同,以下为 httpd.conf 文件中最常用的一些全局配置项。

    主配置文件 httpd.conf 由注释行、设置行内容组成;

    设置行分为:全局配置 和 区域配置;

    ServerRoot “/usr/local/httpd” # 设置 httpd 服务器的根目录,默认根目录为:/usr/local/httpd
    Listen 80 # 设置 httpd 服务器监听的网络端口号,默认端口号为:80
    User daemon # User:设置运行 httpd 进程时的用户身份,默认为:daemon
    Group daemon # Group:设置运行 httpd 进程时的组身份,默认为:daemon
    ServerAdmin you@example.com # 设置 httpd 服务器的管理员 email 地址
    ServerName www.jacktiangjwan.com # 设置 web 站点的完整主机名;(主机名+域名)
    DocumentRoot “/usr/local/httpd/htdocs” # 设置 网站 的根目录,即网页文档在系统中的实际存放路径
    DirectoryIndex index.html # 设置 网站 的默认首页,可设置多个首页文件,空格分开,默认文件为:index.html
    ErrorLog “logs/error_log” # 设置 错误日志文件 的路径,默认路径为:logs/error_log
    LogLevel warn # 设置 记录日志 的级别,默认级别为:warn(警告)
    CustomLog “logs/access_log” common # 设置 访问日志文件 的路径、日志类型,默认路径为:logs/access_log
    PidFile logs/httpd.pid # 设置用于保存 httpd 进程号的文件,默认保存地址为:logs/httpd.pid
    CharsetDefault UTF-8 # 设置站点中的网页默认使用的字符集编码,UTF-8
    Include conf/extra/httpd-default.conf # 包含另一个配置文件的内容

    区域配置项

    区域配置使用一对组合标记,限定了配置项的作用范围。

    以下为最常见的目录区域配置;

    # 定义 “/” 目录区域的开始
    Options FollowSymLinks # 控制选项,允许使用符号链接
    AllowOverride None # 不允许隐含控制文件中的覆盖配置
    Order deny,allow # 访问控制策略的应用顺序
    Deny from all # 禁止任何人访问此区域
    # 定义 “/” 目录区域的结束

    展开全文
  • Linux安装httpd服务

    2012-04-25 14:09:17
    在Linux中安装HTTPD服务 Apache http Server的安装
  • CentOS7搭建httpd服务

    千次阅读 2019-07-05 08:51:19
    httpd服务的主配置文件通常为httpd根目录下的conf/httpd.conf文件,通过yum安装的httpd服务的主配置路径通常如下: /etc/httpd/conf/httpd.conf 2.vim /etc/httpd/conf/httpd.conf 配置虚拟主机 ...

    httpd

    1.httpd安装

    。使用yum安装:

    1.安装命令yum -y install httpd

    httpd服务的主配置文件通常为httpd根目录下的conf/httpd.conf文件,通过yum安装的httpd服务的主配置路径通常如下:
    /etc/httpd/conf/httpd.conf

    2.vim /etc/httpd/conf/httpd.conf 配置虚拟主机

                   NameVirtualHost(虚拟主机的名称)   192.......
    
    ​                   <VirtualHost(虚拟主机)  192............>
    
    ​                   DocumentRoot(文件根)   "/var/www/html/"
    
    ​                   ServerName(服务器名称)   192.........
    
    ​                  </VirtualHost>
    

    3.进入网站目录站点 cd /var/www/html

    echo "123 123 123 china " >  index.html        //生成index文件输入内容
    
    //  启动httpd服务
    [root@scl ~]# systemctl start httpd
    [root@scl ~]# ss -antl
    State       Recv-Q Send-Q                Local Address:Port                               Peer Address:Port              
    LISTEN      0      128                               *:22                                            *:*                  
    LISTEN      0      100                       127.0.0.1:25                                            *:*                  
    LISTEN      0      128                              :::80                                           :::*                  
    LISTEN      0      128                              :::22                                           :::*                  
    LISTEN      0      100                             ::1:25                                           :::* 
    
     //  关闭防火墙和selinux
     [root@scl ~]# systemctl stop firewalld
    
     直接修改vim /etc/selinux/config找到SELINUX=enforcing修改为SELINUX=disable
     [root@scl ~]# setenforce 0
    
    

    4.在浏览器输入ip验证
    在这里插入图片描述

    //配置文件说明

    文件/目录对应的功能
    /var/log/httpd/access.log访问日志
    /var/log/httpd/error_log错误日志
    /var/www/html/站点文档目录
    /usr/lib64/httpd/modules/模块文件路径
    /etc/httpd/conf/httpd.conf主配置文件
    /etc/httpd/conf.modules.d/*.conf模块配置文件
    /etc/httpd/conf.d/*.conf辅助配置文件

    。httpd命令

    //语法:httpd [options]
    //常用的options:
        -l      //查看静态编译的模块,列出核心中编译了哪些模块。 \
                //它不会列出使用LoadModule指令动态加载的模块
        -M      //输出一个已经启用的模块列表,包括静态编译在服务 \
                //器中的模块和作为DSO动态加载的模块
        -v      //显示httpd的版本,然后退出
        -V      //显示httpd和apr/apr-util的版本和编译参数,然后退出
        -X      //以调试模式运行httpd。仅启动一个工作进程,并且 \
                //服务器不与控制台脱离
        -t      //检查配置文件是否有语法错误
    

    。curl命令

    curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。

    curl支持以下功能:

    • https认证
    • http的POST/PUT等方法
    • ftp上传
    • kerberos认证
    • http上传
    • 代理服务器
    • cookies
    • 用户名/密码认证
    • 下载文件断点续传
    • socks5代理服务器
    • 通过http代理服务器上传文件到ftp服务器
    //语法:curl [options] [URL ...]
    //常用的options:
        -A/--user-agent <string>    //设置用户代理发送给服务器
        -basic              //使用Http基本认证
        --tcp-nodelay       //使用TCP_NODELAY选项
        -e/--referer <URL>      //来源网址
        --cacert <file>     //CA证书(SSL)
        --compressed        //要求返回时压缩的格式
        -H/--header <line>  //自定义请求首部信息传递给服务器
        -I/--head           //只显示响应报文首部信息
        --limit-rate <rate>     //设置传输速度
        -u/--user <user[:password]>     //设置服务器的用户和密码
        -0/--http1      //使用http 1.0版本,默认使用1.1版本。这个选项是数字0而不是字母o
        -o/--output     //把输出写到文件中
        -#/--progress-bar       //进度条显示当前的传送状态
    
    //通过curl下载文件
    [root@scl ~]# curl -o myblog.html https://blog.csdn.net/whell_scl
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
    100 15137    0 15137    0     0  47412      0 --:--:-- --:--:-- --:--:-- 47750
    [root@scl ~]# ls
    myblog.html
    

    。编译安装httpd-2.4

    httpd依赖于apr-1.4以上版本,apr-util-1.4以上版本

    1.安装开发环境
    [root@scl ~]# yum groupinstall "Development Tools"
    安装过程省略…

    2.安装相关依赖包
    [root@scl ~]# yum -y install openssl-devel pcre-devel expat-devel libtool
    安装过程省略…

    3.下载apr-1.6.3和apr-util-1.6.1和httpd-2.4

    [root@localhost ~]# cd /usr/src/
    [root@localhost src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-1.6.3.tar.bz2
    [root@localhost src]# wget http://mirrors.shu.edu.cn/apache//apr/apr-util-1.6.1.tar.bz2
    [root@localhost src]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.37.tar.bz2
    
    [root@scl src]# ls
    apr-1.6.3.tar.bz2  apr-util-1.6.1.tar.bz2  debug  httpd-2.4.34.tar.bz2  kernels
    

    4.解压下好的tar包

    [root@scl src]# tar xf apr-1.6.3.tar.bz2 
    [root@scl src]# tar xf apr-util-1.6.1.tar.bz2 
    [root@scl src]# tar xf httpd-2.4.34.tar.bz2
    [root@scl src]# ls
    apr-1.6.3  apr-1.6.3.tar.bz2  apr-util-1.6.1  apr-util-1.6.1.tar.bz2  debug  httpd-2.4.34  httpd-2.4.34.tar.bz2
    
    

    5.安装

    // 编译安装apr-1.6.3
    [root@scl src]# cd apr-1.6.3
    [root@scl apr-1.6.3]# vim configure
     # $RM "$cfgfile"        //将此行加上注释,或者删除此行
    [root@scl ~]# ./configure --prefix=/usr/local/apr
    配置过程略。。。
    [root@scl apr-1.6.3]# make && make install
    编译过程略。。。
    
    // 编译安装apr-util-1.6.1
    [root@scl apr-1.6.3]# cd /usr/src/apr-util-1.6.1
    [root@scl apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
    配置过程略。。。
    [root@scl apr-1.6.3]# make && make install
    编译过程略。。。
    
    // 编译安装httpd-1.4
    [root@scl src]# cd httpd-2.4.34
    [root@scl httpd-2.4.34]# ./configure --prefix=/usr/local/apache \
    > --sysconfdir=/etc/httpd24 \
    > --enable-so \
    > --enable-ssl \
    > --enable-cgi \
    > --enable-rewrite \
    > --with-zlib \
    > --with-pcre \
    > --with-apr=/usr/local/apr \
    > --with-apr-util=/usr/local/apr-util/ \
    > --enable-modules=most \
    > --enable-mpms-shared=all \
    > --with-mpm=prefork
    配置过程略。。。
    [root@scl httpd-2.4.34]# make && make install
    编译过程略。。。
    

    添加环境变量:

    [root@scl ~]# echo "export PATH=/usr/local/apache/bin:$PATH" >/etc/profile.d/httpd.sh
    [root@scl ~]# . /etc/profile.d/httpd.sh 
    [root@scl ~]# which httpd
    /usr/local/apache/bin/httpd
    
    

    在浏览器输入ip验证

    [root@scl ~]# /usr/local/apache/bin/apachectl start             //  启动服务
    [root@scl ~]# vim /etc/httpd24/httpd.conf 
    ServerName www.example.com:80         //  将这一行前面的注释去掉
    [root@scl ~]# systemctl stop firewalld    //  关闭防火墙
    
    

    在这里插入图片描述

    2.httpd常用配置

    切换使用MPM
    yum安装的情况下(编辑[root@scl ~]# /etc/httpd/conf.modules.d/00-mpm.conf文件

    //NAME有三种,分别是:
        prefork
        event
        worker
    

    编译安装的情况下:(编辑[root@scl ~]# vim /etc/httpd24/httpd.conf)

    #LoadModule mpm_event_module modules/mod_mpm_event.so
    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so    //目前使用的
    #LoadModule mpm_worker_module modules/mod_mpm_worker.so
    //  如果要用其他的请把前面的注释去掉,但是同时只能使用一个
    

    网页目录站点位置
    yum安装的默认网页目录站点(/var/www/html/)

    [root@100 ~]# cd /var/www/html/
    [root@100 html]# ls
     index.html
    

    源码安装的默认网站目录站点(/usr/local/apache/htdocs/)

    [root@scl ~]# cd /usr/local/apache/htdocs/
    [root@scl htdocs]# ls
    index.html
    
    

    日志的存放位置
    yum安装默认日志存放位置(cd /var/log/httpd/

    [root@100 ~]# cd /var/log/httpd/
    [root@100 httpd]# ls
    access_log  error_log
    

    源码安装默认日志存放位置(/usr/local/apache/logs/

    [root@100 httpd]# cd /usr/local/apache/logs/
    [root@100 logs]# ls
    access_log  error_log  httpd.pid
    
    

    。访问控制法则:

    法则功能
    Require all granted允许所有主机访问
    Require all deny拒绝所有主机访问
    Require ip IPADDR授权指定来源地址的主机访问
    Require not ip IPADDR拒绝指定来源地址的主机访问
    Require host HOSTNAME授权指定来源主机名的主机访问
    Require not host HOSTNAME拒绝指定来源主机名的主机访问
    IPADDR的类型HOSTNAME的类型
    IP:192.168.1.1DOMAIN:指定域内的所有主机
    Network/mask:192.168.1.0/255.255.255.0Net:192.168 FQDN:特定主机的全名
    Network/Length:192.168.1.0/24

    示例:
    // 设置仅192.168.100.96这台主机能访问:

    // 现在是任意主机都能访问
    [root@100 ~]# curl http://192.168.100.100/index.html
    <html><body><h1>It works!</h1></body></html>
    
    [root@96 ~]# curl http://192.168.100.100/index.html
    <html><body><h1>It works!</h1></body></html>
    
    // 进入配置文件修改
    <Directory /usr/local/apache/htdocs>
        <RequireAll>
            Require ip 192.168.100.100
            Require all granted
        </RequireAll>
    </Directory>
    
    // 重启服务
    [root@100 ~]# apachectl restart 
    
    //  使用192.168.100.96访问
    [root@96 ~]# curl http://192.168.100.100/index.html
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>                            // Forbidden 禁止访问
    </head><body>
    <h1>Forbidden</h1>
    <p>You don't have permission to access /index.html      //没有访问权限
    on this server.<br />
    </p>
    </body></html>
    
    //使用192.168.100.100访问
    [root@100 ~]# curl http://192.168.100.100/index.html
    <html><body><h1>It works!</h1></body></html>              //依然可以访问
    
    

    3.虚拟主机:

    虚拟主机有三类::

    • 相同IP不同端口
    • 不同IP相同端口
    • 相同IP相同端口不同域名

    。相同ip不同端口的配置:

    [root@localhost ~]# [root@100 ~]# vim /etc/httpd24/httpd.conf 
    ServerName www.example.com:80       //取消此行前面的#号
    
    [root@localhost ~]# vim /etc/httpd24/httpd.conf 
    //在配置文件的最后加上如下内容:
    #NameVirtualHost              //如果是httpd2.2版本就要加上这一行如果是2.4版本就不要加
    <VirtualHost *:80>
        DocumentRoot "/usr/local/apache/htdocs/runtime"
        ServerName runtime.example.com
        ErrorLog "logs/runtime.example.com-error_log"
        CustomLog "logs/rutime.example.com-access_log" common
    </VirtualHost>
    
    <VirtualHost *:81>
        DocumentRoot "/usr/local/apache/htdocs/wheel"
        ServerName wheel.example.com
        ErrorLog "logs/wheel.example.com-error_log"
        CustomLog "logs/wheel.example.com-access_log" common
    </VirtualHost>
    
    //  在配置文件中修改监听的端口号
    [root@localhost ~]#  vim /etc/httpd24/httpd.conf 
    #
    #Listen 12.34.56.78:80
    Listen 80
    Listen 81          // 新添加一个81端口
    
    // 创建网站的根目录并且写入内容到index文件中
    [root@100 ~]# mkdir /usr/local/apache/htdocs/runtime
    [root@100 ~]# mkdir /usr/local/apache/htdocs/wheel
    [root@100 ~]# apachectl -t
    Syntax OK
    [root@100 ~]# echo "runtime" >/usr/local/apache/htdocs/runtime/index.html
    [root@100 ~]# echo "wheel" >/usr/local/apache/htdocs/wheel/index.html
    
    [root@100 ~]# apachectl restart     //重启服务
    [root@100 ~]# ss -antl
    State       Recv-Q Send-Q                Local Address:Port                               Peer Address:Port              
    LISTEN      0      128                               *:22                                            *:*                  
    LISTEN      0      100                       127.0.0.1:25                                            *:*                  
    LISTEN      0      128                              :::80                                           :::*                  
    LISTEN      0      128                              :::81                                           :::*                  
    LISTEN      0      128                              :::22                                           :::*                  
    LISTEN      0      100                             ::1:25                                           :::* 
    

    浏览器进行验证:
    输入ip192.168.100.100 //默认使用的是80端口
    在这里插入图片描述
    使用81端口访问:
    在这里插入图片描述

    。不同IP相同端口配置:

    [root@localhost ~]#  vim /etc/httpd24/httpd.conf 
    ServerName www.example.com:80       //取消此行前面的#号
    
    [root@localhost ~]#  vim /etc/httpd24/httpd.conf
    //在配置文件的最后加上如下内容:
    #NameVirtualHost              //如果是httpd2.2版本就要加上这一行如果是2.4版本就不要加
    <VirtualHost 192.168.100.100:80>
        DocumentRoot "/usr/local/apache/htdocs/runtime"
        ServerName runtime.example.com
        ErrorLog "logs/runtime.example.com-error_log"
        CustomLog "logs/rutime.example.com-access_log" common
    </VirtualHost>
    
    <VirtualHost 192.168.100.101:80>
        DocumentRoot "/usr/local/apache/htdocs/wheel"
        ServerName wheel.example.com
        ErrorLog "logs/wheel.example.com-error_log"
        CustomLog "logs/wheel.example.com-access_log" common
    </VirtualHost>
    
    // 创建网站的根目录并且写入内容到index文件中
    [root@100 ~]# mkdir /usr/local/apache/htdocs/runtime
    [root@100 ~]# mkdir /usr/local/apache/htdocs/wheel
    [root@100 ~]# apachectl -t
    Syntax OK
    [root@100 ~]# echo "runtime" >/usr/local/apache/htdocs/runtime/index.html
    [root@100 ~]# echo "wheel" >/usr/local/apache/htdocs/wheel/index.html
    
    [root@100 ~]# apachectl restart     //重启服务
    [root@100 ~]# ss -antl
    State       Recv-Q Send-Q                Local Address:Port                               Peer Address:Port              
    LISTEN      0      128                               *:22                                            *:*                  
    LISTEN      0      100                       127.0.0.1:25                                            *:*                  
    LISTEN      0      128                              :::80                                           :::*                  
    LISTEN      0      128                              :::81                                           :::*                  
    LISTEN      0      128                              :::22                                           :::*                  
    LISTEN      0      100                             ::1:25                                           :::* 
    
    //给主机服务端再添加一个ip为192.168.100.101
    [root@100 ~]# ip addr add 192.168.100.101 dev eth0
    [root@100 ~]# ip addr show eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:0f:a6:60 brd ff:ff:ff:ff:ff:ff
        inet 192.168.100.100/24 brd 192.168.100.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet 192.168.100.101/32 scope global eth0
           valid_lft forever preferred_lft forever
    

    // 验证:
    使用192.168.100.100访问:
    在这里插入图片描述
    使用192.168.100.101访问;
    在这里插入图片描述

    。相同IP相同端口不同域名配置

    [root@localhost ~]#  vim /etc/httpd24/httpd.conf
    ServerName www.example.com:80       //取消此行前面的#号
    
    [root@localhost ~]#  vim /etc/httpd24/httpd.conf
    //在配置文件的最后加上如下内容:
    #NameVirtualHost              //如果是httpd2.2版本就要加上这一行如果是2.4版本就不要加
    <VirtualHost *:80>                   // 虚拟主机1配置
        DocumentRoot "/usr/local/apache/htdocs/runtime"
        ServerName runtime.example.com
        ErrorLog "logs/runtime.example.com-error_log"
        CustomLog "logs/rutime.example.com-access_log" common
    </VirtualHost>
    
    <VirtualHost *:80>                  //虚拟主机2配置
        DocumentRoot "/usr/local/apache/htdocs/wheel"
        ServerName wheel.example.com
        ErrorLog "logs/wheel.example.com-error_log"
        CustomLog "logs/wheel.example.com-access_log" common
    </VirtualHost>
    
    
    // 创建网站的根目录并且写入内容到index文件中
    [root@100 ~]# mkdir /usr/local/apache/htdocs/runtime
    [root@100 ~]# mkdir /usr/local/apache/htdocs/wheel
    [root@100 ~]# apachectl -t
    Syntax OK
    [root@100 ~]# echo "runtime" >/usr/local/apache/htdocs/runtime/index.html
    [root@100 ~]# echo "wheel" >/usr/local/apache/htdocs/wheel/index.html
    
    [root@100 ~]# apachectl restart     //重启服务
    [root@100 ~]# ss -antl
    State       Recv-Q Send-Q                Local Address:Port                               Peer Address:Port              
    LISTEN      0      128                               *:22                                            *:*                  
    LISTEN      0      100                       127.0.0.1:25                                            *:*                  
    LISTEN      0      128                              :::80                                           :::*                  
    LISTEN      0      128                              :::81                                           :::*                  
    LISTEN      0      128                              :::22                                           :::*                  
    LISTEN      0      100                             ::1:25                                           :::* 
    
    //  修改主机端的hosts文件
    [root@96 ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.100.100 runtime.example.com           //添加服务端的ip 和域名进来
    192.168.100.100 wheel.example.com           // 添加服务端的另一个ip和域名
    
    // 验证:
    // 访问runtime.example.com
    [root@96 ~]# curl http://runtime.example.com
    runtime
    // 访问wheel.example.com
    [root@96 ~]# curl http://wheel.example.com
    wheel
    

    // DocumentRoot “/usr/local/apache/htdocs/wheel” 网页的目录站点不是固定的可以指定
    // 例如将网站目录放在/var/www/html 则可以改为:DocumentRoot “/var/www/html/www”

    将网页的目录站点放到/var/www/html日志文件放在/var/log/httpd进行一下配置:

    [root@100 ~]#  vim /etc/httpd24/httpd.conf
    ServerName www.example.com:80       //取消此行前面的#号
    
    `[root@100 ~]#  vim /etc/httpd24/httpd.conf
    //在配置文件的最后加上如下内容
    #虚拟主机 1 配置:
    <VirtualHost 192.168.100.100:80>
        ServerName runtime.example.com
        DocumentRoot "/var/www/html/www"
        ErrorLog "/var/log/httpd/www/error_log"
        CustomLog "/var/log/httpd/www/access_log" combined
        <Directory /var/www/html/www>
            <RequireAll>
            Require all granted
            </RequireAll>
        </Directory>
    </VirtualHost>
    
    #虚拟主机 2 配置:
    <VirtualHost 192.168.100.100:80>
        ServerName wheel.example.com
        DocumentRoot "/var/www/html/blog"
        ErrorLog "/var/log/httpd/blog/error_log"
        CustomLog "/var/log/httpd/blog/access_log" combined
        <Directory /var/www/html/blog>
            <RequireAll>
            Require all granted
            </RequireAll>
        </Directory>
    </VirtualHost>
    注意:httpd-2.4版本默认是拒绝所有主机访问的,所以安装以后必须做显示授权访问
    
    
    // 创建网站目录并修改属主和属组为Apache
    [root@100 ~]# cd /var/www/html/
    [root@100 html]# mkdir www blog
    [root@100 html]# ls
    blog  www
    
    [root@100 html]# chown -R apache.apache blog
    [root@100 html]# chown -R apache.apache www
    [root@100 html]# ll
    总用量 0
    drwxr-xr-x. 2 apache apache 6 6月  19 16:23 blog
    drwxr-xr-x. 2 apache apache 6 6月  19 16:23 www
    
    [root@100 html]# echo "www.baidu.com" >www/index.html
    [root@100 html]# echo "blog.it.com" >blog/index.html
    
    
    
    // 创建相应的日志目录并修改属主和属组为Apache
    [root@100 html]# mkdir /var/log/httpd/{www,blog}
    [root@100 html]# ls /var/log/httpd/
      blog  www
    
    [root@100 html]# chown -R apache.apache /var/log/httpd/
    [root@100 html]# ll /var/log/httpd/
    drwxr-xr-x. 2 apache apache     6 6月  19 16:28 blog
    drwxr-xr-x. 2 apache apache     6 6月  19 16:28 www
    
    // 重启服务   [root@100 httpd]# apachectl restart
    查看是否有80端口
    [root@100 html]# ss -antl
    State       Recv-Q Send-Q Local Address:Port      Peer Address:Port              
    LISTEN      0      128        *:22                     *:*                  
    LISTEN      0      100    127.0.0.1:25                 *:*                  
    LISTEN      0      128       :::80                    :::*                  
    LISTEN      0      128       :::22                    :::*                  
    LISTEN      0      100      ::1:25                    :::*  
    
    
    //  修改主机端的hosts文件
    [root@96 ~]# vim /etc/hosts
    # localhost name resolution is handled within DNS itself.
    #	127.0.0.1       localhost
    #	::1             localhost
    //  添加以下两行
    192.168.100.100 runtime.example.com       
    192.168.100.100 wheel.example.com  
    
    // 主机进行验证:
    [root@96 ~]# curl http://runtime.example.com
    www.baidu.com
    [root@96 ~]# curl http://wheel.example.com
    blog.it.com
    [root@96 ~]# 
    
    

    。ssl

    启用模块:
    yum 安装的情况下:
    编辑/etc/httpd/conf.modules.d/00-base.conf文件,添加下面这行,如果已经有了但是注释了,则取消注释即可
    LoadModule ssl_module modules/mod_ssl.so

    源码安装的情况下:

    [root@100 httpd]# vim /etc/httpd24/httpd.conf
    LoadModule ssl_module modules/mod_ssl.so        //将此行注释取消掉
    

    。https配置:

    环境说明:

    服务端客户端
    192.168.100.100192.168.100.96

    // openssl实现私有CA:
    CA的配置文件:/etc/pki/tls/openssl.cnf
    a) CA生成一对密钥

    [root@96 ~]# cd /etc/pki/CA
    [root@96 CA]# ls
    certs  crl  newcerts  private
    
    [root@96 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
    Generating RSA private key, 2048 bit long modulus
    .............+++
    ................+++
    e is 65537 (0x10001)
    
    [root@96 CA]# openssl rsa -in private/cakey.pem -pubout
    

    b) CA生成自签署证书

    [root@96 CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:HuBei
    Locality Name (eg, city) [Default City]:WuHan
    Organization Name (eg, company) [Default Company Ltd]:runtime.example.com
    Organizational Unit Name (eg, section) []:runtime.example.com
    Common Name (eg, your name or your server's hostname) []:runtime.example.com
    Email Address []:1@2.com
    
    [root@96 CA]# openssl x509 -text -in cacert.pem      //读出证书的内容
    内容略。。。。
    [root@96 CA]# mkdir certs newcerts crl        //创建目录
    
    [root@96 CA]# touch index.txt && echo 01 > serial
    [root@96 CA]# ls
    cacert.pem  certs  crl  index.txt  newcerts  private  serial
    [root@96 CA]# cat serial 
    01
    

    c) 服务端生成密钥

    [root@100 ~]# cd /etc/httpd24 && mkdir ssl && cd ssl
    [root@100 ssl]# 
    
    [root@100 ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
    Generating RSA private key, 2048 bit long modulus
    .....................+++
    ................+++
    e is 65537 (0x10001)
    [root@100 ssl]# 
    

    d) 服务端生成证书签署请求

    [root@100 ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:HuBei
    Locality Name (eg, city) [Default City]:WuHan
    Organization Name (eg, company) [Default Company Ltd]:runtime.example.com
    Organizational Unit Name (eg, section) []:runtime.example.com
    Common Name (eg, your name or your server's hostname) []:runtime.example.com
    Email Address []:1@2.com
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:                          //不设置密码直接回车
    An optional company name []:
    [root@100 ssl]# 
    

    e) 服务端把证书签署请求文件发送给CA

    [root@100 ssl]# scp httpd.csr root@192.168.100.96:/root
    httpd.csr                                                            100% 1082    21.2KB/s   00:00    
    [root@100 ssl]# 
    
    [root@96 CA]# cd
    [root@96 ~]# ls
    httpd.csr
    

    f) CA签署服务端提交上来的证书

    [root@96 ~]# openssl ca -in /root/httpd.csr -out httpd.crt -days 365
    [root@96 ~]# ls
    httpd.crt     httpd.csr
    

    g) CA把签署好的证书httpd.crt发给服务端

    [root@96 ~]# scp httpd.crt root@192.168.100.100:/root/
    [root@100 ~]# ls
    httpd.crt 
    [root@100 ~]# mv httpd.crt /etc/httpd24/ssl/
    [root@100 ~]# cd /etc/httpd24/ssl/
    [root@100 ssl]# ls
    httpd.crt  httpd.csr  httpd.key
    [root@100 ssl]# 
    

    // ssl配置:

    // 配置虚拟主机
    [root@100 ~]# vim /etc/httpd24/extra/httpd-ssl.conf 
    /DocumentRoot   //搜索
    修改为以下内容:
    DocumentRoot "/usr/local/apache/htdocs/runtime"
    ServerName runtime.example.com:443
    ServerAdmin you@example.com
    ErrorLog "/usr/local/apache/logs/runtime.example.com-error_log"
    TransferLog "/usr/local/apache/logs/runtime.example.com-access_log"
    紧接着将
     SSLCertificateFile "/etc/httpd24/server.crt"  改为 SSLCertificateFile "/etc/httpd24/ssl/httpd.crt"
    SSLCertificateKeyFile "/etc/httpd24/server.key"  改为   SSLCertificateKeyFile "/etc/httpd24/ssl/httpd.key"
    
    //配置完成之后检查一下配置文件是否有语法错误:
    [root@100 httpd24]# apachectl -t
    Syntax OK
    
    [root@100 httpd24]# vim httpd.conf
    Include /etc/httpd24/extra/httpd-ssl.conf    //将此行的注释取消
    LoadModule ssl_module modules/mod_ssl.so   //将此行的注释取消
    
    [root@100 httpd24]# vim extra/httpd-ssl.conf 
    #SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"  //此行添加注释
    
    //修改完成之后检查一下配置文件是否有语法错误:
    [root@100 httpd24]# apachectl -t
    Syntax OK
    
    //重启服务
    [root@100 httpd24]# apachectl restart
    
    //查看https端口(443)起来没有
    [root@100 httpd24]# ss -antl
    State       Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
    LISTEN      0      50                      *:139                                 *:*                  
    LISTEN      0      128                     *:111                                 *:*                  
    LISTEN      0      128                     *:22                                  *:*                  
    LISTEN      0      100             127.0.0.1:25                                  *:*                  
    LISTEN      0      50                      *:445                                 *:*                  
    LISTEN      0      128                     *:44643                               *:*                  
    LISTEN      0      50                     :::139                                :::*                  
    LISTEN      0      128                    :::111                                :::*                  
    LISTEN      0      128                    :::80                                 :::*                  
    LISTEN      0      128                    :::22                                 :::*                  
    LISTEN      0      100                   ::1:25                                 :::*                  
    LISTEN      0      128                    :::443                                :::*          //443端口起来了
    
    修改客户端的hosts文件
    C:\Windows\System32\drivers\etc\hosts
    192.168.100.100 runtime.example.com
    

    //访问结果:
    在这里插入图片描述

    展开全文
  • 编译安装源码包的过程(以安装httpd包举例) 什么是Apache? Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的...
  • Apache HTTP Server(简称Apache或httpd)是Apache软件基金会的一个开放源代码的网页服务器软件,旨在为unix,windows等操作系统中提供开源httpd服务。由于其安全性、高效性及可扩展性,被广泛使用,...
  • httpd服务及配置文件详解

    千次阅读 2019-03-19 16:51:00
    一、Httpd服务 httpd是一个开源软件,且一般用作web服务器来使用。目前最流行的web服务器软件叫做httpd,在早期的http server就叫做apache,到了http server 2.0以后就改名为httpd了。所以有时候听到apache服务器和...
  • Httpd 服务启动流程

    千次阅读 2019-04-12 20:30:36
    Httpd 服务 1、 先检查本机的 httpd 服务是否开启, ...启动httpd服务:service httpd start 检查服务: service --status-all | grep httpd 为确保是否开启成功,请再重新检查一次 3、 我们进入到/var/www...
  • httpd服务配置详解

    千次阅读 2017-07-15 17:04:42
    而且,httpd服务支持众多模块,拥有众多功能。 httpd的特性 高度模块化 :httpd是由一个核心加上众多模块组成,不同的模块拥有不同的功能,用户可以根据自己的需要装载所需要的模块 支持DSO :Dynamic ...
  • Linux环境下编译安装httpd服务器 1.通过xshell的xftp 5上传源代码包,一般上传到/usr/local/src这个目录下,上传三个源代码包,因为httpd源代码要依赖于后两个 2.切换到上传目录解压httpd压缩包,然后进入到解压...
  • 目录httpd服务的安装以及开启命令httpd介绍查看网卡信息开启前后比较httpd服务的安装httpd服务的启动、停止与重启谢谢大家观看 httpd服务的安装以及开启命令 httpd介绍  httpd是Apache超文本传输协议(HTTP)服务器的...
  • pache HTTP Server(简称Apache或httpd)是Apache软件基金会的一个开放源代码的网页服务器软件,旨在为unix,windows等操作系统中提供开源httpd服务。由于其安全性、高效性及可扩展性,被广泛使用,自1996年4月以来...
  • CentOS 7 中httpd服务的用户限制详解

    千次阅读 2019-07-15 21:14:04
    Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能模块haul、可灵活定制等诸多优点,其不仅...以下所有操作必须基于httpd服务的环境下,搭建httpd服务可以参考博文CentOS 7 利用Apac...
  • Mac 使用Apache httpd服务

    万次阅读 2019-10-25 09:08:49
    1.启动Mac自带的Apache httpd服务 首先查看httpd的版本信息: apachectl -v ...由于Mac中Apche httpd服务是以root用户安装的,可以用sudo apachectl start启动Apache httpd服务 打开浏览器地址栏输...
  • 设置Httpd服务开机自启动

    千次阅读 2020-10-13 19:22:25
    介绍了设置httpd服务开机自启动的2种方法
  • 启动httpd服务

    千次阅读 2019-02-20 14:57:05
    1、安装httpd:yum install httpd 2、启动:service httpd restart 3、http若链接不上则查看防火墙 查看:systemctl status firewalld service firewalld status 临时关闭:systemctl stop firewalld 永久关闭:...
  • Linux配置httpd服务

    2019-03-16 21:12:22
    搭建httpd服务 配置环境:Centos7 1、首先安装httpd服务: [root@hadoop1 ~]# yum install httpd 2、配置Httpd服务 首先需要关闭防火墙,不然局域网内的主机无法访问: [root@hadoop1 ~]# systemctl disable ...
  • Redhat 7.0 搭建httpd服务

    千次阅读 2018-11-20 18:32:03
    前言:在一个月色朦胧的夜里,三三两两的小鸟不停在外面叽叽喳喳,哦不,那不是小鸟,是我的肚子在咕咕叫,确实是已经饿了几个小时了,但是就在我坚持不下去的时候,我看到了放在一旁...默认已经安装yum服务,如果没...
  • [root@control ~]# systemctl start httpd Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" ...
  • Centos7安装httpd服务

    2020-03-05 01:04:42
    一、更新yum源 yum update 安装vim编辑器 ...三、安装httpd服务 yum -y install httpd 查看httpd的版本:httpd -v: 启动httpd服务:systemctl start httpd 默认是80端口。 打开地址是否可以访问: h...
  • 虚拟Web主机指的是在同一台服务器中...使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能同事支撑大量的Web站点。 httpd服务支持的虚拟主机类型包括以下三种: 基于域名:为每个虚拟...
  • HTTPD服务器的配置文件解释

    千次阅读 2018-04-08 16:08:51
    首先来看看HTTPD服务的主配置文件的几个段 Global Environment:全局环境配置,也就是这里面定义的所有的选项具有全局属性 Global Environment: 表示主服务配置段, Virtual Hosts:虚拟主机段,Global Environment和...
  • httpd服务的配置文件

    2018-03-07 09:54:19
    httpd服务的配置文件,路径/etc/httpd/conf/httpd.conf
  • Linux之httpd服务

    万次阅读 2018-11-12 12:57:31
    查看后台服务: service --list-all | grep httpd ...开启httpd服务:service httpd start 访问web服务器:http://ip:80 协议一定是http,绝对不要是https 防火墙要么关闭,要么开放80端口 资源...
  • Red Hat Linux的httpd服务器简单搭建方法

    千次阅读 热门讨论 2020-11-29 17:17:19
    Red Hat Linux的httpd服务器简单搭建方法 1.先查使用rpm -q httpd查看是否安装,如下图显示未安装。 2.连接上第一块镜像安装httpd 3.连接成功后使用df -h查看挂载的路径,可以看到我的挂载路径在/mnt/cdrom2/,这里...
  • 由于httpd服务默认端口是80,之前nginx的默认端口也是80,所以修改 # vi/etc/httpd/conf/httpd.conf 文件 修改两个地方 #Listen 12.34.56.78:80 Listen 80 #把80改为你设置的端口,我设...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,044
精华内容 85,217
关键字:

httpd服务