Apache服务器部署
背景 百度百科:Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。 Nginx:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 可以使用curl -I(大写i)选项仅查看响应头部信息,我们来看一看国内知名网站部署的服务器类型: 不难发现,现在主流的web服务器都采用nginx的部署方式,毕竟在支持高并发方面有着天生的优势。 主流的网站基本采用:lamp/lnmp方式部署web服务器(l——linux,a——apache,n——nginx,m——mysql,p——php) Apache与Nginx对比 ApacheNginx 稳定、对动态请求处理强 擅长处理静态请求 但同时高并发时性能较弱,耗费资源多 高并发处理能力强、擅长处理反向代理、均衡负载 更详细的对比:请看这篇文章 Apache的部署安装 yum install httpd -y ##apache软件 yum install httpd-manual ##apache的手册 systemctl start httpd systemctl enable httpd firewall-cmd --list-all ##列出火墙信息 firewall-cmd --permanent --add-service=http ##永久允许http firewall-cmd --reload ##火墙从新加载策略 /var/www/html ##apache的/目录,默认发布目录 /var/www/html/index.html ##apache的默认发布文件 vim /var/www/html/index.html ##写默认发布文件内容 <h1> hello world </h1>实验结果: 在浏览器输入 #主配置目录 /etc/httpd/conf #主配置文件 /etc/httpd/conf/httpd.conf #子配置目录 /etc/httpd/conf.d/ #子配置文件 /etc/httpd/conf.d/*.conf #默认发布目录 /var/www/html #默认发布文件 index.html #默认端口 80 #默认安全上下文 httpd_sys_content_t #程序开启默认用户 apache #apache日志 /etc/httpd/logs/* httpd配置文件的查看 rpm -ql httpd ##查看安装文件路径 rpm -qc httpd ##查看配置文件名称 rpm -qd httpd ##查看帮助文件 修改Apache默认配置我们在修改之前,首先要确保selinux开启:enforcing。 修改默认端口查看默认端口:netstat -antlupe | grep httpd 修改之前,先查看已有的端口:通过命令semanage port -l | grep http查看 修改没有的端口 1 对于一些非常用端口。比如666,先检测是否占用,netstat -antlupe |grep 666 3 重启发现失败,先把selinux改为0状态,发现可以重启。 4 用semanage port -l | grep http 管理端口列表,添加进去666, semanage port -a -t http_port_t -p tcp 666 5 开启火墙666端口,重启服务。发现可以访问。 默认发布文件就是访问apache时没有指定文件名称时默认访问的文件。这个文件可以指定多个,有访问顺序。 1 在默认发布目录下创建文件vim /var/www/html/test.html写入一个html基本页面。 2 修改主配置文件 vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex index.html test.html ##第164行 ##当index.html不存在时访问test.html当我们删掉index.html的时候,重启服务后发现,默认发布文件已经改变: 1 在主配置文件中添加: DocumentRoot "/westos/html" <Directory "/westos/html"> ##授权,还需要做授权(rht7之后),否则不能访问。 Require all granted </Directory>2 除此之外,因为selinux开启,所以需要修改目录的安全上下文为http模式,才能共享。完成后重启服务。 mkdir -p /www/html/ vim index.html semanage fcontext -a -t httpd_sys_content_t '/www/html(/.*)?' restorecon -RvvF /www/html/ 虚拟主机apache是什么呢? 简单的说虚拟主机apache就是在apache服务器上配置多个虚拟主机,从而把一个服务器提供多站点的服务实现。 更详细的介绍:这篇文章 如何配置虚拟主机1 进入子配置文件目录,/etc/httpd/conf.d/ 这里的内容基本上都是子配置文件,必须以.conf结尾,主配置文件中有说明。 3 创建对应的发布目录: mkdir /var/www/vhost/news -p mkdir /var/www/vhost/video -p在对应的发布目录写对应的发布文件:记得要写成默认 index.html 因为是主配置文件中指定过的。 5 测试 这里楼主也在配置虚拟机站点的时候出现了错误,所以写一个排错思路给大家分析错误原因。 排错思路: 1 先在客户端进行ping 对应域名,能ping通说明客户端没错,否则检查/etc/hosts 2 服务端是否授权vhost.conf 3 服务端的主配置文件 4 服务端的发布文件名,是否为默认发布文件 5 火墙是否有影响? Apache内部的访问控制 基于IP在主配置文件中 写入: <Directory "/var/www/html/test"> Order deny,allow ##列表读取顺序,后读取的列表会覆盖限度去内容的重复部分 Allow from 172.25.254.44 Deny from all </Directory>作为白名单用户: 作为黑名单用户: 注意:后读取的列表会覆盖先读的内容 Order Allow,Deny(先读Allow 再读Deny)次序————黑名单次序 Order Deny,Allow(先读Deny 再读Allow)次序————白名单次序(只有个别能访问) 基于用户 1 需要在/etc/httpd/下创建,目的是方便管理。 htpasswd -cm .apache_auth admin c 创建 m md5 加密 可以--help看参数 .是隐藏文件 当已经创建好文件后,只用-m就行,不然会覆盖之前内容: htpasswd -m .apache_auth mac2 注意:在子配置目录/etc/httpd/conf.d/下创建文件vim adefault.conf 或者直接在子配置目录下刚刚创建的vhost.conf内 写入: <Directory "/var/www/html"> AuthUserFile /etc/httpd/.apache_auth AuthName "Please input your name and password" AuthType basic #Require user admin mac ##针对具体用户的,多个用户用空格隔开 Require valid-user ##针对所有有效用户 </Directory> 分别对应的是: 指定认证文件: 指定认证类型: 指定认证提示符: 允许用户访问 : 隐藏文件下的指定用户可以访问 允许所有有效用户访问: Require 3 完成后重启服务。 Apache支持的语言众多:html,php,python,perl等。 php1 首先需要下载安装php:yum install php -y 3 修改httpd的主配置文件,在默认发布文件中添加index.php,因为按照顺序读取,所以要写道最前面。 4 重启服务,再次访问172.25.254.202,发现已经变成php的网页。 CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。 实验步骤: 3 对脚本加执行权限chmod +x /var/www/html/cgi/index.cgi 5 因为虚拟机selinux开启,所以我们还需要更改其安全上下文为脚本可执行类型httpd_sys_script_exec_t (责任编辑:) |