1 主要特点
- 开放源代码:这是Apache服务器的重要特性之一,也是其他特性的基础
- 跨平台应用:Apache服务器的跨平台特性使其具有被广泛应用的条件
- 支持各种Web编程语言:这种特性使得Apache具有更广泛的应用领域
- 模块化设计:这为Apache服务器带来了良好的扩展性
- 运行非常稳定:可用于构建具有大负载的Web站点
- 良好的安全性:这是开源软件共同具有的特性
2 安装服务
2.1 判断httpd服务是否已存在(端口被占用)
[root@localhost ~]# netstat -anpt | grep httpd
[root@localhost ~]# netstat -anpt | grep 80
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd
2.2 安装用于源码安装apache的编译器
[root@localhost opt]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本 //c语言编译器
软件包 gcc-c++-4.8.5-44.el7.x86_64 已安装并且是最新版本 //c++编译器
软件包 1:make-3.82-24.el7.x86_64 已安装并且是最新版本 //源代码编译器(源代码转换成二进制文件)
软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本 //perl的接口开发包
软件包 expat-devel-2.1.0-12.el7.x86_64 已安装并且是最新版本 //用于支持网站解析HTML、XML文件
软件包 4:perl-5.16.3-299.el7_9.x86_64 已安装并且是最新版本 //perl语言编译器
软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本 /pcre是一个Perl函数库,包括perl 兼容的正则表达式库
无须任何处理
[root@localhost opt]#
2.3 源码编译及安装
[root@localhost opt]# ls //apr*为httpd2.4之后所需插件
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
解压并将其放至srclib目录下
[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]#
指定安装目录,启用字符集支持
[root@localhost opt]# cd /opt/httpd-2.4.29/ //切换到解压目录下
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ //指定 httpd 服务程序的安装路径
> --enable-so \ //启用动态加载核心模块支持,使 httpd 具备进一步扩展功能的能力
> --enable-rewrite \ //启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
> --enable-charset-lite \ //启动字符集支持,以便支持使用各种字符集编码的页面
> --enable-cgi //启用CGI(通用网关接口)脚本程序支持,便于增强网站的外部扩展应用访问能力
无报错即为成功
编译和安装
[root@localhost httpd-2.4.29]# make && make install
无报错即为成功
2.4 优化管理
优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
添加httpd系统服务
[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd //复制控制脚本
[root@localhost ~]# vim /etc/init.d/httpd //添加以下两项
# chkconfig: 35 85 21 //35级别自动运行 第85个启动 第21个关闭
# description: Apache is a World Wide Web server
[root@localhost ~]# chkconfig --add httpd //将httpd加入到系统管理器
检查语法
[root@localhost ~]# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
2.5 启动服务
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - SYSV: Apache is a World Wide Web server
Loaded: loaded (/etc/rc.d/init.d/httpd; bad; vendor preset: disabled)
Active: active (exited) since 六 2021-06-19 14:10:15 CST; 5s ago
Docs: man:systemd-sysv-generator(8)
Process: 48038 ExecStart=/etc/rc.d/init.d/httpd start (code=exited, status=0/SUCCESS)
6月 19 14:10:15 localhost.localdomain systemd[1]: Starting SYSV: Apache is a World Wide Web server...
6月 19 14:10:15 localhost.localdomain httpd[48038]: AH00558: httpd: Could not reliably determine the server's full...sage
6月 19 14:10:15 localhost.localdomain httpd[48038]: httpd (pid 47947) already running
6月 19 14:10:15 localhost.localdomain systemd[1]: Started SYSV: Apache is a World Wide Web server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# netstat -antp | grep 80
tcp6 0 0 :::80 :::* LISTEN 47947/httpd
[root@localhost ~]#
2.6 浏览网页
3.虚拟主机
Apache虚拟主机就是在一个Apache服务器上配置多个虚拟空间,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录
3.1 基于域名的虚拟主机
3.1.1 在 /etc/hosts 文件中临时配置域名与IP 地址的映射关系 (测试)
[root@localhost ~]# echo "192.168.30.5 www.hello.com" >> /etc/hosts
[root@localhost ~]# echo "192.168.30.5 www.world.com" >> /etc/hosts
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.30.5 www.hello.com
192.168.30.5 www.world.com
[root@localhost ~]#
3.1.2 为虚拟主机准备网页文件
[root@localhost ~]# mkdir -p /var/www/html/hello
[root@localhost ~]# mkdir -p /var/www/html/world
[root@localhost ~]# echo "<h1>www.hello.com</h1>" > /var/www/html/hello/index.html
[root@localhost ~]# echo "<h1>www.world.com</h1>" > /var/www/html/world/index.html
3.1.3 添加虚拟主机配置
模板文件
修改为
3.1.4 加载独立的配置文件
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
[root@localhost ~]# systemctl restart httpd //重启服务使配置生效
3.1.5 查看效果
3.2 基于IP地址的虚拟主机
3.2.1 创建一块虚拟网卡,便于测试
[root@localhost ~]# ifconfig ens33:0 192.168.30.10
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.30.5 netmask 255.255.255.0 broadcast 192.168.30.255
inet6 fe80::20c:29ff:fe23:3d0c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:23:3d:0c txqueuelen 1000 (Ethernet)
RX packets 254195 bytes 325974371 (310.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 84622 bytes 6055498 (5.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.30.10 netmask 255.255.255.0 broadcast 192.168.30.255
ether 00:0c:29:23:3d:0c txqueuelen 1000 (Ethernet)
3.2.2 修改虚拟主机配置
3.2.3 重启服务并测试
3.3 基于端口的虚拟主机
3.3.1 修改虚拟主机配置
3.3.2 修改主配置文件,增加监听端口8080
[root@localhost ~]# vim /etc/httpd.conf
3.3.3 重启服务并测试
4.日志分割
4.1访问日志设置
[root@localhost php-5.6.11]# vi /usr/local/httpd/conf/httpd.conf
失败日志
访问日志
4.2 查看日志
修改系统时间测试日志会不会随着更改
小结
apache服务器在功能、性能等方面都是比较突出的
通过虚拟主机服务可以大大降低网站构建和运行的成本
系统自带的日志分割工具十分便于查看特定的日志