Linux学习之基础知识——httpd编译安装

xiaoxiao2021-02-28  13

本篇概述

本篇通过httpd的编译安装来演示如何在Linux中编译安装软件。

在之前已经写过了centos中使用 rpm和yum安装软件的方法,实际上,在Linux中安装软件的方法不止一种,编译安装便是其中一种。编译安装可以自己定制想要的功能,并且能够将软件安装于指定的位置,甚至能够在源码的基础上在做修改,对需要特别定制的用户来说,编译安装是很好的解决办法。编译安装作为安装和定制Linux软件的一个重要手段,是我们必不可少的技能。一般的编译安装通常也就三个步骤:./configure-->make-->make install 。

本次演示以CentOS7.4为例。其他版本的安装大同小异,可以自行研究。

编译安装的过程

获取源码

想要编译安装软件首先的获取源码。源码一般都是通过软件的官网或者开发者获得,需要保证源码的完整可用与安全。

本次编译安装httpd,就需要通过Apache官网获取源码。可以通过浏览器在网页进行下载,也可以通过wget命令通过链接下载。网页下载不做详述,进入官网(Apache官网httpd.apache.org)后选择httpd2.4.29版本进行下载。

通过wget命令的方式如下:

]#wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.29.tar.bz2 .

最后的 "." 为下载到当前目录。在本次试验中,选择将其下载到/app目录下,是我的个人目录,诸位下载时可以自行选择。

安装gcc和Development Tools

选择编译安装软件,除了源码,还需要编译安装的工具,如gcc和Development Tools。gcc可以通过yum或者rpm来安装,Development Tools是一个开发编译的工具包组,可以通过yum的包组安装进行配置。这两种安装方式都在前面一篇有过陈述,在此不过多浪费篇幅,具体的操作和命令如下:

  安装gcc

安装Development Tools

需要注意的是,在使用yum进行安装的时候,要注意yum客户端(/etc/yum.repo.d/*.repo)的配置是否正确。本人因为使用本地光盘配置yum时选择了自己自己挂载的目录,导致安装时报错,重新修改路径才完成了安装。

解压源码并了解其中的主要配置文件

下载好的源码是.bz2形式的压缩包,需要解压后才能使用。

]#tar xf httpd-2.4.29.tar.bz2

解压源码

]#cd httpd-2.4.29 ]#ls

进入源码目录并列出其中的文件

查看主要的配置文件

README 软件的介绍

INSTALL         编译安装该软件的介绍。与此处所描述的并无太大差别。

]#cat INSTALL

此处不置图详述,需要的可以自行查看。

configure   安装脚本,配合Makefile.in生产Makefile文件。运行该脚本并配合 -help选项可以查看具体的软件配置方法,如安装目录,日志目录、配置文件等的存放目录以及开启或关闭软件的某些功能以达到定制的目的。若不进行配置则按照默认的配置进行安装,此时就与使用yum安装无异了。

查看configure帮助

Makefile.in     Makefile的模板文件,存放着configure脚本写好的各种配置,接下来的安装与此息息相关。

]#cat Makefile.in其中常用的目录配置如下:

-help     显示帮助信息。 --version     显示版本信息。 --cache-file=FILE     在FILE文件中缓存测试结果(默认禁用)。 --no-create     configure脚本运行结束后不输出结果文件,常用于正式编译前的测试。 --quiet, --silent     不显示脚本工作期间输出的"checking ..."消息。 目录选项 --srcdir=DIR     源代码文件所在目录,默认为configure脚本所在目录或其父目录。 --prefix=PREFIX     体系无关文件的顶级安装目录PREFIX ,默认值一般是 /usr/local 或 /usr/local/pkgName --exec-prefix=EPREFIX     体系相关文件的顶级安装目录EPREFIX ,默认值一般是 PREFIX --bindir=DIR     用户可执行文件的存放目录DIR ,默认值一般是 EPREFIX/bin --sbindir=DIR     系统管理员可执行目录DIR ,默认值一般是 EPREFIX/sbin --libexecdir=DIR     程序可执行目录DIR ,默认值一般是 EPREFIX/libexec --datadir=DIR     通用数据文件的安装目录DIR ,默认值一般是 PREFIX/share --sysconfdir=DIR     只读的单一机器数据目录DIR ,默认值一般是 PREFIX/etc --sharedstatedir=DIR     可写的体系无关数据目录DIR ,默认值一般是 PREFIX/com --localstatedir=DIR     可写的单一机器数据目录DIR ,默认值一般是 PREFIX/var --libdir=DIR      库文件的安装目录DIR ,默认值一般是 EPREFIX/lib --includedir=DIR     C头文件目录DIR ,默认值一般是 PREFIX/include --oldincludedir=DIR     非gcc的C头文件目录DIR ,默认值一般是 /usr/include --infodir=DIR     Info文档的安装目录DIR ,默认值一般是 PREFIX/info --mandir=DIR     Man文档的安装目录DIR ,默认值一般是 PREFIX/man

配置并生成Makefile

运行configure脚本

]#./configure

本次安装选择配置了安装目录(/app/httpd24),软件配置目录(/etc/httpd24),启用了ssl和fcgi(--enable-ssl、--enable-proxy-fcgi),需要配置的属性,全部加在configure脚本的后面即可,在运行脚本的时候会写入Makefile文件。具体需要配置什么请参照Makefile.in文件。

另外,在配置过程中,可能会遇到缺少依赖的情况,查看缺少提少直接使用yum进行安装即可。如本次安装中缺少apr-devel、util-devel、pcre-devel、openssl-devel,直接使用yun install PACKAGE进行安装。

缺少APR

安安装APR

]#yum install apr-devel

安装完APR后,使用命令历史重复执行configure脚本的配置,看是否缺少其他的依赖。

]#./configure #######

缺少APR-util

安装APR-util

]#yum install apr-util-devel 安装完成后,继续执行configure脚本的配置命令,若有缺少的依赖继续安装,直到不再需要安装其他依赖。本次安装所需要的依赖已经在前面都列出了,按照所述自行安装即可。但在实际编译安装时,可能还会遇到其他的依赖,需要自行查找安装,最终完成配置并生成Makefile文件。

已完成的配置

ls查看生成的Makefile文件

此时已完成了编译安装的第一步,接下来就是编译了。

make

直接使用make命令开始编译。若是想要加快编译的速度,可以开启多线程编译,使用make -j 选项,后面加需要启用的线程数即可。线程数是不能超过CPU核心数的,即线程数最大为CPU核心数,再大则无意义。

]#make -j 2此处因为配置的CPU为双核,所以可以开启的最大线程数为2.

开始编译

在完成编译后,会提示是否成功,也可以使用echo $? 来显示命令的返回值,为0则执行成功。否则需要重头开始配置并编译。

]#echo $?

检测显示编译成功,可以开始下一步的安装。

安装:make install

在完成上一步的编译之后,就可以开始安装了。这一步实际上是根据配置将所需要的文件分别复制到相应的目录。使用make install 即可完成。

]#make install

完成后也可以使用echo $? 来检测是否安装成功。

修改路径

在完成安装后,并不能直接通过 apachectl 来启动httpd服务,原因是该软件的二进制程序并不在PATH变量的路径中。所以为了可以直接使用该命令启动服务,需要修改PATH路径来达到目的。

首先需要查看当前PATH变量。

]#echo $PATH

可以发现我们安装httpd的目录并不在PATH中,我们需要手动将其加上去。

创建新的PATH

使用vim在/etc/profile.d目录下新建httpd.sh文件,将httpd的安装路径加到最前面。因为系统在查找路径时会按照PATH变量中的内容以先后顺序进行查找,故越在前面的,越先被执行。

在保存该文件后,还不能直接使用apachectl 来启动服务,查看$PATH会发现返回值还是之前的,并没有改变。因为此时只是改动了文件,但内存中加载的PATH还是原来的路径,此时需要重新加载新的PATH。

]#source /etc/profile.d/httpd24.sh或者

]#. /etc/profile.d/httpd24以上两个命令具有同样的效果。

再次查看PATH会发现返回值已经改变了。此时就可以使用apachectl来启动服务了。

完成PATH的改动后即可启动服务了。

另外,若是安装的软件提供库文件,则还需要加入相应的库文件路径和头文件路径,此外若是需要,还可以加入man帮助的路径。

默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径(注意:有的程序不提供库文件,如本次安装,则无需设置)。

在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;然后执行source *.conf使其生效。

头文件一般在安装目录的include目录下,系统默认扫描头文件的路径是:/usr/include。我们可以在/usr/include下用链接连接到已安装程序的头文件。

ln -s /source/path  /usr/include/dirname

帮助文档一般是安装目录下的man目录,为了可以使用man命令查看程序的帮助文档,需要在/etc/man.config中添加一条MANPATH,指向我们的文档目录。添加方式与添加$PATH类同。

启动服务

在CentOS 7上启动httpd服务的方式很简单,就apachectl一个命令。在此之前使用ss -ntl 来查看单钱系统启用的端口,会发现80端口并未启用。

]#apachectl

启动服务后使用ss -ntl会发现80端口已经启用了。此时就可以通过IP来访问该服务了。

通过ifconfig来获取本机IP,并通过浏览器访问,若是顺利则已经可以访问。

已经可以访问了!虽然有点丑。但这个页面是可以修改的。这个页面存放在安装目录下,是H5写成的,可以自行修改。本次实验路径为(/app/httpd24/htdocs),进入目录后使用ls命令即可看到该文件,可以使用编辑器自己修改内容。

至此,整个编译安装已经基本完成。若是在浏览器中无法访问服务,则需要检查系统是否开启了防火墙和seLinux策略。若已开启,则需要关闭才能正常访问。方法在上一篇配置yum源时已有陈述。

结语

通过编译安装,可以实现软件的自主选择安装和功能定制,是必不可少的技能。

转载请注明原文地址: https://www.6miu.com/read-1400407.html

最新回复(0)