apache 虚拟主机、个人主页、访问控制、模式切换

1. 关于apache

  • 中文名 阿帕奇,是主流的企业后端web服务器
  • 默认监听端口 80
  • 服务名 httpd

2. 虚拟主机

2.1 什么是虚拟主机

虚拟空间,也称虚拟主机(Virtual Host Virtual Server)是使用特殊的软硬件技术,把一台计算机主机分成一台台"虚拟"的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能,是使用特别的软件和硬件技术,把一台真实的物理电脑主机分割成多个的逻辑存储单元,每个单元由于没有物理实体,但是每一个物理单元都能像真实的物理主机一样在网络上工作。单独的域名、IP地址(或共享的IP地址)、完整的Internet服务器功能。虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,互不干扰。

理解:
加入某企业用Apache作为web服务器,如果没有虚拟主机,想要两个域名的网站 www.test.com www.abc.com 则需要两个服务器 如果这两个网站 都不太占据资源 比如展示型网站 此时 用两个服务器 有点太浪费主机资源 我们可以将两个网站都做在同一个Apache服务器上 以节省资源 这种技术 称之为虚拟主机 一个Apache服务器可以具有多个网站及域名

2.2 虚拟主机的作用

  • 虚拟主机用于学习和研究方面。很多人建设网站,用于学习某些方面的知识和记录积累。网站上面主要把自己遇到的问题和解决的方法进行记录,以备以后的使用和研究。同时也是与其他人进行知识的分享。这些都不需要很大的带宽,内存等,而且首要的一点是使用方便。还有就是自己做网站来进行测试,所以选择虚拟主机是个不错的选择。

  • 虚拟主机用于个人博客类型的网站。这些类型网站主要用于个人的生活和爱好的方面来进行建设,也不需要选择很高的配置,主要是来展示个人的心得和生活。主要是用来自己看和对自己生活的分享。选择虚拟主机简单,方便,小巧,非常的实用。

  • 用于中小型的企业展示和单页营销型的网站。对于很多的中小企业,他们的网站主要用来展示企业的基本情况,或者产品的特定时间的营销。并不涉及到网上的在线交易。所以选择虚拟主机来说也是非常的合适,便于管理和信息的发布。

2.3 Apache虚拟主机的实现

安装Apache服务

[root@localhost ~]# yum -y install httpd
2.3.1 基于域名的虚拟主机

修改配置

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
349 <VirtualHost 192.168.20.133>
350 DocumentRoot /var/www/html/test
351 ServerName www.test.com
352 </VirtualHost>
353 <VirtualHost 192.168.20.133>
354 DocumentRoot /var/www/html/abc
355 ServerName www.abc.com
356 </VirtualHost>

做虚拟主机 需要VirtualHost标签 192.168.20.133 是当前服务器ip
DocumentRoot 此域名的网页目录的绝对路径
ServerName 虚拟主机的域名

创建响应的目录和对应的网页文件

[root@localhost ~]# mkdir -p /var/www/html/{test,abc}
[root@localhost ~]# echo "test" > /var/www/html/test/index.html
[root@localhost ~]# echo "abc" > /var/www/html/abc/index.html  

利用hosts文件做简单的域名解析

[root@localhost ~]# vim /etc/hosts #追加两行
192.168.20.133 www.test.com
192.168.20.133 www.abc.com

启动服务并验证

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# curl http://www.test.com
test
[root@localhost ~]# curl http://www.abc.com
abc
2.3.2 基于端口的虚拟主机

修改虚拟主机的端口

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
 42 Listen 80 #默认监听80端口 不变
 43 Listen 8888 #此行为新增加的

350 <VirtualHost 192.168.20.133:80> #为ip加上端口
354 <VirtualHost 192.168.20.133:8888> #为ip加上端口

新增的端口尽量大一些 避免与系统服务的端口相冲突

重启服务 验证

