【本文为笔者在学习Linux 下的软件安装时,尝试使用源码安装Apache 的过程,事后进行一个小小的总结,发现错误望指正。】
一、典型的源码编译安装软件的过程包括以下3步:
1) 运行 configure 命令,并结合必要的参数以生成Makefile ;(读者可以自行百度Makefile 相关知识)
2) 运行 make 命令生成各类模块和主程序;
3) 运行 make install 命令将必要的文件复制到安装目录中。
(以上过程都在对应软件安装包的根目录中进行)
二、安装过程
Linux 系统中,一般是在 /usr/local/src 目录中下载源码包 (不是硬性规定,只是一个习惯),在该目录下可以通过命令:
wegt http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.27.tar.gz 下载。资源来自清华大学开源软件镜像站(https://mirrors.cnnic.cn/),很多镜像资源都可以在里面找到。
下载完成后使用 tar 进行解压,然后进入 /usr/local/src/httpd-2.4.27 目录,进入目录后需要使用 configure 工具生成Makefile ,对于我这样的菜鸟来说只用了最简单的方式生成,因为配置Apache 时可以加入的参数实在是太多了。命令: ./configure --prefix=/usr/local/apache/ 在这之后,configure 会产生很多输出,开始checking 很多编译环境(是够有gcc 工具、软件依赖关系之类的)。
这时候很多人会出现安装失败的报错信息(configure: error: APR not found. Please read the documentation. 没有找到APR,请阅读文档)这时候需要先配置相关依赖,一般来说后面还会出现缺少 apr-util 以及 pcre 的情况。若没有出错则直接跳到第4步即可。(注:1-3步 是报错后配置环境,应该在 /usr/local/ 目录下进行操作,配置完成后检查当前目录是否存在 apr apr-util pcre 三个文件夹,然后再进入到 /usr/local/src/httpd-2.4.27 目录中继续之前操作 )
1 下载包
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
2 安装(下面演示 apr 的安装 其他安装方式相同)
tar -zxf apr-1.4.5.tar.gz
cd apr-1.4.5
./configure --prefix=/usr/local/apr
make && make install (这种组合命令,如果不是在root 下运行,使用 sudo 也只能通过root 运行 make 而 make install 依然没有权限,笔者是通过bash 解决
【sudo bash -c ' make && make install '】)
3 最后在编译Apache 的时候 加上:
./configure --prefix=/usr/local/apache/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/
4 完成上一步之后会在当前目录下生成Makefile 文件,这时候使用make 和 make install 命令安装即可。 命令: make && make install
5 以上操作顺利完成后,Apache 已经安装完成,可以通过命令: /usr/local/apache/bin/apachectl start 打开服务
然后使用 ifconfig 指令查看服务器地址:
6 最后在浏览器中输入域名地址,结果如下安装成功:
这种源码编译的方式,只是体验一下这个过程,熟悉其中的流程以及原理后加深自己的理解,以上方式安装虽然看似很简单,但是是由于使用了简单的编译方式。使用源码编译安装软件其实存在很多弊端,首先,系统中必须存在gcc 工具(对于安全生产有一定的影响);其次,源码编译本身是有很多的可选参数的,这些参数对应着不同的功能,安装时指定了哪些参数,软件就具备哪些功能,而对于不同的使用环境,需求应该是不同的,因此最坏的情况下,需要重新进行编译安装(除一些通过添加模块来添加功能的项目外,这些项目可以不重新编译,只需要编译相应的模块即可)。另外,编译安装的过程耗时很长,并不适用于大规模的项目部署。最后源码编译无法完成软件的管理功能(卸载、升级、检测...)。重在了解,另外RedHat 为了解决源码编译存在的种种不足,使用了更加简单的RPM (RedHat Package Manager)包管理机制。读者可以在 http://man.linuxde.net/rpm 查看详细内容。