Apache概述
'''
Apache HTTPD Server 简称 Apache,是 Apache 软件基金会的一个开源的网页服务器, 可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,
是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编 译到服务器中!Apache HTTP 服务器是一个模块化的服务器,
各个功能使用模块化进行插拔! 目前支持 Windows, Linux, Unix 等平台!
Apache 软件基金会(也就是 Apache Software Foundation,简称为 ASF),是专门为运 作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,
这个开源软件项目就是 Apache 项目!那么我们的 HTTPD 也只是 Apache 的开源项目之一!
主要的开源项目:HTTP Server,Ant,DB,iBATIS,Jakarta,Logging,Maven,Struts, Tomcat,Tapestry,Hadoop 等等。只是最有名的是 HTTP Server,
所以现在所说的 Apache 已 经就是 HTTPD Server 的代号了! 我们还见的比较多的是 Tomcat, Hadoop 等项目官方网站:
'''
Apache安装使用
安装
[root@server ~]# yum install -y httpd # 安装Apache服务
[root@server ~]# yum install -y elinks # 安装字符浏览器
[root@server ~]# yum -y install httpd mysql mysql-server php php-mysql # 创建LAMP环境
服务启动
[root@server ~]# systemctl start httpd # 启动
[root@server ~]# netstat -aunpt | grep 80 # 监听端口号
配置文件介绍
ServerRoot "/etc/httpd" # http的根目录
Listen 80 # http默认监听的端口号
Include conf.modules.d/*.conf # conf.modules 当前目录下所有的conf文件都生效
User apache # http的属主
Group apache # http的属组
ServerAdmin root@localhost # http管理员邮箱
ServerName www.example.com:80 # 站点的域名 默认被注释 此时启动Apache服务很缓慢
AddDefaultCharset UTF-8 # 网站的编码格式
DocumentRoot "/var/www/html" # HTTP默认的主目录
LogLevel warn # 日志等级
<Directory "/var/www/html">
Options:配置在特定目录使用哪些特性
Indexes:当用户访问该目录的时候如果找不到指定文件(例如:index.html)则返回该目录下文件列表
FollowSymLinks:在该目录下允许文件系统使用符号链接
AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):
None:当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。
Require all granted # 设置用户访问权限
</Directory>
web服务搭建
修改默认首页
'''
1:部门内部搭建一台 WEB 服务器,采用的 IP 地址和端口为 1.1.1.1:80,首页采用 index.html文件。
2:管理员 E-mail 地址为 srcoder@163.com,网页的编码类型采用 UTF-8,所有网站资源都存放
3:在/var/www/html 目录下,并将 Apache 的配置文件根目录设置为/etc/httpd 目录。
'''
[root@server ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak # 备份配置文件
[root@server html]# vim /var/www/html/index.html # 配置默认访问首页
Welcome to Apache index # 添加首页访问信息
[root@server html]# vim /etc/httpd/conf/httpd.conf
ServerAdmin srcoder@163.com # 管理员邮箱
ServerName 1.1.1.1:80 # 监听的IP地址与端口
Timeout 60 # 请求页面超时时间
<IfModule dir_module>
DirectoryIndex index.html index.php # 指定默认首页
</IfModule>
[root@server conf.d]# vim /etc/httpd/conf.d/welcome.conf
# 注释如下信息 默认的Apache首页
# <LocationMatch "^/+$">
# Options -Indexes
# ErrorDocument 403 /.noindex.html
# </LocationMatch>
[root@server conf.d]# systemctl restart httpd.service # 重启服务
更改web网站根目录
[root@server~]# mkdir /var/www/html/bbs # 创建测试目录
[root@server ~]# cp /var/www/html/index.html /var/www/html/bbs/ # 添加测试数据
[root@server ~]# vim /etc/httpd/conf/httpd.conf # 修改配置文件
DocumentRoot "/var/www/html/bbs" # 修改根目录
<Directory "/var/www/html/bbs">
Options Indexes FollowSymLinks
AllowOverride None
<RequireALL>
Require ip 1.1.1.2 # 仅仅允许访问的IP(客户机地址)
Require not ip 1.1.1.188 # 不允许访问的IP地址 (物理机地址 )
</RequireALL>
</Directory>
Require all granted #允许所有
Require all denied #拒绝所有
Require method http-method [http-method] ... #允许,特定的 HTTP 方法
Require user userid [ userid ] ... #允许,特定用户
Require group group-name [group-name] ... #允许,特定用户组
Require valid-user #允许,有效用户
Require ip 10 172.20 192.168.2 #允许 特定 IP 和网段
Require not ip 10 172.20 192.168.2 #不允许 特定 IP 和网段
虚拟目录
# 1:将/usr/local/phpdata 目录通过虚拟目录功能添加到网站根目录。
# 2:当访问 http://1.1.1.1/phpdata/ 时,就可以访问目录/usr/local/phpdata 中的内容
[root@server ~]# mkdir /usr/local/phpdata # 创建别名访问的目录
[root@server ~]# echo Welcome to Alisa Phpdata > /usr/local/phpdata/index.html # 创建访问的内容页面
[root@server ~]# vim /etc/httpd/conf/httpd.conf
Alias /phpdata/ "/usr/local/phpdata/"
<Directory "/usr/local/phpdata">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
[root@server ~]# systemctl restart httpd
Apache禁止显示目录
[root@server ~]# rm -fr /var/www/html/index.html # 删除默认存在的首页
[root@server ~]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
Options Indexes FollowSymLinks # 修改之前
Options FollowSymLinks # 删除改行的indexs
AllowOverride None
Require all granted
</Directory>
[root@server ~]# systemctl restart httpd
Apache软链接
[root@server ~]# ln -s /etc/passwd /var/www/html/passwd # 创建软链接
[root@server ~]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
Options Indexes FollowSymLinks # 修改之前
Options Indexes # 删除改行的FollowSymLinks
AllowOverride None
Require all granted
</Directory>
[root@server ~]# systemctl restart httpd
用户认证
# 1:通过用户认证的方式,对网站下/usr/local/phpdata/目录进行保护
# 2:设置/usr/local/phpdata/目录,只能通过用户名密码方式访问
[root@server ~]# touch /etc/httpd/conf/passwd.secret # 创建保存用户名+密码的文件
[root@server ~]# vim /etc/httpd/conf/httpd.conf
<Directory "/usr/local/phpdata">
Options Indexes FollowSymLinks
AllowOverride None
authtype basic # 认证类型
authname "my web site" # 指定认证名称 认证名称在需要认证的时候弹出显示给用户的
authuserfile /etc/httpd/conf/passwd.secret # 存储用户名+密码的文件
require valid-user # 指定有效用户才能访问(在authuserfile 都属于有效用户)
</Directory>
[root@server ~]# systemctl restart httpd
[root@server ~]# htpasswd -cm /etc/httpd/conf/passwd.secret SR # -c:添加一个文件 -m:使用md5方式使密码密文保存 SR:保存的用户
[root@server ~]# htpasswd /etc/httpd/conf/passwd.secret 木子 # 除第一个用户以为 以后都不需要加-c参数 如果加了后面创建的用户会覆盖前面的
[root@server ~]# cat /etc/httpd/conf/passwd.secret # 查看保存的文件密码
Apache三种搭建方式
基于不同的IP地址
[root@server ~]# ifconfig ens37:1 1.1.1.66 netmask 255.255.255.0
[root@server html]# echo www.test66.com > /var/www/html/bbs/index.html # 添加页面内容 test66中的66位IP地址
[root@server ~]# vim /etc/httpd/conf.d/test.conf # 添加名为test.conf的配置文件
<VirtualHost 1.1.1.1:80>
ServerAdmin srconder@163.com # 邮箱
DocumentRoot /var/www/html/ # 根目录
ServerName dummy-host.example.com # 域名
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 1.1.1.66:80>
ServerAdmin srconder@163.com
DocumentRoot /var/www/html/bbs/
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
[root@server conf.d]# systemctl restart httpd.service
[root@client ~]# curl 1.1.1.1
[root@client ~]# curl 1.1.1.66
基于不同域名
[root@server ~]# vim /etc/httpd/conf.d/test.conf
<VirtualHost *:80>
ServerAdmin srconder@163.com # 允许所有IP
DocumentRoot /var/www/html/
ServerName www.test1.com
ErrorLog logs/www.test1.com-error_log
CustomLog logs/www.test1.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin srconder@163.com
DocumentRoot /var/www/html/bbs/
ServerName www.test66.com
ErrorLog logs/www.test66.com-error_log
CustomLog logs/www.test66.com-access_log common
</VirtualHost>
[root@server ~]# systemctl restart httpd.service
[root@client ~]# vim /etc/hosts
1.1.1.1 www.test1.com
1.1.1.66 www.test66.com
[root@client ~]# elinks 1.1.1.1 # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关
[root@client ~]# elinks 1.1.1.66
基于不同的端口访问
[root@server ~]# vim /etc/httpd/conf/httpd.conf
Listen 8080 # 配置多个监听端口
[root@server ~]# vim /etc/httpd/conf.d/test.conf
<VirtualHost *:80>
ServerAdmin srconder@163.com
DocumentRoot /var/www/html/
ServerName www.test1.com
ErrorLog logs/www.test1.com-error_log
CustomLog logs/www.test1.com-access_log common
</VirtualHost>
<VirtualHost *:8080>
ServerAdmin srconder@163.com
DocumentRoot /var/www/html/bbs/
ServerName www.test1.com
ErrorLog logs/www.test1.com-error_log
CustomLog logs/www.test1.com-access_log common
</VirtualHost>
[root@server ~]# systemctl restart httpd.service
[root@client ~]# elinks 1.1.1.1 # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关
[root@client ~]# elinks 1.1.1.1:8080 # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关