Apache服务
一、源码包安装
#安装基础依赖
$ dnf -y install openssl openssl-devel zlib zlib-devel pcre pcre-devel
#解压源码包并解决依赖关系
$ tar -zxf httpd-2.4.62.tar.gz
$ tar -zxf apr-1.7.5.tar.gz
$ tar -zxf apr-util-1.6.3.tar.gz
#解决依赖关系
$ cp -a apr-1.7.5 httpd-2.4.62/src/lib/apr
$ cp -a apr-util-1.6.3 httpd-2.4.62/src/lib/apr-util
#安装支持http2协议的,需要httpd在2.4.17以上;需要openssl在1.0.2及以上
#查看openssl版本
$ openssl version
OpenSSL 3.0.7 1 Nov 2022
#安装nghttp2依赖
$ dnf -y install libnghttp2-1.43.0-5.e19_4.3.x86_64.rpm
$ dnf -y install libnghttp2-devel-1.43.0-5.e19_4.3.x86_64.rpm
#编译、安装,每步执行完用echo $?检测
#prefix:指定安装路径,
#enable-rewrite:开启地址重写,
#enable-so:开启dso(动态共享对象),
#enable-headers:允许修改http的请求头,
#enable-expires:允许客户端缓存,
#enable-modules=most:尽可能安装更多模块,
#enable-deflate:开启对压缩的支持,
#enable-ssl:开启https的支持
#enable-http2: 开启http2协议的支持
$ cd httpd-2.4.62
$ ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so
--enable-headers --enable-expires --enable-modules=most --enable-deflate
--enable-ssl --enable-http2
$ make && make install
#检测配置文件、启动服务
$ /usr/local/apache2/bin/apachectl -t
$ /usr/local/apache2/bin/apachectl start
#添加或修改网页
$ vim /usr/local/apache2/htdocs/index.html
helloworld----------------------------------------------------------------------------------------------------------
客户端测试
#客户端界面访问测试:
http://服务器IP/index.html#命令行使用curl,它是一个命令行访问URL的工具
$ curl localhost
二、服务参数配置
#若访问目录下没有默认网页,允许该目录下所有文件以软链接方式访问
$ vim /usr/local/apache2/conf/httpd.conf
#修改对应网页的设置
#若不存在默认界面,访问网页目录下所有文件的链接
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
#默认缺省界面设置
DirectoryIndex index.html index.php
#删除网站目录下,默认的缺省界面
$ cd /usr/local/apache2/htdocs
$ rm -rf index.html#重启服务
$ /usr/local/apache2/bin/apachectl stop
$ /usr/local/apache2/bin/apachectl start
#在浏览器访问: http://serverIP/
--------------------------------------------------------------------------------#若访问目录下没有默认网页,拒绝访问
$ vim /usr/local/apache2/conf/httpd.conf
#修改对应网页的设置
#若不存在默认界面,则拒绝访问
Options None
AllowOverride None
Require all granted
#删除网站目录下,默认的缺省界面
$ cd /usr/local/apache2/htdocs
$ rm -rf index.html
#重启服务
$ /usr/local/apache2/bin/apachectl stop
$ /usr/local/apache2/bin/apachectl start
#在浏览器访问: http://serverIP/
三、用户访问功能搭建
指定保护目录
#指定目录下创建权限文件,本例子是加在网页根目录,访问任何页面都要验证用户
$ cd /usr/local/apache2/htdocs
$ vim .htaccess
AuthName "welcome to kernel"
#提示信息
AuthType basic
#加密类型
AuthUserFile /usr/local/apache2/htdocs/apache.passwd
#密码文件,文件名自定义。(使用绝对路径)
require valid-user
#允许密码文件中所有用户访问
#创建指定的密码文件、添加允许访问的用户(与系统用户无关)
#注:-c创建密码文件和添加第一个用户、-m添加更多用户;
$ cd /usr/local/apache2
$ ./bin/htpasswd -c htdocs/apache.passwd 访问用户名1
$ ./bin/htpasswd -m htdocs/apache.passwd 访问用户名2
#编辑配置文件,在需要登录认证的目录标签中添加:
$ vim /usr/local/apache2/conf/httpd.conf
#声明被保护目录,没有开启虚拟主机时默认是htdocs目录即可,只要在对应的权限控制目录下创建.htaccess文件即可
Options Indexes FollowSymLinks
#开启权限认证文件.htaccess
AllowOverride All
Require all granted
#重启服务、验证(访问界面后输入用户名和密码才能看到内容)
$ /usr/local/apache2/bin/apachectl -t
$ /usr/local/apache2/bin/apachectl stop
$ /usr/local/apache2/bin/apachectl start
指定IP访问控制
#允许所有、拒绝个别 =>白名单优先
$ vim /etc/httpd/conf/httpd.conf
AllowOverride none
Require all denied
deny from 192.168.66.13
$ systemctl restart httpd
#允许个别、拒绝所有
$ vim /etc/httpd/conf/httpd.conf
AllowOverride none
Require all denied
allow from 192.168.66.13
deny from 192.168.66.0/24
#重启服务、验证(访问界面后输入用户名和密码才能看到内容)
$ /usr/local/apache2/bin/apachectl -t
$ /usr/local/apache2/bin/apachectl stop
$ /usr/local/apache2/bin/apachectl start----------------------------------------------------------------------------------
指定的客户端上测试
四、设置缓存
$ vim /usr/local/apache2/conf/httpd.conf
#此模块默认未启用,请手动启动
LoadModule expires_module modules/mod_expires.so
#添加各文件类型的缓存时间
ExpiresActive on
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 4 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hours"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
#重启服务
$ /usr/local/apache2/bin/apachectl stop
$ /usr/local/apache2/bin/apachectl start










