Apache文件管理自学笔记——映射文件夹和基于单ip多域名配置apache虚拟机

20 篇文章 3 订阅
1 篇文章 0 订阅
本文详细介绍了Apache服务器的安装、配置、端口修改、目录管理、虚拟主机配置等,包括修改默认发布目录、设置访问权限、配置防火墙、处理访问错误及实现单IP多域名的虚拟主机设置。此外,还探讨了Apache的httpd-vhosts.conf配置文件详解。
摘要由CSDN通过智能技术生成

背景

看见下面的界面是不是觉得挺有意思的,公司内网的地址存储一些安装包,还有代码release归档的包,研究了一下。本文主要针对apache服务管理(下图就是),当然还有一个比较火的nginx。
下文是我的笔记
在这里插入图片描述

1.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的默认发布文件

启动之后在浏览器输入 http://ip:port 进行访问,提示

This page is used to test the proper operation of the Apache HTTP server after it has been installed. If you can read this page it means that this site is working properly. This server is powered by CentOS.

翻译了一下:此页面用于测试 Apache HTTP 服务器在安装后的正确操作。如果您可以阅读此页面,则表示此站点正在正常运行。此伺服器由 CentOS 提供动力。
也就是成功部署启动了

2.简单修改index文件——web界面显示内容

vi /var/www/html/index.html		##写默认发布文件内容
<h1> hello world </h1>

然后重新启动 systemctl restart httpd
启动之后在浏览器输入 http://ip:port 进行访问,提示 hello word

3.修改端口号

vi /etc/httpd/conf/httpd.conf

# 7733端口号可以随意修改
Listen 7733

启动之后在浏览器输入 http://ip:7733 进行访问,访问成功

如果防火墙开启,需要执行

firewall-cmd --permanent --add-port=8080/tcp  ##需要火墙允许端口,否则无法访问
firewall-cmd --reload 
systemctl restart httpd 

4.查看端口

 netstat -antlupe | grep httpd
 netstat -anp | grep 80

5.新增默认目录的访问文件

默认发布目录 : /var/www/html/
创建文件vi /var/www/html/test.html写入一个html基本页面。

test.html内容:       <h1> my apache file manager </h1>

修改主配置:vi /etc/httpd/conf/httpd.conf

   对164进行修改:

    163 <IfModule dir_module>
    164     DirectoryIndex index.html test.html
    165 </IfModule>

删除index.html文件,这时会访问test.html文件

rm -rf /var/www/html/index.html

vi /var/www/html/test.html
systemctl restart httpd

6.修改默认发布目录DocumentRoot

  vi /etc/httpd/conf/httpd.conf
	115 # DocumentRoot: The directory out of which you will serve your
    116 # documents. By default, all requests are taken from this directory, but
    117 # symbolic links and aliases may be used to point to other locations.
    118 #
    119 DocumentRoot "/var/www/html"

修改: DocumentRoot "/var/wangyi" 并进行目录的授权

