900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Apache虚拟主机配置详细教程

Apache虚拟主机配置详细教程

时间:2019-05-22 06:22:27

相关推荐

Apache虚拟主机配置详细教程

文章目录

Apache 虚拟主机企业应用部署一个端口不同域名调试worker工作模式进行压力测试权限设置Apache 配置文件详解Apache Rewrite 规则讲解Apache配置文件权限操作总结

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]# lslove1 love2[root@localhost htdocs]# cd love1[root@localhost love1]# lslove1.zip[root@localhost love1]# unzip love1.zip Archive: love1.zipcreating: 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.jsinflating: js/start_onlyyou.jsinflating: js/theme_common.jsinflating: js/typed.min.js [root@localhost love1]# cd ../love2[root@localhost love2]# ls love2.zip[root@localhost love2]# unzip love2.zip Archive: love2.zipcreating: 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@DocumentRoot "/usr/local/apache/htdocs/love1"ServerName www.ServerAlias ErrorLog "-error_log"CustomLog "logs/-access_log" common</VirtualHost><VirtualHost *:80>ServerAdmin rivers@163.coDocumentRoot "/usr/local/apache/htdocs/love2"ServerName www.ErrorLog "logs/-error_log"CustomLog "logs/-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.访问

输入:www.

调试worker工作模式

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

进行压力测试

测试工具 ab常用参数: -c 并发多少次-n 请求次数

[root@localhost apache]# ./bin/ab -c 1000 -n 10000 http://www./index.htmlThis is ApacheBench, Version 2.3 <$Revision: 1879490 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, /Licensed to The Apache Software Foundation, /Benchmarking www. (be patient)Completed 1000 requestsCompleted 2000 requestsCompleted 3000 requestsCompleted 4000 requestsCompleted 5000 requestsCompleted 6000 requestsCompleted 7000 requestsCompleted 8000 requestsCompleted 9000 requestsCompleted 10000 requestsFinished 10000 requestsServer Software: Apache/2.4.46Server Hostname: www.Server Port: 80Document Path:/index.htmlDocument Length: 585 bytesConcurrency Level:1000Time taken for tests: 1.908 secondsComplete requests:10000Failed requests: 0Total transferred:8310000 bytesHTML transferred: 5850000 bytesRequests 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] receivedConnection Times (ms)min mean[+/-sd] median maxConnect: 0 51 212.41 1009Processing: 11 53 175.616 1618Waiting: 8 53 175.615 1618Total: 12 105 288.717 1723Percentage of the requests served within a certain time (ms)50%1766%1975%2380%3190% 20395% 101998% 121999% 1419100% 1723 (longest request)[root@localhost apache]# ./bin/ab -c 1000 -n 50000 http://www./index.htmlThis is ApacheBench, Version 2.3 <$Revision: 1879490 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, /Licensed to The Apache Software Foundation, /Benchmarking www. (be patient)Completed 5000 requestsCompleted 10000 requestsCompleted 15000 requestsCompleted 20000 requestsCompleted 25000 requestsCompleted 30000 requestsCompleted 35000 requestsCompleted 40000 requestsCompleted 45000 requestsapr_socket_recv: Connection reset by peer (104)Total of 49944 requests completed[root@localhost apache]#

权限设置

两种权限设置方法

<VirtualHost *:80>ServerAdmin rivers@DocumentRoot "/usr/local/apache/htdocs/love1"ServerName www.ServerAlias ErrorLog "-error_log"CustomLog "logs/-access_log" common<Directory /usr/local/apache/htdocs/love1>AllowOverride ALLOptions Indexes FollowSymLinksOrder allow,denyAllow from 192.168.10.10</Directory></VirtualHost><VirtualHost *:80>ServerAdmin rivers@163.coDocumentRoot "/usr/local/apache/htdocs/love2"ServerName www.ErrorLog "logs/-error_log"CustomLog "logs/-access_log" common<Directory /usr/local/apache/htdocs/love2><RequireAll>Require all grantedRequire not ip 192.168.10.10</RequireAll></Directory>

测试结果

[root@localhost extra]# curl http://www./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./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.pidTimeout 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>StartServers8启动Apache的时候,唤醒几个PID来处理服务的。#Apache使用了进程预派生的技术来处理请求,大大提高了响应速度,MinSpareServers 5最小预备使用的PID数量MaxSpareServers 20 最大预备使用的PID数量ServerLimit 4096服务器的限制MaxClients 4096最多可以有多少个客户端同时连接到ApacheMaxrequestsper Child 4000 每个进程能处理的最大请求数Loadmodule mod version.so 静态加载 apache相关模块erverAdminsupport@管理员邯箱,网站异常,错误信息会发生至该邯箱<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 0drwxr-xr-x 5 root root 76 Apr 4 10:37 love1drwxr-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 printenv-rw-r--r-- 1 root 40 1074 Dec 18 printenv.vbs-rw-r--r-- 1 root 40 1133 Dec 18 printenv.wsf-rw-r--r-- 1 root 40 1261 Dec 18 test-cgi[root@localhost ~]#默认给一些可执行的CGI(网页程序)程序放置的目录。

日志文件

[root@localhost ~]# ll /usr/local/apache/logs/total 5636-rw-r--r-- 1 root root851 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 -access_log-rw-r--r-- 1 root root 5736884 Apr 4 14:06 -access_log-rw-r--r-- 1 root root203 Apr 4 14:06 -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,denyallow from alldeny 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 ALLOptions Indexes FollowSymLinksOrder allow,denyAllow from 192.168.10.10</Directory><Directory /usr/local/apache/htdocs/love2><RequireAll>Require all grantedRequire not ip 192.168.10.10</RequireAll></Directory>

总结

Apache源码搭建教程

http协议解析

Apache 工作模式解析

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。