一、Apache Web服务器简介
1.Apache Web是目前世界使用排名第一的Web服务器软件。Apache服务器的特点是使用简单、速度快、性能稳定、可以作为负载均衡及代理服务器来使用。
2.在企业中Apache最常用的处理模块为Prefork MPM和Worker MPM,Event MPM很少用,默认Apache处理模块为Prefork MPM方式。
3.Prefork MPM工作原理:控制进程Master在最初建立"StartServers"个进程后,为了满足MinSpareServers设置的最小空闲进程,所以需创建第一个空闲进程,等待一秒钟,继续创建两个,依次按照递增指数级创建进程数,最多每秒同时创建32个空闲进程,直到满足至少有两MinSpareServers设置的值为止。Apache的预派生模式不必请求到来时再产生新的进程,从而减少了系统开销以增加性能,该引擎是基于多进程方式提供对外服务,每个进程只有一个线程,每个进程在某个确定的时间只能维持一个连接,优点是稳定,但每个进程占内存也相对较高。
4.Worker MPM工作原理:控制进程Master在最初建立"StartServers"个进程,每个进程会创建ThreadsPerChild设置的线程数,多个线程共享该进程内存空间,同时每个线程独立处理用户的Http请求。该模式使用多个进程,每个进程包括多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合大开发、高流量的Web服务器。Worker MPM缺点是一个线程崩溃,整个进程就会连同其任何线程一起挂掉。
二、Apache Web服务器安装
[root@localhost tools]# wget http://archive.apache.org/dist/httpd/httpd-2.4.29.tar.gz
[root@localhost tools]# tar -xzvf httpd-2.4.29.tar.gz
[root@localhost tools]# cd httpd-2.4.29
[root@localhost httpd-2.4.29]# yum install apr apr-devel apr-util apr-util-devel -y
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/apache2/ --enable-rewrite --enable-so
[root@localhost httpd-2.4.29]# make # 编译
[root@localhost httpd-2.4.29]# make install #安装
[root@localhost local]# /usr/local/apache2/bin/apachectl start
测试:
三、Apache虚拟主机企业应用
Web虚拟主机配置方法有以下三种:
1.基于单IP多个socket端口
2.基于多IP地址一个端口
3.基于单IP一个端口不同域名。
实战步骤如下:
[root@localhost conf]# pwd
/usr/local/apache2/conf
[root@localhost conf]# vim httpd.conf
......
# Virtual hosts
Include conf/extra/httpd-vhosts.conf #去掉前面的#号即可
......
[root@localhost extra]# pwd
/usr/local/apache2/conf/extra
[root@localhost extra]# vim httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2//docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache2//docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
创建www.sky9890.com及www.sky9899.com发布目录,重启Apache服务,并分别创建index.html页面,命令如下:
[root@localhost extra]# mkdir -p /usr/local/apache2/htdocs/{sky9890,sky9899}/
[root@localhost extra]# echo "<h1>www.sky9890.com Pages</h1>">/usr/local/apache2/htdocs/sky9890/index.html
[root@localhost extra]# echo "<h1>www.sky9899.com Pages</h1>">/usr/local/apache2/htdocs/sky9899/index.html
修改配置文件:[root@localhost extra]# vim httpd-vhosts.conf
<VirtualHost *:80> #虚拟机80端口
ServerAdmin 553752017@qq.com #管理员邮箱
DocumentRoot "/usr/local/apache2/htdocs/sky9890" #虚拟主机发布目录。
ServerName www.sky9890.com #虚拟主机完整域名
# ServerAlias www.dummy-host.example.com #别名
RewriteCond %{HTTP_HOST} www.sky9890.com [NC,OR] #NC表示不区分大小写,OR表式或。
RewriteCond %{HTTP_HOST} www.sky9899.com [NC,OR]
RewriteCond %{HTTP_HOST} ^sky9899.com [NC,OR]
RewriteCond %{HTTP_HOST} ^sky9890.com [NC,OR]
RewriteRule ^/(.*)$ http://www.51cto.com [L] #L表示最后一条匹配规则,停止匹配后续规则。将www.sky9890.com、www.sky9899.com、sky9899.com、sky9890.com跳转至www.51cto.com
ErrorLog "logs/www.sky9890.com_error_log"
CustomLog "logs/www.sky9890.com_access_logg" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin 553752017@qq.com
DocumentRoot "/usr/local/apache2/htdocs/sky9899"
ServerName www.sky9899.com
RewriteCond %{HTTP_HOST} www.sky9890.com [NC,OR]
RewriteCond %{HTTP_HOST} www.sky9899.com [NC,OR]
RewriteCond %{HTTP_HOST} ^sky9890.com [NC]
RewriteRule ^/(.*)$ http://www.51cto.com [L]
ErrorLog "logs/www.sky9899.com_error_log"
CustomLog "logs/www.sky9899.com_access_log" common
</VirtualHost>
四、Apache rewrite规则实战
1.rewrite规则也称为规则重写,主要功能实现浏览器访问HTTP URL的跳转。
2.rewrite规则重写的用途如下:
1)对搜索引擎优化友好,利于搜索引擎页面。
2)隐藏网站URL真实地址,浏览器显示更加美观。
3)网站变更升级,可以基于rewrite临时重定向到其他页面。
五、其他配置技能
1)LoadModule rewrite_module modules/mod_rewrite.so #http.conf配置文件中找到该条并把前面的#号去掉。
2)虚拟主机配置段设置如该指令来开启rewrite功能:RewriteEngine on
3)AllowOverride None,改成AllowOverride All
4)将rewrite规则要写入到httpd-vhosts.conf文件中,要写在<VirtualHost *:80>......</VirtualHost>
5)%{ 两符号之间是不能有空格的,否则执行无效果。
6)Windows客户端设置hosts映射,将www.sky9890.com、www.sky9899.com与192.168.153.142进行映射绑定,映射的目的将域名跟IP进行绑定,配置如下:
C:\Windows\System32\drivers\etc\hosts #用记事本打开hosts文件,并添加下列行
192.168.153.142 www.sky9890.com
192.168.153.142 www.sk9899.com
192.168.153.142 sky9890.com
192.168.153.142 sky9899.com
六、测试结果如下:
在浏览器中分别输入上述四个地址,都会自动跳转到如下界面: