1、安装httpd服务器。
1、准备工作。
为了避免发生端口冲突,程序冲突等现象,建议卸载使用RPM方式安装的httpd。
##检查是否安装了httpd
[root@localhost ~]# rpm -qa | grep "httpd"
##如果安装了使用下面命令卸载
[root@localhost ~]# rpm -e httpd --nodeps
Apache的配置及允许需要apr、pcre等软件包的支持,因此应从系统光盘镜像中预先安装这些软件及开发包(devel)。
##将光盘挂载到/mnt/目录
[root@localhost ~]# mount /dev/cdrom /mnt/
##查看挂载状态
[root@localhost ~]# df -TH
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 xfs 54G 5.1G 49G 10% /
devtmpfs devtmpfs 494M 0 494M 0% /dev
tmpfs tmpfs 510M 0 510M 0% /dev/shm
tmpfs tmpfs 510M 8.8M 502M 2% /run
tmpfs tmpfs 510M 0 510M 0% /sys/fs/cgroup
/dev/sda1 xfs 1.1G 171M 893M 17% /boot
tmpfs tmpfs 102M 13k 102M 1% /run/user/42
tmpfs tmpfs 102M 0 102M 0% /run/user/0
/dev/sr0 iso9660 11G 11G 0 100% /mnt
##切换到光盘镜像目录的"Packages"目录下
[root@localhost ~]# cd /mnt/Packages/
##安装软件包
[root@localhost Packages]rpm -ivh apr-1.4.8-3.el7_4.1.x86_64.rpm
[root@localhost Packages]rpm -ivh apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
[root@localhost Packages]rpm -ivh cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
[root@localhost Packages]rpm -ivh expat-devel-2.1.0-10.el7_3.x86_64.rpm
[root@localhost Packages]rpm -ivh libdb-devel-5.3.21-24.el7.x86_64.rpm
[root@localhost Packages]rpm -ivh openldap-devel-2.4.44-20.el7.x86_64.rpm
[root@localhost Packages]rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm
[root@localhost Packages]rpm -ivh apr-1.4.8-3.el7_4.1.x86_64.rpm
[root@localhost Packages]rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm
[root@localhost Packages]rpm -ivh pcre-8.32-17.el7.x86_64.rpm
2、源码编译及安装。
源码编译安装httpd服务的过程主要包含解包、配置、编译及安装。
(1)解包
将下载获得的httpd源码包解压并释放到/usr/src目录下,且切换到展开后的源码目录中。
[root@localhost ~]# tar zxvf httpd-2.4.25.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/httpd-2.4.25/
(2)配置
配置选项及其含义可以执行"./configure --help"命令,其中"./"表示当前目录。
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
--prefix:指定将httpd服务程序安装到哪个目录下,如/usr/ local /httpd。
--enable-so:启用动态加载模块支持,使httpd 具备进步扩展功能的能力。
--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。
--enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力。
(3)编译及安装
完成配置以后,执行"make"命令进行编译,将源代码转换为可执行的程序,然后执行"make install"命令完成最后的安装过程。
[root@localhost httpd-2.4.25]# make
[root@localhost httpd-2.4.25]# make install
3、确认安装结果
由于指定的安装目录为/usr/local/httpd,因此httpd服务的各种程序、模块、帮助文件等都将复制到此目录下。(蓝色为目录)
bin:存放httpd服务的各种执行程序文件,包括主程序httpd、服务控制工具apachectl等。
cgi-bin:存放各种CGI程序文件。logs:存放httpd服务的日志文件。
conf:存放httpd 服务的各种配置文件,包括主配置文件 httpd , conf、增强配置子目录extra 等。
htdocs:存放网页文档,包括默认首页文件index,html等。modules:存放httpd服务的各种模块文件。
4、优化执行路径
通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接。
##创建软链接
[root@localhost httpd]# ln -s /usr/local/httpd/bin/* /usr/local/bin
##查看软链接
[root@localhost httpd]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
lrwxrwxrwx 1 root root 30 12月 8 15:21 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
lrwxrwxrwx 1 root root 26 12月 8 15:21 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
这样,在执行相关命令时就不用输入冗长的路径了
[root@localhost httpd]# httpd -v
Server version: Apache/2.4.25 (Unix)
Server built: Dec 8 2023 15:10:27
5、添加httpd系统服务。
CentOS 7系统下,将编译安装的程序添加为系统服务有两种方式:
通过chkconfig命令添加系统服务,然后由systemctl进行管理
在/lib/systemd/system/目录下,手动编写以".service"结尾的单元(unit)配置文件
(1)使用chkconfig添加系统服务
若希望将httpd添加为系统服务,以便通过chkconfig进行管理,需要建立可控的服务脚本。例如,可将apachectl脚本复制为/etc/inti.d/httpd,并在文件开头添加识别配置,然后将其添加为标准的Linux系统服务。
[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost ~]# vim /etc/init.d/httpd
chkconfig:35 85 21 //服务识别参数,在级别3、5中启动;启动和关闭的顺序分别分85、21
将httpd添加为系统服务
[root@localhost ~]# chkconfig --add httpd
(2)建立[service].server配置文件
在/lib/systemd/system/目录下,建立一个以".service"结尾的单元(unit)配置文件,用于控制由systemd控制或监控的httpd服务。配置文件主要分为三个部分,控制单元[unit]的定义、服务[Service]的定义、安装部分[install]。
[root@localhost ~]# vim /lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=graphical.target
httpd.service文件编写完成后,执行命令设置httpd开机自启动
##配置开机自启动
[root@localhost ~]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
##查看自启动状态
[root@localhost ~]# systemctl is-enabled httpd.service
enabled
成功执行后,既可以使用apachectl工具控制httpd服务,也可以使用systemctl命令控制httpd服务。执行"systemctl start httpd.service"等同于"/usr/local/httpd/bin/apachectl start"
2、httpd服务器的基本配置
2.1、配置并启动httpd服务
(1)配置httpd服务
编辑httpd服务的主配置文件httpd.conf,查找配置项"ServerName",在附近添加一行内容"ServiceName www.bdqn.com"。用于设置网站名称。
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
修改httpd.conf文件的配置内容后,使用"apachectl -t"对配置内容进行语法检查或使用"httpd -t"命令。
[root@localhost ~]# apachectl -t
Syntax OK
(2)启动httpd服务
正常启动httpd服务以后,默认将监听TCP协议的80端口
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2023-12-08 16:13:51 CST; 6s ago
[root@localhost ~]# netstat -anpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 30620/httpd
2.2、部署网页文档
对于新编译安装的httpd服务,网站根目录位于/usr/local/httpd/htdocs下,需要将网页文档复制或上传到此目录下。默认提供一个名为index.html的测试网页。
[root@localhost ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
2.3、在客户机中访问Web站点
2.4、查看Web站点的访问情况
httpd服务器使用了两种类型的日志:访问日志和错误日志。分别位于/usr/local/httpd/logs目录下。通过查看访问日志文件access_log可以及时了解Web站点的访问情况。
[root@localhost ~]# tail /usr/local/httpd/logs/access_log
192.168.136.1 - - [08/Dec/2023:16:19:23 +0800] "GET / HTTP/1.1" 200 45
192.168.136.1 - - [08/Dec/2023:16:19:23 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.136.1 - - [08/Dec/2023:16:20:15 +0800] "-" 408 -
192.168.136.1 - - [08/Dec/2023:16:24:57 +0800] "-" 408 -
192.168.136.1 - - [08/Dec/2023:16:24:57 +0800] "-" 408 -
192.168.136.1 - - [08/Dec/2023:16:26:48 +0800] "GET / HTTP/1.1" 304 -