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>

实验结果:
在浏览器输入http://ip
能看到index.html网页正常显示

Apache的基础信息

目录 位置
#主配置目录 /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查看

我们进入主配置文件,进行端口修改,先修改为已有端口。例如:8080

vim /etc/httpd/conf/httpd.conf
Listen 8080 ##修改默认端口为8080(第42行)
firewall-cmd —permanent —add-port=8080/tcp ##需要火墙允许端口,否则无法访问
firewall-cmd —reload
systemctl restart httpd

修改没有的端口

  1. 对于一些非常用端口。比如666,先检测是否占用,netstat -antlupe |grep 666
  2. 然后修改配置文件改为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>

  1. 除此之外,因为selinux开启,所以需要修改目录的安全上下文为http模式,才能共享。完成后重启服务。

mkdir -p /www/html/
vim index.html
semanage fcontext -a -t httpd_sys_content_t ‘/www/html(/.*)?’
restorecon -RvvF /www/html/

如何配置虚拟主机

  1. 进入子配置文件目录,/etc/httpd/conf.d/ 这里的内容基本上都是子配置文件,必须以.conf结尾,主配置文件中有说明。
  2. 在这里建立一个虚拟机文件 vhost.conf
写入内容:
	<VirtualHost _default_:80>		##默认,意思是除了指定的网站,都访问这里的发布目录
		DocumentRoot /var/www/html	
		CustomLog logs/default.log combined		###站点日志combined标示四种日志的集合
	</VirtualHost>
	<VirtualHost *:80>			##指定的发布目录和服务站点。* 查ServerName参数
		ServerName news.mac.com
		DocumentRoot /var/www/vhost/news       
		CustomLog logs/news.log combined
	</VirtualHost>
	<Directory "/var/www/vhost/news">	##授权,才都可以访问
		Require all granted
	</Directory>

	<VirtualHost *:80>
		ServerName video.mac.com
		DocumentRoot /var/www/vhost/video
		CustomLog logs/video.log combined
	</VirtualHost>
	<Directory "/var/www/vhost/video">
		Require all granted
	</Directory>

  1. 创建对应的发布目录

mkdir /var/www/vhost/news -p
mkdir /var/www/vhost/video -p

在对应的发布目录写对应的发布文件:记得要写成默认 index.html 因为是主配置文件中指定过的。
  1. 浏览器在哪里就在那里做本地解析(真机) 在真机中写入对应ip 的域名

排错思路

这里楼主也在配置虚拟机站点的时候出现了错误,所以写一个排错思路给大家分析错误原因。

排错思路:

  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 Mac

  1. 注意:在子配置目录/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 
  1. 完成后重启服务。
  2. 输入ip,测试,发现需要登录才能访问,输入刚刚的用户和密码即可。
    注意:因为浏览器有缓存记录,所以需要清理缓存,火狐浏览器默认是Ctrl+shift+Del

Apache支持的语言

Apache支持的语言众多:html,php,python,perl等。

php

  1. 首先需要下载安装php:yum install php -y
  2. 写一个php脚本:
vim /var/www/html/index.php
<?php
	phpinfo();
?>
  1. 修改httpd的主配置文件,在默认发布文件中添加index.php,因为按照顺序读取,所以要写道最前面。
  2. 重启服务,再次访问,发现已经变成php的网页。

CGI

CGI 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与WEB服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的过程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

实验步骤:
  1. 我们可以打开apache官方手册查看:对应cgi示例
  2. 创建cgi目录以及对应的cgi文件

mkdir -p /var/www/html/cgi
vim /var/www/html/cgi/index.cgi
写入:
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
print `date`;

  1. 对脚本加执行权限 chmod +x /var/www/html/cgi/index.cgi
  2. 要在子配置文件中对其授权服务————在web可执行脚本,我们可以在官方手册上找到。
  3. 因为虚拟机selinux开启,所以我们还需要更改其安全上下文为脚本可执行类型httpd_sys_script_exec_t

作者
分类 网站建设, 电脑网络

评论

本文评论功能已关闭。

← 较早的 较新的 →

相关文章