【Linux基础服务教程】httpd(Apache)安装和配置
点我查看第二期教程单服务器配置多网站
一、httpd服务软件介绍
1.部署web服务器常用软件
- Linux:
- httpd、nginx、tomcat
- Windows:
- IIS
2.httpd(Apache)介绍
- 构建web服务器
- 只能处理静态页面
- 官网:https://httpd.apache.org/
3.httpd(Apache)软件特性
- 开源、跨平台的
- 模块化软件
- 支持虚拟主机功能
- 支持https虚拟主机
- 支持url重写
- 支持缓存
二、安装并启动httpd(Apache)
1.安装
[root@localhost ~]# yum install -y httpd
2.设置开机自启动
[root@localhost ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
3.默认服务端口
- 80/TCP
[root@localhost ~]# netstat -antp | grep http
tcp6 0 0 :::80 :::* LISTEN 6860/httpd
查看进程
- 父进程
- 管理子进程、记录日志、读取配置文件
- 子进程
- 用于接收、处理客户端请求
[root@localhost ~]# ps -elf | grep http
4 S root 6860 1 0 80 0 - 56017 poll_s 13:53 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache 6861 6860 0 80 0 - 56017 inet_c 13:53 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache 6862 6860 0 80 0 - 56017 inet_c 13:53 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache 6863 6860 0 80 0 - 56017 inet_c 13:53 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache 6864 6860 0 80 0 - 56017 inet_c 13:53 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
5 S apache 6865 6860 0 80 0 - 56017 inet_c 13:53 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
4.测试访问web服务器
浏览器端访问:https://服务器IP #例:服务器IP为127.0.0.1 浏览器访问http://127.0.0.1即可
Linux端访问:curl 服务器IP ##例:服务器IP为127.0.0.1 命令访问curl 127.0.0.1即可
如果提示没有curl命令,请使用yum安装
yum install -y curl
5.删除默认的页面
[root@localhost ~]# rm -rf /etc/httpd/conf.d/welcome.conf
[root@localhost ~]# systemctl restart httpd
6.新建一个自己的测试页面
[root@localhost ~]# vim /var/www/html/index.html
<h1>index.html</h1>
三、httpd(Apache)相关配置文件
1.主配置文件
/etc/httpd/conf/httpd.conf
2.子配置文件
/etc/httpd/conf.d/*.conf
3.模块路径和模块配置文件
/etc/httpd/modules
/etc/httpd/conf.modules.d/*.conf
4.PID文件
- 每次重启服务后PID文件都会重置
- 当服务停止后PID文件自动消失
/etc/httpd/run
5.日志文件
- access_log 访问日志
- error_log 错误日志
/var/log/httpd
access_log error_log
6.网站默认数据目录
/var/www/html
四、主配置文件内容解释/etc/httpd/conf/httpd.conf
1.指定httpd(Apache)工作目录
ServerRoot "/etc/httpd" #非必要情况不要修改
2.指定监听端口
Listen 192.168.140.10:80 #监听某个IP的80端口
Listen *:80 #监听所有IP上的80端口
3.加载子配置文件
Include conf.modules.d/*.conf
4.指定启动进程的用户和组
User www
Group www
5.指定管理员邮箱(需要提前配置SMTP服务)
ServerAdmin root@localhost
6.指定网站主机名(域名)
ServerName test1.linux.com
7.指定网页目录
DocumentRoot "/var/www/html" #一般关联权限
8.指定默认网站文件名
<IfModule dir_module>
DirectoryIndex index.html #默认为index.html可以更改成其他名字,将来访问域名或者IP会直接调用自定义的文件名
</IfModule>
9.错误日志文件、级别
ErrorLog "logs/error_log"
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel error
10.访问日志名称、记录格式
CustomLog "logs/access_log" combined
web访问量衡量标准
- PV Page View 页面访问量
- UV User View 用户访问量
11.自定义访问日志的记录格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- %h 客户端地址
- %l web认证用户
- %u windows用户
- %t 访问时间
- %r 请求方法 文件名称 HTTP协议版本
- %s 状态码
- %b 响应数据的大小
- %{Referer}i 超链接地址
- %{User-Agent}i 浏览器类型
12.长链接配置(客户端与服务端通信)
KeepAliveTimeout 5
MaxKeepAliveRequests 100
13.目录权限与授权
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- options
- 客户端访问对应目录下的文件时受什么影响
- Indexes
- 无index.html首页时,列出所有文件
- FollowSymLinks
- 允许网页目录下的软链接文件被正常访问
- require 客户端访问认证
- all granted 允许所有用户访问
- ip 10.1.1.1 仅允许某个IP访问
- not ip 10.1.1.1 屏蔽某个IP访问
- valid-user 输入用户名密码访问
<RequireAll>
Require all granted
Require not ip 10.252.46.165 #允许所有用户访问除了这个IP(黑名单机制)
</RequireAll>
基于用户名和密码访问
创建认证用户
htpasswd -c 秘钥文件存放位置 用户
[root@localhost ~]# htpasswd -c /etc/httpd/.webuser martin
New password: #输入密码(不会显示)
Re-type new password: #确认密码
Adding password for user martin
[root@localhost ~]# cat /etc/httpd/.webuser #这个认证文件及其重要
martin:$apr1$6KV5I5w.$6iQ5ip.1bF3la2pHq9lX4/
修改某个页面访问权限
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
........................
AuthType Basic
AuthName "Need to login: " #自定义提示语句
AuthUserFile "/etc/httpd/.webuser" #指定秘钥文件位置
Require valid-user
</Directory>
重启服务生效
[root@localhost ~]# systemctl restart httpd