apache 虚拟主机配置详解_linux 配置虚拟主机

apache 虚拟主机配置详解_linux 配置虚拟主机文章目录Apache虚拟主机企业应用部署一个端口不同域名调试worker工作模式进行压力测试权限设置Apache配置文件详解ApacheRewrite规则讲解Apache配置文件权限操作总结Apache虚拟主机企业应用企业真实环境中,一台WEB服务器发布单个网站会非常浪费资源,所以一台WEB服务器上会发布多个网站,少则3-5个,多则2-30。在一台服务器上发布多哥网站,也称之为部署多个虚拟主机,WEB虚拟主机配置方法有三种:基于单个IP地址多个Socket端口基于

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Apache 虚拟主机企业应用

  • 企业真实环境中,一台WEB服务器发布单个网站会非常浪费资源,所以一台WEB服务器上会发布多个网站,少则3-5个,多则2-30。

  • 在一台服务器上发布多哥网站,也称之为部署多个虚拟主机,WEB虚拟主机配置方法有三种:

    • 基于 单个 IP地址 多个 Socket端口
    • 基于 单个 IP地址 一个端口 不同域名
    • 基于 多个 IP地址 一个端口
  • 其中基于同 一个端口不同域名的方式 在企业中得到广泛的使用和应用,如下为 基于一个端口不同域名,在一台Apache WEB服务器上部署多个网站。

