apache官网
apache的特点:
开放源代码:由ASF(apache软件基金会)管理和维护
跨平台应用:可以运行在Linux、Unix、Windows
支持各种web编程语言:支持的网页语言Perl、PHP、Python、Java、HTML、ASP(微软)
模块化设计:尽可能使用标准的模块的方式实现其专有技术
运行非常稳定:可用于构建具有高负载访问量的web站点
良好的安全性:相对较好的安全性(开源软件共性)。apache维护团队会及时对已发现的漏洞提供修补程序。
apache的主要版本:
1.X:具有非常好的兼容性、稳定性(最高版本1.3)
2.X:配置语法和管理风格有所改变,支持HTTPS协议
安装httpd服务器
- 准备工作:
[root@2920 ~]# rpm -e httpd --nodeps #卸载使用RPM方式安装的httpd
安装apr、pcre等软件包及其开发包(devel)
[root@2920 ~]# mount /dev/sr0 /mnt/
[root@2920 ~]# cd /mnt/Packages/
[root@2920 Packages]# rpm -ivh apr-1.4.8-3.el7_4.1.x86_64.rpm
[root@2920 Packages]# rpm -ivh apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
[root@2920 Packages]# rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh expat-devel-2.1.0-10.el7_3.x86_64.rpm
[root@2920 Packages]# rpm -ivh libdb-devel-5.3.21-24.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh openldap-devel-2.4.44-20.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh cyrus-sasl-2.1.26-23.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm
[root@2920 Packages]# rpm -ivh pcre-8.32-17.el7.x86_64.rpm
- 源码编译并安装
解包
[root@2920 ~]# curl -O http://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz
[root@2920 ~]# tar zxvf httpd-2.4.25.tar.gz -C /usr/src/
[root@2920 ~]# cd /usr/src/httpd-2.4.25/
配置
[root@2920 httpd-2.4.25]#./configure \ #配置
--prefix=/usr/local/httpd \ #指定安装位置/usr/local/httpd
--enable-so \ #启用动态加载模块支持,增加扩展能力
--enable-rewrite \ #启用网页地址重写功能,用于网站优化和目录迁移维护
--enable-charset-lite \ #启用CGI脚本程序支持,便于扩展网站的应用访问能力
--enable-cgi
编译并安装
[root@2920 httpd-2.4.25]#make -j 2 #编译,-j指定使用几个CPU计算
[root@2920 httpd-2.4.25]#make install #安装
- 确认结果
[root@2920 ~]# ls /usr/local/httpd/
bin cgi-bin error icons logs manual
build conf htdocs include man modules
bin:存放服务执行程序文件(主程序httpd、服务控制工具apachectl等)
cgi-bin:存放CGI程序文件
logs:存放日志文件
conf:存放配置文件(主配置文件httpd.conf、增强配置子目录extra等)
htdocs:存放网页文档(默认首页文件 index.html 等)
modules:存放模块文件
- 优化执行路径
[root@2920 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #软链接
lrwxrwxrwx 1 root root 30 9月 29 13:23 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
lrwxrwxrwx 1 root root 26 9月 29 13:23 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
[root@2920 ~]# httpd -v #查看程序版本
Server version: Apache/2.4.25 (Unix)
Server built: Sep 28 2020 16:40:58
- 添加httpd系统服务
[root@2920 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@2920 ~]# vim /etc/init.d/httpd
#!/bin/sh
# chkconfig: 35 85 21 #在启动级别3和5中启动;启动和关闭顺序分别为85、21
[root@2920 ~]# chkconfig --add httpd #将httpd服务添加为系统服务
[root@2920 ~]# chkconfig --level 35 httpd on #设置httpd服务开机自启
[root@2920 ~]# systemctl is-enabled httpd.service #查看httpd服务的自启状态
httpd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig httpd --level=5
enabled
###httpd服务器的基本配置
- 确定网站名称、IP地址
申请一个合法的互联网IP地址和完整的网站域名
客户机所使用的DNS服务器可以解析该网站域名
web服务器本机中/etc/hosts文件中添加相应的映射记录以提高本地解析速度 - 配置并启动httpd服务
配置httpd服务
[root@2920 ~]# vim /usr/local/httpd/conf/httpd.conf
/ServerName
ServerName www.flag2920.com:80
[root@2920 ~]# apachectl -t #检查语法错误
Syntax OK
[root@2920 ~]# httpd -t #等同apachectl -t
Syntax OK
启动httpd服务
[root@2920 ~]# netstat -anptu | grep httpd
tcp6 0 0 :::80 :::* LISTEN 6528/httpd
- 部署网页文档
[root@2920 ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
- 在客户机中访问web站点
- 查看web站点的访问情况
[root@2920 ~]# tail /usr/local/httpd/logs/access_log
192.168.100.38 - - [30/Sep/2020:15:54:47 +0800] "GET / HTTP/1.1" 200 45
192.168.100.38 - - [30/Sep/2020:15:54:47 +0800] "GET /favicon.ico HTTP/1.1" 404 209
###httpd.conf配置文件
- 全局配置项
ServerRoot "/usr/local/httpd" #服务器根目录即安装目录
Listen 80 #监听的端口号,默认为80
User daemon #运行httpd进程时的用户身份,默认为daemon
Group daemon #运行httpd进程是的组身份验证,默认为daemon
ServerAdmin you@example.com #管理员E-mail地址,可通过此邮箱地址及时联系web站点管理员
ServerName www.flag2920.com:80 #web站点的完整主机名(主机名+域名)
DocumentRoot "/usr/local/httpd/htdocs" #网站根目录,网页在系统中实际存放的路径
<IfModule dir_module>
DirectoryIndex index.html #网站默认索引页(首页),多个首页文件用空额
</IfModule>
ErrorLog "logs/error_log" #错误日志文件的路径,默认logs/error_log
LogLevel warn #记录日志的级别,默认warn(警告)
CustomLog "logs/access_log" common #访问日志文件的路径、默认路径为logs/access_log、类型为common(通用格式)
#Include conf/extra/httpd-default.conf
PidFile:设置用于保存httpd进程号(PID)的文件,默认保存在地址为logs/httpd.pid,logs目录位于Apache的服务器根目录下。
AddDefaultCharset:设置站点中的网页默认使用的字符集编码,如utf-8,gb2312等
Include:包含另一个配置文件的内容,可以实现讲一些特殊功能的配置放到一个单独的文件中,在使用Include配置项将其包含到httpd。conf文件中,这样便于独立进行配置功能的维护而不影响主配置文件。
- 区域配置文件
<Directory /> #定义“/”目录区域的开始
Options FollowSymLinks #控制选项,允许使用符号链接
AllowOverride none #不允许隐含控制文件中的覆盖配置
Require all denied #禁止任何人访问此区域
</Directory> #定义“/”目录区域的结束
在以上区域定义中,设置了一个根目录的区域配置,添加的访问控制相关配置只对根目录有效,不会作用于全局和其他目录区域。
注意:这里的根目录是指配置httpd服务器的根目录(ServerRoot所设置的值),不是CentO S系统的根目录。
###实验案例
环境:
Ultra公司根据其信息化建设要求,需要构建一台独立配置的网站服务器。考虑到站点的运行效率、稳定性及可扩展性等因素,要求在CentOS 7系统中构建 httpd 服务器,并使用httpd-2.4.25源代码方式进行安装。
需求描述:
编译安装httpd服务器,要求支持动态模块扩展、地址重写、多字符集。
网站名称设置为www.Ultra.com.默认首页设置为index.html和index.php。
将/usr/share/doc/HTML/zh-CN/目录下的index.html复制到网站根目录下并改名为redhat。
在浏览器中分别访问http://www.Ultra.com/redhat与http://www.Ultra.com/,查看不同的测试界面。
步骤:
Step1:编译安装httpd软件包。
Step2:配置并启动httpd服务器。
Step3:测试Web站点。