【本文为笔者在学习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 查看详细内容。

Linux学习日记——源码编译Apache的更多相关文章

  1. Linux学习之源码包安装与脚本安装(十八)

    Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...

  2. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  3. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  4. 源码编译apache报错的解决方法

    源码编译apache报错的解决方法   问题介绍 在源码编译安装httpd时,./configure执行无错误,到make时就报错,在网络上搜索了很多文章,很多方法如换apr-util的低版本并不能很 ...

  5. linux http服务源码编译安装详解

    相信大家大多都听过linux 的编译安装,但它到底是怎么把源代码变为自己电脑里可以应用的软件哪?今天,小编就以httpd 为例详细讲解一下. 什么是编译安装——编译:将源代码变为机器可执行的代码文件. ...

  6. 在Linux下用源码编译安装apache2

    Linux下安装一个软件,最好去看下它的官方guide,apache2.4的安装安装guide 0. installation guide http://httpd.apache.org/docs/2 ...

  7. linux下JUCE源码编译依赖库

    JUCE 源码https://github.com/julianstorer/JUCE 想在ubuntu下编译需要提前安装以下依赖库 sudo apt-get install mesa-common- ...

  8. linux下如何源码编译安装vim

    1. 获取源码 git clone https://github.com/vim/vim.git ~/vim cd ~/vim 2. 配置 ./configure --prefix=/home/jel ...

  9. 源码编译apache设置系统启动失败

    文章为转载,亲试成功. Apache无法自动启动,1.将apachectl文件拷贝到/etc/rc.d/init.d 中,然后在/etc/rc.d/rc5.d/下加入链接即可.命令如下:cp /usr ...

随机推荐

  1. boost的单例模式

    template <typename T> struct singleton_default {   private:     struct object_creator     {    ...

  2. 杭电2053 WA

    #include<stdio.h> int main() { ]; while(scanf("%d",&n)!=EOF) { ;i<=;i++) { a[ ...

  3. Selenium3+python自动化008-常用操作

    一.元素常用操作 1. clear()            清除文本 2. send_keys()        模拟输入 3. click()            单击元素 4.get_attr ...

  4. javaScript 计算两个日期的天数相差

    一:计算两个日期相差的天数 1 <html> <head> <meta http-equiv="Content-Type" content=" ...

  5. CentOS6.5 静默安装Oracle 11g过程中提示:Exception in thread “main” java.lang.NoClassDefFoundError

    原来是系统中设置了DISPLAY环境变量,执行: [oracle@qa26 database]$ ./runInstaller  -silent -responseFile /usr/local/or ...

  6. PHP SPL 文件处理(SplFileInfo和SplFileObject)

    SplFileInfo用来获取文件详细信息.SplFileObject遍历.查找指定行.写入csv文件等内容 SplFileInfo用来获取文件详细信息: $file = new SplFileInf ...

  7. [SCOI2008]奖励关_状压动归_数学期望

    Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 20; dou ...

  8. 序列模型(4)----门控循环单元(GRU)

    一.GRU 其中, rt表示重置门,zt表示更新门. 重置门决定是否将之前的状态忘记.(作用相当于合并了 LSTM 中的遗忘门和传入门) 当rt趋于0的时候,前一个时刻的状态信息ht−1会被忘掉,隐藏 ...

  9. CSS - Span 下的width设置不可用?

    解决:Span 下的width设置不可用? 内联元素-span有根据内容自动伸缩的能力,当需要对其宽度设定时,出现无效的情况. Demo:http://jsfiddle.net/JSDavi/ad62 ...

  10. 【JavaScript框架封装】实现一个类似于JQuery的CSS样式框架的封装

    // CSS 样式框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法)[只要是需要使用到this获取到的元素集合这个变量的时候, ...