[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl http://192.168.20.133:80
test
[root@localhost ~]# curl http://192.168.20.133:8888
abc
2.3.3 基于ip的虚拟主机

先增加一个ip

[root@localhost ~]# ifconfig 
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
[root@localhost ~]# ifconfig ens32:1 192.168.20.188/24
[root@localhost ~]# ifconfig | grep 188
        inet 192.168.20.188  netmask 255.255.255.0  broadcast 192.168.20.255

修改配置

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
 43 Listen 8888 #删除掉 不用了
 349 <VirtualHost 192.168.20.188>
 353 <VirtualHost 192.168.20.133>

重启 访问测试

[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl http://192.168.20.133
abc
[root@localhost ~]# curl http://192.168.20.188
test

3. 用户个人主页及访问控制

编辑用户个人主页的设置

[root@localhost ~]# vim /etc/httpd/conf.d/userdir.conf 
 17 #    UserDir disabled  #此行注释掉 不注释表示禁用
 24     UserDir public_html #此行取消注释
 31 <Directory "/home/*/public_html">
 32     AllowOverride all
 33     AuthUserFile "/etc/httpd/.passwd"
 34     AuthName "Plese login"
 35     AuthType basic
 36     Require valid-user
 37 </Directory>

all 表示所有用户的家目录下的public_html目录的访问都需要验证
authuserfile 验证时候与这个文件核对密码
authname 访问需要验证的页面时 弹窗的提示信息
authtype 验证类型 basic 基本类型
require valid-user 需要经过验证才可以访问到内容

设置web服务器域名 及域名解析

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName www.example.com
[root@localhost ~]# vim /etc/hosts
192.168.20.133 www.example.com #添加解析记录

如果是在centos中访问 这些解析即可 如果实在Windows中访问 
Windows的hosts文件 需要写入域名解析

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

创建用户个人首页

[root@localhost ~]# useradd tiezhu
[root@localhost ~]# su - tiezhu
[tiezhu@localhost ~]$ pwd
/home/tiezhu
[tiezhu@localhost ~]$ mkdir public_html
[tiezhu@localhost ~]$ echo "homepage for user tiezhu" > public_html/index.html
[tiezhu@localhost ~]$ exit
logout

调整selinux、给权限

[root@localhost ~]# setenforce 0
[root@localhost ~]# chmod 711 /home/tiezhu/

设置验证密码

[root@localhost ~]# htpasswd -c /etc/httpd/.passwd tiezhu
New password: 
Re-type new password: 
Adding password for user tiezhu

启动Apache并进行访问测试

[root@localhost ~]# netstat -anput | grep LISTEN | grep 80

Apache没有启动  我们这里启动Apache(如果已经启动 则重启)

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -anput | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      11240/httpd  

用浏览器访问 http://www.example.com/~tiezhu/index.html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. Apache的源码安装和模式切换

4.1 Apache的源码安装

   72  yum -y install gcc gcc-c++ expat-devel pcre-devel
   73  tar -zxf apr-1.7.0.tar.gz 
   74  cd apr-1.7.0
   75  ./configure --prefix=/usr/local/apr
   76  make && make install
   77  cd
   78  tar -zxf apr-util-1.6.1.tar.gz 
   79  cd apr-util-1.6.1
   80  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
   81  make && make install
   82  cd
   83  tar -zxf httpd-2.4.39.tar.gz 
   84  cd httpd-2.4.39
   85  ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
   86  make && make install

apr 主要是提供apr-utils和httpd必备的lib文件
apr-util 是一个通用的函数库, 他可以让httpd不用关心底层的操作系统平台 可以很方便的进行移植

源码安装参数释义:

--enable-so #可以让httpd支持动态扩展模块
--enable-mods-shared=most #指定有哪些动态扩展模块,most值的是绝大多数

4.2 apache的服务和服务控制

[root@localhost ~]# ls /usr/local/httpd/
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules

bin目录: 服务相关的脚本 比如负责启动、关闭apache的脚本
conf目录: 配置文件
logs: 日志文件
error: 存放错误信息

服务控制

启动

[root@localhost ~]# /usr/local/httpd/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

启动时 如果apache没有设置ServerName 会有警告 但依然可以启动
[root@localhost ~]# netstat -anput | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1423/httpd 

在这里插入图片描述

关闭:

[root@localhost ~]# /usr/local/httpd/bin/apachectl stop
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
#关闭的时候 依然会提醒没有设置域名 不是报错
[root@localhost ~]# netstat -anput | grep LISTEN | grep 80

重启:

[root@localhost ~]# /usr/local/httpd/bin/apachectl stop   
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost ~]# /usr/local/httpd/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost ~]# netstat -anput | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1611/httpd

重启 如果使用restart 不会报错 但是 没有效果

4.3 apache的工作模式和切换

4.3.1 工作模式和特点

Prefork
特点:
apache启动之初,就预先fork一些子进程,然后等待请求进来,这样做主要是为了减少频繁创建和销毁进程的开销。每个子进程包含一个线程,在一个时间点,该进程只可以处理一个请求。

处理一定数量的请求时 需要更多的系统资源 对请求的处理效率较低 如果是很多请求的情况下 会将请求放在队列中 一直等待前边的处理完毕

关于进程和线程 不动的可以看https://blog.csdn.net/weixin_43557605/article/details/101101551

Worker
特点:
与prefork相比,使用了多进程和多线程,也会先fork几个子进程,之后为每个子进程创建一些线程,这些线程里包含一个监听线程。每个请求过来,会被分配一个线程来服务。因为work模式比prefork具备更多的线程,而大多数线程都可以处理请求 所以 worker模式具有比prefork模式更高的并发处理量

如果使用keep-alive的长连接方式,某个线程会等到到超时才会被释放,如果过多的线程被这样占据,会导致在高并发场景下系统无服务线程可用

Event
特点:
event模式和worker模式很想,最大的区别在于,event模式下,有另外一个线程,这个线程可以监督、管理keep-alive长连接的线程,使其在处理完请求后 及时释放连接 这样 在高并发场景下 可以拥有更强的处理能力

三种工作模式中 最好的event模式 所以 apache模型优化 一般都是想把apache适应的模型 切换为event

4.3.2 apahe工作模式的查看和切换

查看

[root@localhost ~]# /usr/local/httpd/bin/httpd -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c
  event.c  --->从此处可以看出 当前的模式就是event模式

切换(通过编译安装进行模式切换)

./configure --prefix=/usr/local/httpd --with-apr.......... --with-mpm=worker

configure的时候 加上--with-mpm=
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值