vlambda博客
学习文章列表

Apache:读音类似阿帕奇武装直升机.....

点击上面蓝字“ 关注我们 ”吧


本章主要描述下怎么样用apache搭建web网站 ~

关键字提要
apache httpd :提供 http 服务
http :超文本协议  HTML 超文本标记语言
URL :( Uniform Resource Locator )统一资源定位符
示例 http://www.test.com:80/1/index.html
http:// ssl  安全套接字
www.test.com :IP 也可以,域名更安全
:80 :端口  http默认 对应 80 端口, https默认 对应 443 端口
/1/index.html :网站目录和文件,.html为静态网站,.php为php写的动态网站

配置文件路径:
主配置目录: /etc/httpd/conf
主配置文件: /etc/httpd/conf/httpd.conf
子配置目录: /etc/httpd/conf.d
子配置文件: /etc/httpd/conf.d/*.conf
默认发布目录: /var/www/html/
默认发布文件: index.html

安装apache服务
yum –y install httpd #做的yum安装服务,如果没配置yum源的请先配置,这里就不多说了systemctl start httpd #启动服务systemctl enable httpd #做开机启动

防火墙配置
getenforce #查看selinux运行状态setenforce 0 #临时关闭selinuxselinux开机不自启的配置如下:执行:vi /etc/selinux/config将SELINUX=xxxx 修改为SELINUX=disabled
systemctl status firewalld #检查firewalld是否启动,未启动需执行:systemctl start firewalld;已启动请忽略systemctl enable firewalld #做开机启动netstat -anp |grep httpd #查看httpd所用端口,为80firewall-cmd --add-port=80/tcp #firewalld放开httpd所用80端口firewall-cmd --add-port=80/tcp --permanent #端口做永久生效firewall-cmd --add-service=httpfirewall-cmd --add-service=http --permanent #保险起见,把http service直接添加了firewall-cmd --reload #刷新

访问验证服务
有两种方式可以做访问验证
1、浏览器访问,地址栏 输入 :主机 IP ,会采用默认80端口进入访问
2 系统内 执行命令 curl IP ,回显网页文本;执行命令:curl I IP ,回 显内容加HTTP状态码

步入正题 搞搞网页
简要说明一下啥是静态网页,啥是动态网页和域名:
1 静态页面就是设计者把页面上所有东西都设定好、做死了,然后放上去,不管是谁在任何时候看到的页面内容都是一样的,一成不变(除非手动修改页面内容)。静态html页面文件,可以直接用本地的浏览器打开。
2 动态页面的内容一般都是依靠服务器端的程序来生成的,不同人、不同时候访问页面,显示的内容都可能不同。网页设计者在写好服务器端的页面程序后,不需要手工控制,页面内容会按照页面程序的安排自动更改变换。
3、 什么是域名
●域名,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传 输时标识计算机的电子方位。
●IP地址是Internet主机的作为路由寻址用的数字型标识,人不容易记忆。因而产生了域名这一种字 符型标识。什么叫域名?也就是说这种容易记忆的字符型标识就叫域名。
●通俗的说什么是域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。这也 意味着在全世界没有重复的域名。

静态网页测试
1、删除默认欢迎页(不 要问为什么 删就是了
rm –rf /etc/httpd/conf.d/welcome.conf                    
2 重启httpd服务
systemctl restart httpd
3 创建两个静态网页
cd /var/www/html #进入默认发布目录mkdir 1 2 #创建对应的工作目录1和2echo “hello,a.com” > 1/index.htmlecho “hello,b.com” > 2/index.html #在1和2两个目录下放置两个静态网页,.html后缀
4、检查端口是否可用,关键步骤:有没有被占
netstat -anp|grep 81netstat -anp|grep 82 #这里选用的是81和82,都没有在使用
5、编辑配置文件
vim /httpd/conf.d/8182.conf #创建并编辑一个8182.conf,必须要以.conf后缀###########里面的具体参数也可以参考主配置文件/etc/httpd/conf/httpd.conf写,下面的都是必要参数
listen 81listen 82
<virtualHost *:81>servername a.com #指定网页名称,可以不写,名字随意documentroot /var/www/html/1 #指定服务路径,网站根目录 <directory"/var/www/html/1"> #服务路径内的配置 options Indexes followsymlinks #主页显示,优先index allowoverride none require all granted </directory> #对应开头directory </virtualHost> #本段结尾,对应virtualHost *:81
<virtualhost *:82>servername b.comdocumentroot /var/www/html/2 <directory"/var/www/html/2"> options Indexes followsymLinks allowoverride None require all granted </directory></VirtualHost>#同上,参数释义一致##########
6、配置防火墙
firewall-cmd --add-port=81/tcp #firewalld放开81端口firewall-cmd --add-port=82/tcp #firewalld放开82端口firewall-cmd --add-port=81/tcp --permanent #端口做永久生效firewall-cmd --add-port=82/tcp --permanent #端口做永久生效firewall-cmd --reload #刷新
7 检查及验证
检查
httpd –t #必要检查命令步骤systemctl restart httpd #若无报错,重启服务
验证
浏览器访问,地址栏 输入 :主机 IP:端口 ,示例:192.168.20.20:81,会从81端口进入访问,显示a .com
系统内 执行命令 curl IP:端口 ,回显网页文本,示例:
curl 192.168.20.20:81    #回显a.com
系统内,执行命令:curl I IP:端口 ,回 显内容加HTTP状态码 ,示例:
curl 192.168.20.20:81 #回显HTTP状态码和a.com

用域名访问
1 、创建工作路径
mkdir -p /work/html1mkdir -p /work/html2
2、编辑配置文件
cd /etc/httpd/conf.d/vim yuming.conf##########<VirtualHost *:80>ServerName www.AA.comDocumentRoot /work/html1 <Directory "/work/html1"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory></VirtualHost>
<VirtualHost *:80>ServerName www.BB.comDocumentRoot /work/html2 <Directory"/work/html2"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory></VirtualHost>##########
3 、放置对应网页
echo "我是AA,你知道不" > /work/html1/index.htmlecho "我是BB,你知道不" > /work/html2/index.html
4 、设置dns静态解析
vim /etc/hosts##########192.168.20.20 www.AA.com192.168.20.20 www.BB.com##########
5 检查和重启服务
httpd –t #必要检查命令步骤systemctl restart httpd #若无报错,重启服务
6 、添加防火墙端口
#其实一开始就添加过了,这里再演示一次这个步骤
firewall-cmd --add-port=80/tcpfirewall-cmd --add-port=80/tcp –permanentfirewall-cmd --reload #刷新
7 、系统内测试验证
curl www.AA.comcurl www.BB.com
8 本机windows 测试验证
C:\Windows\System32\drivers\etc\hosts (今天该路径修改该文件,经常遇到没有权限保存的问题,可以先修改为.txt格式,修改保存后再改回原格式)
##########
192.168.20.20 www.AA.com
192.168.20.20 www.BB.com
##########
浏览器地址栏输入 :www .AA.com或www.BB.com

动态网页测试
1 、安装服务
yum -y install php      #PHP依赖于httpd
2 、启动服务
systemctl start httpdsystemctl enable httpd
3 、添加防火墙端口
firewall-cmd --add-port=80/tcpfirewall-cmd --add-port=80/tcp --permanent
4 、编辑主页
echo "" > /var/www/html/index.php或者:rm -rf /etc/httpd/conf.d/welcome.confecho "" > /var/www/html/rrr.php
5 、浏览器地址栏验证:虚拟机IP地址

最后, 补充下Apache 的三种工作模式
Apache  一共有 3 种稳定的  MPM  模式 ( 多进程处理模块 ) ,它们分别是  prefork worker event http-2.2 版本的 httpd 默认的 mpm 工作模式为 prefork 2.4 版本的 httpd 默认是 event 工作模式。可以通过  httpd -V  来查看。
[root@test-CG ~]# httpd -V |grep -i "server mpm"Server MPM: prefork

1、prefork  工作模式
( 作用:用一个进程处理一个用户请求 )
Apache 在启动之初,就预先 fork 一些子进程,然后等待请求进来。之所以这样做,是为了减少频繁创建和销毁进程的开销。每个子进程只有一个线程,在一个时间点内,只能处理一个请求。
优点:成熟稳定,兼容所有新老模块。同时,不需要担心线程安全的问题。
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。而且,它并不擅长处理高并发请求。
2、worker  工作模式
( 作用:一个进程生成多个线程,一个线程处理一个用户请求 )
使用了多进程和多线程的混合模式。它也预先 fork 了几个子进程 ( 数量比较少 ) ,然后每个子进程创建一些线程,同时包括一个监听线程。每个请求过来,会被分配到 1 个线程来服务。线程比起进程会更轻量,
因为线程通常会共享父进程的内存空间,因此,内存的占用会减少一些。在高并发的场景下,因为比起 prefork 有更多的可用线程,表现会更优秀一些。
优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题。
3、event  工作模式
( 用一个线程处理一个用户请求 )
它和 worker 模式很像,最大的区别在于,它解决了 keep-alive 场景下,长期被占用的线程的资源浪费问题。 event MPM 中,会有一个专门的线程来管理这些 keep-alive 类型的线程,当有真实请求过来的时候,
将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力。
HTTP 采用 keepalive 方式减少 TCP 连接数量,但是由于需要与服务器线程或进程进行绑定,导致一个繁忙的服务器会消耗完所有的线程。 Event MPM 是解决这个问题的一种新模型,它把服务进程从连接中分
离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限   制,此时 Event MPM 方式是最有效的,但不能在 HTTPS 访问下工作。


看到这里 本篇就写完啦 如果对文中有误 ,可以提出建议私信我哦~ ~


Apache:读音类似阿帕奇武装直升机.....
END