关于apache
中文名 阿帕奇,是主流的企业后端web服务器
默认监听端口 80
服务名 httpd
什么是虚拟主机
虚拟空间,也称虚拟主机(Virtual Host Virtual Server)是使用特殊的软硬件技术,把一台计算机主机分成一台台"虚拟"的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能,是使用特别的软件和硬件技术,把一台真实的物理电脑主机分割成多个的逻辑存储单元,每个单元由于没有物理实体,但是每一个物理单元都能像真实的物理主机一样在网络上工作。单独的域名、IP地址(或共享的IP地址)、完整的Internet服务器功能。虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,互不干扰。
理解:
加入某企业用Apache作为web服务器,如果没有虚拟主机,想要两个域名的网站 www.test.com www.abc.com 则需要两个服务器 如果这两个网站 都不太占据资源 比如展示型网站 此时 用两个服务器 有点太浪费主机资源 我们可以将两个网站都做在同一个Apache服务器上 以节省资源 这种技术 称之为虚拟主机 一个Apache服务器可以具有多个网站及域名
虚拟主机的作用
虚拟主机用于学习和研究方面。很多人建设网站,用于学习某些方面的知识和记录积累。网站上面主要把自己遇到的问题和解决的方法进行记录,以备以后的使用和研究。同时也是与其他人进行知识的分享。这些都不需要很大的带宽,内存等,而且首要的一点是使用方便。还有就是自己做网站来进行测试,所以选择虚拟主机是个不错的选择。
虚拟主机用于个人博客类型的网站。这些类型网站主要用于个人的生活和爱好的方面来进行建设,也不需要选择很高的配置,主要是来展示个人的心得和生活。主要是用来自己看和对自己生活的分享。选择虚拟主机简单,方便,小巧,非常的实用。
用于中小型的企业展示和单页营销型的网站。对于很多的中小企业,他们的网站主要用来展示企业的基本情况,或者产品的特定时间的营销。并不涉及到网上的在线交易。所以选择虚拟主机来说也是非常的合适,便于管理和信息的发布。
1、apache虚拟主机
安装apache服务
[root@CentOS1 ~]# yum -y install httpd
基于域名的虚拟主机
[root@CentOS1 ~]# vim /etc/httpd/conf/httpd.conf
#添加以下内容
349 <VirtualHost 192.168.1.1> #此IP为apache服务器的IP
350 DocumentRoot /var/www/html/lkx #网页存放路径
351 ServerName www.lkx.com
352 </VirtualHost>
353 <VirtualHost 192.168.1.1> #此IP为apache的IP
354 DocumentRoot /var/www/html/zy #网页存放路径
355 ServerName www.zy.com
356 </VirtualHost>
#保存并退出
创建虚拟主机所需要的网页文件及其目录
[root@CentOS1 ~]# mkdir -p /var/www/html/{lkx,zy}
[root@CentOS1 ~]# echo "lkx" >/var/www/html/lkx/index.html
[root@CentOS1 ~]# echo "zy" >/var/www/html/zy/index.html
利用hosts文件做简单的域名解析
[root@CentOS1 ~]# vim /etc/hosts
#添加以下内容
192.168.1.1 www.lkx.com
192.168.1.1 www.zy.com
启动apache服务,并且访问
[root@CentOS1 ~]# systemctl start httpd
[root@CentOS1 ~]# curl http://www.lkx.com
lkx
[root@CentOS1 ~]# curl http://www.zy.com
zy
基于端口的虚拟主机
修改虚拟主机的端口
[root@CentOS1 ~]# vim /etc/httpd/conf/httpd.conf
#进入后去42行或找到Listen 80
42 Listen 80 #默认存在的端口号
43 Listen 8888 #此行新添加内容 新增的端口号尽量大一些避免冲突
[root@CentOS1 ~]# vim /etc/httpd/conf/httpd.conf
#修改为以下内容 如果没有以下内容就添加进去
349 <VirtualHost 192.168.1.1:80> #IP为apache服务器的IP
350 DocumentRoot /var/www/html/lkx #网页存放路径
351 ServerName www.lkx.com
352 </VirtualHost>
353 <VirtualHost 192.168.1.1:8888> #IP为apache服务器的IP
354 DocumentRoot /var/www/html/zy #网页存放路径
355 ServerName www.zy.com
356 </VirtualHost>
#保存并退出
重启apache服务,并且访问
[root@CentOS1 ~]# systemctl restart httpd
[root@CentOS1 ~]# curl http://192.168.1.1:80
lkx
[root@CentOS1 ~]# curl http://192.168.1.1:8888
zy
基于IP的虚拟主机
[root@CentOS1 ~]# ifconfig #查看网卡名称
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#添加临时ip
[root@CentOS1 ~]# ifconfig ens33:0 192.168.1.10/24
[root@CentOS1 ~]# ifconfig | grep 192.168.1.10
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
修改配置文件
[root@CentOS1 ~]# vim /etc/httpd/conf/httpd.conf
Listen 8888 #删除此行
#修改为以下内容 如果没有以下内容就添加进去
349 <VirtualHost 192.168.1.1> #IP为apache服务器的IP
350 DocumentRoot /var/www/html/lkx #网页存放路径
351 ServerName www.lkx.com
352 </VirtualHost>
353 <VirtualHost 192.168.1.10> #IP为apache服务器的IP
354 DocumentRoot /var/www/html/zy #网页存放路径
355 ServerName www.zy.com
356 </VirtualHost>
#保存并退出
重启apache服务,并且访问
[root@CentOS1 ~]# systemctl restart httpd
[root@CentOS1 ~]# curl http://192.168.1.1
lkx
[root@CentOS1 ~]# curl http://192.168.1.10
zy
2、用户个人主页及访问控制
编辑个人主页的设置
[root@CentOS1 ~]# 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>
设置web服务器域名及域名解析
[root@CentOS1 ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName www.lkx.com:80 #取消注释
#保存退出
利用hosts文件做简单的域名解析
[root@CentOS1 ~]# vim /etc/hosts
#添加以下内容
192.168.1.1 www.lkx.com
创建用户个人主页
[root@CentOS1 ~]# useradd lkx
[root@CentOS1 ~]# su - lkx
[lkx@CentOS1 ~]$ pwd
/home/lkx
[lkx@CentOS1 ~]$ mkdir public_html
[lkx@CentOS1 ~]$ echo "lkx user homepage" >public_html/index.html #引号中的内容随便
[lkx@CentOS1 ~]$ exit
登出
调整selinux、给权限
[root@CentOS1 ~]# setenforce 0
[root@CentOS1 ~]# chmod 711 /home/lkx/
设置验证密码
[root@CentOS1 ~]# htpasswd -c /etc/httpd/.passwd lkx
New password:
Re-type new password:
Adding password for user lkx
# /etc/httpd/.passwd 密码存位置
# lkx 用户名
重启apache服务,并且访问
[root@CentOS1 ~]# systemctl restart httpd
访问 http://www.lkx.com/~lkx/index.html
3、源码安装
将这三个文件上传到服务器中
解压并安装apr-1.7.0.tar.gz
[root@CentOS1 ~]# tar zxf apr-1.7.0.tar.gz
[root@CentOS1 ~]# cd apr-1.7.0/
[root@CentOS1 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@CentOS1 apr-1.7.0]# make && make install
解压并安装apr-util-1.6.1.tar.gz
[root@CentOS1 apr-1.7.0]# cd
[root@CentOS1 ~]# tar zxf apr-util-1.6.1.tar.gz
[root@CentOS1 ~]# cd apr-util-1.6.1/
[root@CentOS1 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@CentOS1 apr-util-1.6.1]# make && make install
解压并安装httpd-2.4.39.tar.gz
[root@CentOS1 apr-util-1.6.1]# cd
[root@CentOS1 ~]# tar zxf httpd-2.4.39.tar.gz
[root@CentOS1 ~]# cd httpd-2.4.39/
[root@CentOS1 httpd-2.4.39]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
[root@CentOS1 httpd-2.4.39]# make && make install
启动服务
[root@CentOS1 ~]# /usr/local/httpd/bin/apachectl start
[root@CentOS1 ~]# netstat -anput |grep httpd
关闭服务
[root@CentOS1 ~]# /usr/local/httpd/bin/apachectl stop
[root@CentOS1 ~]# netstat -anput |grep httpd
重启服务
[root@CentOS1 ~]# /usr/local/httpd/bin/apachectl stop
[root@CentOS1 ~]# /usr/local/httpd/bin/apachectl start
[root@CentOS1 ~]# netstat -anput |grep httpd
参数释义:
4、工作模式和切换
工作模式后台特点
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