【本文为笔者在学习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. ML一些简单的资源

    参考文献及推荐阅读 维基百科,http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm: 机器学习中的相似性度量,http://www.cnb ...

  2. Oracle 11g XE 与 Oracle SQL Developer 的配置与使用(重制版)

    Oracle 11g XE 与 Oracle SQL Developer 的配置与使用(重制版) 前提概要 项目上需求要适应Oracle数据库,当然这和某EF框架也有关. 因为Oracle 的表名和列 ...

  3. LightOJ 1422 Halloween Costumes 【 区间dp 】

    区间dp的第一题----- 看题解看了好多~~终于看懂了---55555 dp[i][j] 表示第i天到第j天至少需要多少件衣服 那么第i件衣服只被第i天占用的话, dp[i][j] = dp[i+1 ...

  4. MySQL_视图/触发器/事务/存储过程/函数

    视图.触发器.事务.存储过程.函数 视图 视图是一个虚拟表(非真实存在),其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集,可以将该结果集当作表来使用 #创建视 ...

  5. PAT-树的同构

    链接 树的同构 题意 同构的定义: 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的. 给两棵树,判断是否同构 做法 先建树,然后判断,知道怎么判断就知道 ...

  6. js和css引入文件消除缓存

    ?version=<?php echo filemtime('引用路径'); ?>

  7. 让SSL证书给服务器上一把“锁”

    近期,用户数据泄露的新闻接二连三地被曝光.先有京东金融App涉嫌自动获取用户手机中的敏感照片,随后CNET又爆出中国深圳的一家人工智能公司深网视界对于其人脸识别数据库没有密码保护,导致250万用户信息 ...

  8. C语言提高 (4) 第四天 数组与数组作为参数时的数组指针

    1昨日回顾 const int 和 int const是一样的 const char *p;值不变 char * const p; 指针不能变 编译器对参数的退化: 第三种模型: 三级指针 三级指针局 ...

  9. nmcli connection modify eth1 ipv4.addr "192.168.31.23" ipv4.method manual

    nmcli connection modify eth1 ipv4.addr "192.168.31.23/24" ipv4.method manual 修改IP地址

  10. C#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值

    IntPtr cbh= new IntPtr(handle); //ComboBox的句柄 SendMessage(cbh, 0x014D, new IntPtr(-1), "需要选中的下拉 ...