apache 虚拟主机部署以及压力测试

一台web服务器=一个网站 ? NO

一台服务器=多个网站 YES !

虚拟主机配置GOGO

虚拟主机部署的三种方式:

  • 单个ip多个端口
  • 多个ip一个端口
  • 单个ip单个端口不同域名(常用)

一 、二进制安装apache

apache可以采用yum和二进制源码安装,尽管yum安装快捷方便且能解决依赖问题,但是配置目录零散,不适合企业的维护,故使用源码安装可以指定安装版本与指定目录,便于维护升级

1.配置yum源

参考yum源三大常用配置其中一种方式即可

2.下载依赖包

yum install apr apr-devel apr-util apr-util-devel pcre* gcc gcc-c++ -y

3.下载二进制包

wget https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.bz2

 tar -xjvf httpd-2.4.43.tar.bz2 

cd httpd-2.4.43/

./configure --prefix=/usr/local/apache2/ --enable-rewrite --enable-so

make && make install

apache服务器多网站部署及压力测试_第1张图片

4.关闭防火墙,启动apache

setenforce 0

systemctl stop firewalld.service

/usr/local/apache2/bin/apachectl start

apache服务器多网站部署及压力测试

有个告警,提示没有打开80端口监听

echo "ServerName localhost:80" >> /usr/local/apache2/conf/httpd.conf

/usr/local/apache2/bin/apachectl restart

apache服务器多网站部署及压力测试

告警消失,测试正常

apache服务器多网站部署及压力测试_第2张图片

5.apache目录介绍(二进制安装)

/usr/local/apache2/bin Apache       # 命令目录
/usr/local/apache2/build Apache     # 构建编译目录
/usr/local/apache2/htdocs/          # 源码安装 Apache 网站发布目录
/usr/local/apache2/cgi-bin          # 可执行的 CGI 程序存放目录
/usr/local/apache2/include          # Apache引用配置文件目录
/usr/local/apache2/logs             # Apache日志目录
/usr/local/apache2/man              # Apache帮助文档目录
/usr/local/apache2/manual           # Apache手册
/usr/local/apache2/modules          # Apache模块路径

二、配置虚拟主机

1.启用虚拟主机

vim /usr/local/apache2/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf #开启vhost

apache服务器多网站部署及压力测试_第3张图片

2.编辑虚拟主机配置文件

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf


    DocumentRoot "/usr/local/apache2//htdocs/xiaoxian1"
    ServerName www.xiaoxian1.com
    ServerAlias xiaoxian1
    ErrorLog "logs/www.xiaoxian1.com-error_log"
    CustomLog "logs/www.xiaoxian1.com-access_log" common



    DocumentRoot "/usr/local/apache2//htdocs/xiaoxian2"
    ServerName www.xiaoxian2.com
    ErrorLog "logs/www.xiaoxian2.com-error_log"
    CustomLog "logs/www.xiaoxian2.com-access_log" common
mkdir -p /usr/local/apache2//htdocs/{xiaoxian1,xiaoxian2}
# 创建虚拟主机根目录

/usr/local/apache2/bin/apachectl restart

apache服务器多网站部署及压力测试_第4张图片

touch /usr/local/apache2/htdocs/xiaoxian*/index.html

 echo "xiaoxian1" >> /usr/local/apache2/htdocs/xiaoxian1/index.html

echo "xiaoxian2" >> /usr/local/apache2/htdocs/xiaoxian2/index.html
# 创建虚拟主机index.html,并输入测试文本

/usr/local/apache2/bin/apachectl restart

更改电脑的host文件

C:\Windows\System32\drivers\etc\hosts

apache服务器多网站部署及压力测试_第5张图片

浏览器测试

apache服务器多网站部署及压力测试_第6张图片

apache服务器多网站部署及压力测试_第7张图片

重要:如果目录中没有index.html,则会显示所有目录信息

apache服务器多网站部署及压力测试_第8张图片

这样显示是不安全的,只需要将vim /usr/local/apache2/conf/httpd.conf中的

apache服务器多网站部署及压力测试

Options Indexes FollowSymLinks 改为 Options FollowSymLinks
重启服务 /usr/local/apache2/bin/apachectl restart

apache服务器多网站部署及压力测试_第9张图片
显示没有权限,比较安全

三、配置调优

vim /usr/local/apache2/conf/httpd.conf


# worker MPM引擎配置段(prefork不常用)
ThreadLimit 200
ServerLimit 64
StartServers 8
# apache进程数
MaxClients 3000
# 每秒支持最大并发
MinSpareThreads 50
# 最小空闲进程
maxSpareThreads 100
# 最大空闲进程
ThreadsPerChild 100
# 每个进程启动的线程数
MaxRequestsPerChild 1000
# 每个进程处理的最大请求数(0为无限制)

添加以上性能参数选项至配置文件httpd.conf底部

参数需要根据机器的性能优化,同时得满足公式,不然会报错

ThreadLimit >= ThreadsPerChild
MaxClients <= ServerLimit * ThreadsPerChild 必须是ThreadsPerChild的倍数
MaxSpareThreads >= MinSpareThreads+ThreadsPerChild
# 以下原配置文件已存在,含义如下
DocumentRoot "/usr/local/apache2//htdocs"
                      
    Options  FollowSymLinks
    # 禁止浏览目录
    AllowOverride None
    # 设置为None时,目录中的.htaccess文件不生效
    Require all granted
    # 允许所有

重启服务 /usr/local/apache2/bin/apachectl restart

四、压力测试-ab工具

/usr/local/apache2/bin/ab是apache自带的压力测试工具,也可使用yum -y install httpd-tools安装。ab不仅可以对apache服务器进行压力测试,也可以对nginx等进行测试

一些常用的ab参数
-c  #并发数(模拟用户数)
-n  #执行次数(访问次数)
-w  #以html打印测试结果
-A  #添加网络认证(账号密码冒号隔开)
-e  #输出结果到CSV格式中

/usr/local/apache2/bin/ab -c 1000 -n 10000 http://localhost/index.html

apache服务器多网站部署及压力测试_第10张图片

查看系统负载情况

apache服务器多网站部署及压力测试_第11张图片

查看测试结果,OK

apache服务器多网站部署及压力测试_第12张图片