文章目录
背景
看见下面的界面是不是觉得挺有意思的,公司内网的地址存储一些安装包,还有代码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语句,所以是禁止所有客户机访问