添加内容: (后文显示目录结构会进行补充directory模块参数

		<Directory "/var/wangyi">		##授权,还需要做授权(rht7之后),否则不能访问。
			Require all granted
		</Directory>

编辑访问文件:
DocumentRoot目录/var/wangyi

vi /var/wangyi/t.html
<h1> my apache file 默认目录修改  </h1>

编辑主配置文件:vi /etc/httpd/conf/httpd.conf

        修改164行
	    163 <IfModule dir_module>
		164     DirectoryIndex index.html test.html t.html
		165 </IfModule>

如果开启selinux需要操作:semanage fcontext -a -t httpd_sys_content_t ‘/var/wangyi(/.*)?’
restorecon -RvvF /var/wangyi/
重启:systemctl restart httpd
浏览器访问:http://ip:port

7.让apache映射主机本地目录文件

1.如果/etc/httpd/conf/httpd.conf主配置指定目录是DocumentRoot “/var/wangyi” ,
那么可以在/var/wangyi目录下创建文件夹,如 d

[root@vm-CentOS75-0-151 wangyi]# pwd
/var/wangyi
[root@vm-CentOS75-0-151 wangyi]# ll
总用量 4
drwxrwxrwx 2 root root 111 7月  28 14:54 d

2.创建文件夹后创建.htaccess文件,用于隐藏文件的显示

[root@vm-CentOS75-0-151 wangyi]# cat .htaccess
<Files *> Options Indexes </Files>

3.随后修改主配置文件,如目录8

<Directory />
     AllowOverride none
#    Require all denied
     Require all granted
</Directory>

DocumentRoot "/var/wangyi"
<Directory "/var/wangyi">
        AllowOverride None
        Options Indexes FollowSymLinks
        Allow from all
        Require all granted
</Directory>

8.根目录无法显示目录文件问题

其他目录正常显示,根目录如法正常显示
在这里插入图片描述

在这里插入图片描述
想到welcom界面:

vi /etc/httpd/conf.d/welcome.conf

修改-Indexes成Indexes

<LocationMatch "^/+$">
    Options -Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>

改成

<LocationMatch "^/+$">
    Options Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>

将根目录的index.html删除。
重启服务效果图如下:
在这里插入图片描述

9.访问目录遇到的报错

 Forbidden You don't have permission to access /d/ on this server.

解决办法:vi /etc/httpd/conf/httpd.conf

<Directory />
     AllowOverride none
#    Require all denied
     Require all granted
</Directory>

DocumentRoot "/var/wangyi"
<Directory "/var/wangyi">
        AllowOverride None
        Options Indexes FollowSymLinks
        Allow from all
        Require all granted
</Directory>

在这里插入图片描述
------ok,到这目录映射已经结束了

10.补充

官网提供的帮助手册:http://192.168.0.151:7733/manual/mod/core.html#directory
除了目录文件,限制其他
根据访问地址限制(http请求)

<Location>
  里面参数跟directory一样
</Location>

正则表达式:目录、文件

<Directory "/home/*/punlic_html">  #通配符

</Directory>
<FilesMatch \.(gif|jpe?g|png)$>  #正则:限制……结尾的文件,图片不允许访问.先拒绝,再允许
	Order Deny,Allow
	Deny from all
</FilesMatch>

11.了解一下虚拟主机apache

虚拟主机apache是在一台服务器上运行多个网站。
对同一个服务器上的不同目录进行访问。
如果想知道再多点,自己百度一些apache虚拟主机。
例如:把自己的产品卖给用户,用户去修改自己的配置文件的时候,去修改了别人的配置文件,导致别人的配置文件无法使用,所以apache把一部分配置文件让用户去完成。也就是htaccess文件。

可以在directory配置中把allowoverride 设置成all,不启用上面的条件。

12.配置虚拟apache主机

apache服务器配置段的种类(一)

<DirectoryMatch>
<FilesMatch>
<LocationMatch>

根据.htaccess文件,限制自己目录权限

<FilesMatch "^\.ht">
	Order allow,deny
	Deny from all
</FilesMatch>

基于单ip多域名的案例

vhost.conf

shell命令:ll /etc/httpd/conf.d/
进入目录cd /etc/httpd/conf.d/, vi vhost.conf ,配置一个conf文件(该目录都是conf文件)
写入内容:

Listen 80
NameVirtualHost *:80
<VirtualHost *:80>                      ##指定的发布目录和服务站点。* 查ServerName参数
        ServerName news.mac.com
        DocumentRoot /var/www/vhost/news
        <Directory "/var/www/vhost/news">       ##授权,才都可以访问
                Require all granted
                Allow from all
                Options Indexes FollowSymlinks
                AllowOverride All
                Order Allow,Deny
       </Directory>

</VirtualHost>



<VirtualHost *:80>
        ServerName video.mac.com
        DocumentRoot /var/www/vhost/video
        <Directory "/var/www/vhost/news">       ##授权,才都可以访问
                Require all granted
                Allow from all
                Options Indexes FollowSymlinks
                AllowOverride All
                Order Allow,Deny
       </Directory>

</VirtualHost>

保存,退出。

创建文件夹

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

创建index文件

[root@vm-CentOS75-0-151 conf.d]# vi /var/www/vhost/news/index.html
[root@vm-CentOS75-0-151 conf.d]# cp -a  /var/www/vhost/news/index.html /var/www/vhost/video
[root@vm-CentOS75-0-151 conf.d]# cat /var/www/vhost/news/index.html
news

本次测试用vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.0.151 www.mac.com news.mac.com viedeo.mac.com

重启https systemctl restart httpd
查看的端口是否启动

netstat -anp | grep 80

启动:
在这里插入图片描述

在这里插入图片描述

Apache里的httpd-vhosts.conf详解

首先看下面的配置:

<VirtualHost *:80>
	ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "D:/xampp/htdocs/wherein"
    ServerName www.shop_dev.com
    ErrorLog "logs/wherein.com-error.log"
    CustomLog "logs/wherein.com-access.log" common
	<Directory "D:/xampp/htdocs/wherein"> 
	Options FollowSymLinks IncludesNOEXEC Indexes
	DirectoryIndex index.html index.htm index.php
	AllowOverride all 
	Order Deny,Allow 
	Allow from all 
	Require all granted
	</Directory>
</VirtualHost>

ServerAdmin指令:
语法: ServerAdmin email-address|URL
用来设置服务器返回给客户端的错误信息中包含的管理员邮件地址。便于用户在收到错误信息后能及时与管理员取得联系。

ServerName指令:
语法:ServerName [scheme://] FQDN [:port]
用来设置服务器用于辨识自己的主机名和端口号。主要用于创建重定向URL。

DocumentRoot指令:
语法:DocumentRoot directory-path
用来设置httpd提供服务的目录。即你所在项目入口处的文件夹。

ErrorLog指令:
语法: ErrorLog file-path
来设置当服务器遇到错误时记录错误日志的文件。如果file-path不是以/开头的绝对路径,那么将会被认为是一个相对于ServerRoot的相对路径。

CustomLog指令:
语法: ErrorLog file-path common
设置日志文件,并指明日志文件所用的格式(通常通过格式的名字)。

<Directory 目录路径>…
为主目录或虚拟目录设置权限。
特性:

Options FollowSymLinks IncludesNOEXEC Indexes
在这里插入图片描述
一旦定义允许目录浏览,就会将Web站点的文件夹和文件名结构暴露给黑客。目录浏览还会允许黑客浏览文件并掌握服务器配置信息,所以指定该权限往往带来安全性上的隐患。除非有充足的理由要使用目录浏览,否则应该禁用它。

DirectoryIndex index.html index.htm index.php 设置访问目录后进入的默认文件

AllowOverride all 定义位于每个目录下.htaccess(访问控制)文件中的指令类型。none为禁止使用.htaccess文件

Order Deny,Allow ; Allow from all 设置缺省的访问权限与Allow和Deny语句的处理顺序

  • allow,deny:缺省禁止所有客户机的访问,且Allow语句在Deny语句之前被匹配。如果某条件既匹配Deny语句又匹配Allow语句,则Deny语句会起作用(因为Deny语句覆盖了Allow语句)。

    deny,allow:缺省允许所有客户机的访问,且Deny语句在Allow语句之前被匹配。如果某条件既匹配Deny语句又匹配Allow语句,则Allow语句会起作用(因为Allow语句覆盖了Deny语句)。

栗子:

Order deny ,allow
Deny from baidu.com
Deny from 192.168.66.6

解释:
除了来自baidu.com域和ip地址为192.168.66.6的客户机外,允许所有客户机访问

Order deny ,allow
Allow from 192.168.66.6
Deny from 192.168.66.1

解释:
既匹配Deny语句又匹配Allow语句,由于allow语句覆盖了deny语句,所以是允许所有客户机访问

Order allow ,deny
Allow from 192.168.66.6
Deny from 192.168.66.1

既匹配Deny语句又匹配Allow语句,由于deny语句覆盖了allow语句,所以是禁止所有客户机访问

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值