部署一个端口不同域名

  • 1、创建虚拟主机配置文件httpd-vhosts.conf

    • 该文件默认已存在,只需要去掉httpd.conf配置文件中#即可
      在这里插入图片描述
  • `创建网站主机目录

    [root@localhost ~]# mkdir -p /usr/local/apache/htdocs/{ 
         love1,love2}
    
    
    
  • 创建网页内容

     [root@localhost ~]# cd /usr/local/apache/htdocs/
     [root@localhost htdocs]# ls
     love1  love2
     [root@localhost htdocs]# cd love1
     [root@localhost love1]# ls
     love1.zip
     [root@localhost love1]# unzip love1.zip 
     Archive:  love1.zip
     creating: css/
     inflating: css/theme.css           
     creating: images/
     inflating: images/1.gif            
     inflating: images/1.mp3            
     inflating: images/2.jpg            
     inflating: images/3.jpg            
     inflating: images/emoji_bixin.jpg  
     inflating: images/emoji_kelian.jpg  
     inflating: images/music_note_big.png  
     inflating: index.html              
     creating: js/
     inflating: js/jquery-2.0.3.min.js  
     inflating: js/jweixin-1.2.0.js     
     inflating: js/start_onlyyou.js     
     inflating: js/theme_common.js      
     inflating: js/typed.min.js         
    [root@localhost love1]# cd ../love2
    [root@localhost love2]# ls 
    love2.zip
    [root@localhost love2]# unzip love2.zip 
    Archive:  love2.zip
     creating: images/
     inflating: images/1.jpg            
     inflating: index.html              
     creating: js/
     inflating: js/yiqi.js              
     creating: style/
     inflating: style/main.css          
    [root@localhost love2]# 
    
    
  • 修改配置文件

    [root@localhost love1]# pwd
    /usr/local/apache/htdocs/love1
    [root@localhost love1]# vim ../../conf/extra/httpd-vhosts.conf 
    [root@localhost love1]# cat ../../conf/extra/httpd-vhosts.conf 
    <VirtualHost *:80>
      ServerAdmin rivers@163.com
      DocumentRoot "/usr/local/apache/htdocs/love1"
      ServerName www.love1.lan1.com
      ServerAlias www.biaobai.com
      ErrorLog "love1.com-error_log"
      CustomLog "logs/love1.com-access_log" common
    </VirtualHost>
    
    <VirtualHost *:80>
      ServerAdmin rivers@163.co
      DocumentRoot "/usr/local/apache/htdocs/love2"
      ServerName www.love2.lan2.com
      ErrorLog "logs/love2.com-error_log"
      CustomLog "logs/love2.com-access_log" common
    </VirtualHost>
    [root@localhost love1]# 
    
  • 重启服务

    [root@localhost love1]# /usr/local/apache/bin/apachectl stop
    [root@localhost love1]# /usr/local/apache/bin/apachectl start  
    
  • 测试:

  • 输入:www.love1.lan1.com 访问
    在这里插入图片描述

  • 输入:www.love2.lan2.com
    在这里插入图片描述

调试worker工作模式

<IfModule worker.c>
# Worker MPM引擎配置段;
StartServers        8
#默认启动Apache 工作进程数
MaxClients         2000	
#每秒支持的最大客户端并发;
MinSpareThreads     25	
#最小空闲线程数;
MaxSpareThreads     60			
#最小空闲线程数;
ThreadsPerChild     40	
#每个进程启动的线程数;
MaxRequestsPerChild  0
#每个进程能处理的最大请求数,0表示无限制;
</IfModule>

进行压力测试

  • 测试工具 ab
  • 常用参数:
    • -c 并发多少次
    • -n 请求次数
    [root@localhost apache]# ./bin/ab -c 1000 -n 10000 http://www.love2.lan2.com/index.html
    This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking www.love2.lan2.com (be patient)
    Completed 1000 requests
    Completed 2000 requests
    Completed 3000 requests
    Completed 4000 requests
    Completed 5000 requests
    Completed 6000 requests
    Completed 7000 requests
    Completed 8000 requests
    Completed 9000 requests
    Completed 10000 requests
    Finished 10000 requests
    
    
    Server Software:        Apache/2.4.46
    Server Hostname:        www.love2.lan2.com
    Server Port:            80
    
    Document Path:          /index.html
    Document Length:        585 bytes
    
    Concurrency Level:      1000
    Time taken for tests:   1.908 seconds
    Complete requests:      10000
    Failed requests:        0
    Total transferred:      8310000 bytes
    HTML transferred:       5850000 bytes
    Requests per second:    5240.58 [#/sec] (mean)
    Time per request:       190.819 [ms] (mean)
    Time per request:       0.191 [ms] (mean, across all concurrent requests)
    Transfer rate:          4252.85 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0   51 212.4      1    1009
    Processing:    11   53 175.6     16    1618
    Waiting:        8   53 175.6     15    1618
    Total:         12  105 288.7     17    1723
    
    Percentage of the requests served within a certain time (ms)
      50%     17
      66%     19
      75%     23
      80%     31
      90%    203
      95%   1019
      98%   1219
      99%   1419
     100%   1723 (longest request)
    [root@localhost apache]# ./bin/ab -c 1000 -n 50000 http://www.love2.lan2.com/index.html
    This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking www.love2.lan2.com (be patient)
    Completed 5000 requests
    Completed 10000 requests
    Completed 15000 requests
    Completed 20000 requests
    Completed 25000 requests
    Completed 30000 requests
    Completed 35000 requests
    Completed 40000 requests
    Completed 45000 requests
    apr_socket_recv: Connection reset by peer (104)
    Total of 49944 requests completed
    [root@localhost apache]# 
    
    

权限设置

  • 两种权限设置方法

    <VirtualHost *:80>
    ServerAdmin rivers@163.com
    DocumentRoot "/usr/local/apache/htdocs/love1"
    ServerName www.love1.lan1.com
    ServerAlias www.biaobai.com
    ErrorLog "love1.com-error_log"
    CustomLog "logs/love1.com-access_log" common
        <Directory /usr/local/apache/htdocs/love1>
                AllowOverride ALL
                Options Indexes FollowSymLinks
                Order allow,deny
                Allow from 192.168.10.10
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
    ServerAdmin rivers@163.co
    DocumentRoot "/usr/local/apache/htdocs/love2"
    ServerName www.love2.lan2.com
    ErrorLog "logs/love2.com-error_log"
    CustomLog "logs/love2.com-access_log" common
        <Directory /usr/local/apache/htdocs/love2>
                <RequireAll>
                  Require all granted
                  Require not ip 192.168.10.10
                </RequireAll>
        </Directory>
    
  • 测试结果
    [root@localhost extra]# curl http://www.love2.lan2.com/index.html
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>LOVE</title>
    <link href="style/main.css" rel="stylesheet" >
    </head>
    <style>
    	
    </style>
    <body>
    	<div class="box" align="center">
    		<p>我观察你很久了</p>
    		<h1>小姐姐做我对象好不好?</h1>
    		<img src="images/1.jpg">
    		<div class="bottom">
    			<div class="left" id="hao"></div>
    			<div class="right" id="buhao">不好</div>
    		</div>
    	</div>
    </body>
    	<script type="text/javascript" src="js/yiqi.js"></script>
    </html>
    [root@localhost extra]# 
    
    
    [root@localhost ~]# curl http://www.love2.lan2.com/index.html
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>403 Forbidden</title>
    </head><body>
    <h1>Forbidden</h1>
    <p>You don't have permission to access this resource.</p>
    </body></html>
    [root@localhost ~]# 
    

Apache 配置文件详解

  • Apache 的配置文件 是Apache WEB难点,读者需要掌握配置文件中每个参数的含义,理解日常运维中遇到的故障,并解决问题。
 ServerTokens OS            服务器的版本和操作系统而已,不需要改动他,如果不在乎你的系统信息被远程用户查询到,则可以将这个项目注释掉(不建议)
 
 ServerRoot  "/etc/httpd"   服务器设置的最顶层目录,有点类似于chroot那种感觉。包括logs , modules等的数据都应该要放置在此目录下面(如果这些配置没有声明成绝对路径的话)
 
 PidFile run/httpd.pid      放置PID的文件,可方便apache软件的管理。只有相对路径考虑
 
 ServerRoot                 设置值,所以文件在/etc/httpd/run/httpd.pid
 
 Timeout 60                 不论接收或发送,当持续连接等待超过60秒则该次连接就中断一般来说,此数值在300秒左右即可,不需要修改这个原始值
 
 KeepAlive Off              这里最好把默认值“Off”修改为“On”。这里表示是否允许持续性的连接,也就是一个TCP连接可以具有多个文件资料传送的要求
 
 MaxKeepAliveRequests 100    可以将默认的100改成500或更高与上一个设置的值KeepAlive有关,当KeepAlive的值设置为On的时候,这个数值可以决定。该次连接能够传输的最大传输数量。为了提高效率则可以改大一点。0代表不限制
 
 KeepAliveTimeout 65  在KeepAlive设置为“On”的情况下,该次连接在最后一次传输后等待延迟的秒数,当超过该秒数的时候该连接中断。保持默认值15即可,如果设置的值太高(等待时间较长),在较忙碌的系统上面将会有较多的Apache程序占用资源,可能有效率方面的问题。
 
 
 <IfModule prefork.c>
 StartServers      8				启动Apache的时候,唤醒几个PID来处理服务的。#Apache使用了进程预派生的技术来处理请求,大大提高了响应速度,
 MinSpareServers   5				最小预备使用的PID数量
 MaxSpareServers   20		    最大预备使用的PID数量
 ServerLimit       4096			服务器的限制
 MaxClients        4096			最多可以有多少个客户端同时连接到Apache
 Maxrequestsper Child 4000       每个进程能处理的最大请求数
 Loadmodule mod version.so       静态加载 apache相关模块
 erverAdminsupport@ifed.net      管理员邯箱,网站异常,错误信息会发生至该邯箱
 <IfModule>

Apache Rewrite 规则讲解

  • httpd.conf (Apache的主配文件)
[root@localhost ~]# ll /usr/local/apache/conf/httpd.conf 
-rw-r--r-- 1 root root 19069 Apr  4 11:57 /usr/local/apache/conf/httpd.conf
[root@localhost ~]#

httpd.conf是Apache的主配文件,整个Apache也不过就是这个配置文件,里面几乎包含了所有的配置。有的distribution都将这个文件拆分成数个小文件分别管理不同的参数。但是主要配置文件还是以这个文件为主。只要找到这个文件名就知道如何设置了。后面会详细解释Apache主配文件的每一行配置

  • 虚拟主机配置文件

    [root@localhost ~]# ll /usr/local/apache/conf/extra/httpd-vhosts.conf 
    -rw-r--r-- 1 root root 810 Apr  4 14:05 /usr/local/apache/conf/extra/httpd-vhosts.conf
    [root@localhost ~]#
    
    
  • Apache支持很多的外挂模块

    [root@localhost ~]# ll /usr/local/apache/modules/
    total 3576
    -rw-r--r-- 1 root   40  15845 Apr  3 16:36 httpd.exp
    -rwxr-xr-x 1 root root  13632 Apr  3 16:47 mod_access_compat.so
    -rwxr-xr-x 1 root root  13344 Apr  3 16:47 mod_actions.so
    -rwxr-xr-x 1 root root  22776 Apr  3 16:47 mod_alias.so  
    

例如PHP以及SSL都是Apache外挂的一种。所有你想要使用的模块文件默认是放置在这个目录当中的

  • 网站根目录

     这个目录就是Apache默认的存放首页的目录(默认是index.html)
    [root@localhost ~]# ll /usr/local/apache/htdocs/
    total 0
    drwxr-xr-x 5 root root 76 Apr  4 10:37 love1
    drwxr-xr-x 5 root root 78 Apr  4 10:38 love2
    [root@localhost ~]# 
    
  • Apache 默认小图标

    [root@localhost ~]# ll /usr/local/apache/icon
    这个目录提供Apache默认给予的一些小图示,可以随意使用。
    
  • /var/www/cgi-bin/

    [root@localhost ~]# ll /usr/local/apache/cgi-bin/
    total 16
    -rw-r--r-- 1 root 40  820 Dec 18  2012 printenv
    -rw-r--r-- 1 root 40 1074 Dec 18  2012 printenv.vbs
    -rw-r--r-- 1 root 40 1133 Dec 18  2012 printenv.wsf
    -rw-r--r-- 1 root 40 1261 Dec 18  2012 test-cgi
    [root@localhost ~]#
    默认给一些可执行的CGI(网页程序)程序放置的目录。
    
  • 日志文件

    [root@localhost ~]# ll /usr/local/apache/logs/
    total 5636
    -rw-r--r-- 1 root root     851 Apr  3 21:59 access_log
    -rw-r--r-- 1 root root   10240 Apr  4 14:05 error_log
    -rw-r--r-- 1 root root       5 Apr  4 14:05 httpd.pid
    -rw-r--r-- 1 root root    6247 Apr  4 13:54 love1.com-access_log
    -rw-r--r-- 1 root root 5736884 Apr  4 14:06 love2.com-access_log
    -rw-r--r-- 1 root root     203 Apr  4 14:06 love2.com-error_log
    默认的Apache日志文件都放在这里,对于流量比较大的网站来说,这个目录要格外注意,这里的数据文件可能会非常大。
    
  • 启动脚本

    [root@localhost ~]# ll /usr/local/apache/bin/apachectl 
    -rwxr-xr-x 1 root 40 3434 Apr  3 16:29 /usr/local/apache/bin/apachectl
    [root@localhost ~]# 
    
     这个就是Apache的主要执行文件,这个执行文件其实就是一个Shell Script而已,他可以主动地侦测系统上面的一些设置值,好让你启动Apache时更简单一些。
    
  • 二进制执行文件

    [root@localhost ~]# ll /usr/local/apache/bin/httpd
    -rwxr-xr-x 1 root root 912304 Apr  3 16:47 /usr/local/apache/bin/httpd
    [root@localhost ~]# 
     这个是主要的Apache二进制执行文件。
    
  • 密码文件

    [root@localhost ~]# ll /usr/local/apache/bin/htpasswd 
    -rwxr-xr-x 1 root root 27608 Apr  3 16:47 /usr/local/apache/bin/htpasswd
    [root@localhost ~]# 
    ( (Apache密码保护)
    在当你想要登入某些网页时你需要输入帐号与密码,那Apache本身就提供一个最基本的密码保护方式,该密码的产生就是通过这个命令来实现的。
    
    
    

Apache配置文件权限操作

  • 在权限配置一块让人一头雾水,下面我整理了一下相关的文档,希望能拨开云雾

  • Apache内部的Order可以处理相关权限的限制,其中有两个值,Allow和Deny

  • Order deny,allow 可以理解为拒绝所有,开放特定

  • Order allow,deny 可以理解为开放所有,拒绝特定

  • 当allow与deny中有重复的规则出现,则最后一条的配置起到了决定性的作用

  • 举个例子来说,我们要允许所有人访问除了192.168.61.11

    Order allow,deny
    allow from all
    deny 192.168.61.10
    
    
  • 接下来举一个只允许10.1访问的例子

    Order deny,all   这个例子的第一行声明了它是拒绝所有而允许特定
    deny from all    第二行拒绝了所有访问
    allow 192.168.10.1   第三行配置了一个允许的IP,这个IP当然也是包含在		第二行的all之中,出现了重复定义
    
    
  • 访问控制法则1:

    <Directory 网站目录 >                Apache网站默认发布目录
    AllowoverrIde                       设置为None时,目录中.htaccess文件将被忽略,All,才生效 
    Options  -Indexes FollowsymLinks    禁止浏览目录,去掉”-“,表示浏览目录,常用于下载站点
    Order  allow, deny                  默认情况下禁止所有客户机访问
    Order  deny, allow                  默认情况下允许所有客户机访允许
    Allow  from all                     所有客户机访问。
    </Directory>
    
  • 访问控制法则2:

    Require all granted	允许所有主机访问
    Require all deny	拒绝所有主机访问
    Require ip IPADDR	授权指定来源地址的主机访问
    Require not ip IPADDR	拒绝指定来源地址的主机访问
    Require host HOSTNAME	授权指定来源主机名的主机访问
    Require not host HOSTNAME	拒绝指定来源主机名的主机访问
    
  • 案列演示

            <Directory /usr/local/apache/htdocs/love1>
                    AllowOverride ALL
                    Options Indexes FollowSymLinks
                    Order allow,deny
                    Allow from 192.168.10.10
            </Directory>
            <Directory /usr/local/apache/htdocs/love2>
                    <RequireAll>
                      Require all granted
                      Require not ip 192.168.10.10
                    </RequireAll>
            </Directory>
    

    总结

  • Apache源码搭建教程

  • http协议解析

  • Apache 工作模式解析

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192334.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编码解码乱码字符集[通俗易懂]

    编码解码乱码字符集[通俗易懂]编码EnCode:将字符转化为字节解码DeCode:将字节转化为字符乱码:打个比方—比较多人知道的联通用字符集GBK的时候出现这样的情况:��ͨ,这就是乱码常见的中文字符集有:GBK和UTF-8国际上常用的字符集:Unicode(大字典)、ANSI UTF-8,中文占三个字节,英文占一个字节(变长),还有定长占两个字节(耗费空间多)GBK,中文占两个zijie…

    2022年5月30日
    38
  • oracle 查看dba账户,Oracle DBA常用查询「建议收藏」

    oracle 查看dba账户,Oracle DBA常用查询「建议收藏」1.查询系统所有对象selectowner,object_name,object_type,created,last_ddl_time,timestamp,statusfromdba_objectswhereowner=upper(‘scott’)2.查看系统所有表selectowner,table_name,tablespace_namefromdba_table…

    2022年9月26日
    0
  • db2排序rownumber函数讨论[通俗易懂]

    db2排序rownumber函数讨论[通俗易懂] 在我的应用中使用了Rownumber函数,由于我的非正常理解造成了排序混乱。现在晒出来讨论。一、初识rownumberrownumber()函数允许开发人员动态地将行号指定给结果集。如果去掉row_next子句(ROW_NEXTBETWEEN?and?),那么将返回所有匹配选择标准的行。上面使用的SELECT*FROM子句可以看作一个临时表,里面存有匹配选

    2022年6月6日
    143
  • OHEM[通俗易懂]

    OHEM[通俗易懂]TrainingRegion-basedObjectDetectorswithOnlineHardExampleMining00Astract摘要主要讲了四点:(1)训练过程需要进行参数的空间搜索(2)简单样本与难分辨样本之间的类别不平衡是亟需解决的问题(3)自动地选择难分辨样本来进行训练不仅效率高而且性能好(4)提出了OHEM算法,不仅效率高而且性能好,在各种数据集上表…

    2022年5月7日
    51
  • linux aarch64启动不了,引导AArch64 Linux

    linux aarch64启动不了,引导AArch64 Linux前注:本文是Documentation/arm64/booting的翻译。这篇文章基于RussellKing所写的《theARMbootingdocument》,并与AArch64Linuxkernel的所有公开版本相关。AArch64异常模型由几级异常组成,分别是EL0-EL3,EL0和EL1又分别有安全和非安全模式,EL2是hypervisor级别,仅存在于安全模式,EL3是最…

    2022年10月16日
    0
  • pycharm 多行编辑_pycharm如何只运行部分代码

    pycharm 多行编辑_pycharm如何只运行部分代码pycahrm的多行编辑模式可以允许你多行写像同样的代码,但是你删除的时候,也不会像以前那样舒服了,下面就是多行模式的删除的时候出现的问题:选中删除的时候,会出现部分选中,甚至会出现很长的竖着的输入标志,如果有人遇到了这样的问题就i是可能不小心把多行输入这个功能打开了~…

    2022年8月25日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号