1 概述

很多软件没有发布rpm包,而是直接发布了源码,好处是这样能兼容更多的平台,但是,用户需要对源码进行编译后安装。利用工具make将源码生成二进制文件。

本文主要讲解了对httpd进行编译安装。分别介绍centOS6和centOS7两个系统版本上httpd的安装

2 CentOS6编译安装httpd

下载httpd-2.2.34.tar.bz2这个安装包到centOS6,一般建议把软件包放在路径/usr/local/src这个路径下。

解开该压缩文件 tar -xvf httpd-2.2.34.tar.bz2。

接下来,要用make来变成C程序的文件。解压后的目录下,默认还没有Makefile这个文件,该文件用来记录如何编译该软件,安装在哪个路径下,哪些软件功能启用,哪些功能不启用。这个就是体现了源码编译安装的灵活度,可以定制功能。Makefile是通过configure这个工具来生成的,由源码发布者提供。

Makefile 是configure工具借助Makefile.in这个模板来生成的文件


C语言源代码编译安装三步骤:

1、./configure

(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成Makefile

(2) 检查依赖到的外部环境,如依赖的软件包

2、make 根据Makefile文件,构建应用程序

3、make install 复制文件到相应路径


有些情况下,没有configure文件,可以通过autoconf生成configure脚本,automake这个工具用来生成Makefile.in这个文件,一般这两个文件由开发者生成发布。

configure脚本支持大量的选项,根据不同的选项来生成Makefile文件

安装开发包组,这个是编译开发软件要用到的工具。建议都要安装。这个包组安装完成后,可能在编译过程还需要用到其他工具,具体情况根据缺失提示信息再安装对应的开发包。


configure要指定安装目录,--prefix=PREFIX 指定软件包的安装路径,如果没有指定,则是按照默认的路径安装。

运行如下语句,生成Makefile文件

./configure --prefix=/sunny/httpd66 --sysconfdir=/etc/httpd66 --enable-ssl

运行语句,发现如下报错,一般这种是缺失相应的开发包,比如提示OpenSSL缺失,就另行安装openssl-devel这个包。一般的包就是提示缺失的名字后加devel这种包就是了。不同的软件缺失的插件不一样,根据实际情况安装软件包。

图一 configure报错

该步骤完成后,除了生成Makefile这个文件外,还会生成其他相关的文件。

执行make,这里根据软件的大小决定了编译时间的长短,电脑性能好的话,编译时间会明显缩短。编译完成后 ,会生成新的文件

make

执行make install 开始安装

make install

到这里,httpd软件安装成功。接下来需要对软件进行启动以及配置。

如果这里有指定软件的安装路径,则到对应路径的/bin目录下开启软件,如本实验中路径是/sunny/httpd66/bin/apachectl,但是这样的操作比较麻烦,建议直接在/etc/profile.d目录下生成文件,写入该路径,这里建议把路径放在前面,因为系统里有一个路径和这个服务一样,会先匹配执行前面的

echo 'export PATH=/sunny/httpd66/bin:$PATH' > /etc/profile.d/httpd66.sh
. /etc/profile.d/httpd66.sh   //运行该文件,使得路径生效

这里有个小细节,用单引号,不会展开PATH这个变量,比较好看,如果用双引号,则会展开变量,路径比较长,而且路径已经被固定了,但是,在这里两个写法都是正确的写法,结果如下图

图二 单引号和双引号的区别

启动apache服务

apachectl start

验证一下,ss -ntl  查看80端口是否打开,如果打开就可以去通过网页打开。

由于编译时指定了路径,这里如果要改变浏览器首页的信息,可以到路径/sunny/httpd66/htdocs/ 更改index.html这个文件。

如果要使用man帮助查看httpd的相关信息,需要把软件的man文档路径加入到man的配置文件里执行如下语句

vim /etc/man.config
MANPATH /sunny/httpd66/man   //添加文件安装指定路径下的man路径

到这里为止,httpd编译完成,服务可以正常启用

3 一键安装apache代码

以下是在centOS6上一键编译安装apache的脚本

#!/bin/bash
# ----------------+---------------------------------------+
# * Author        : Sunny
# * Create time  : 2017-08-08
# * Last modified : 2017-08-08
# * Filename      : httpd.sh
# * Description  : Auto install apache for centOS6
# * version      : 1.0
# ----------------+---------------------------------------+
#定义变量
export httpdpkg=`find  / -name "httpd-2.2.34.tar.bz2" | head -1`
echo "httpdpkg is  $httpdpkg"
export pkgnu=`find  / -name "httpd-2.2.34.tar.bz2" | wc -l`
echo "pkgnu is $pkgnu"
export httpdir="/usr/local/src/httpd-2.2.34"
#解压httpd服务包
case $pkgnu in
0)
cd /usr/local/src  ;
wget http://apache.fayea.com/httpd/httpd-2.2.34.tar.bz2;
tar xvf httpd-2.2.34.tar.bz2;
;;
*)
tar xvf $httpdpkg -C /usr/local/src/ &>/dev/null ;
;;
esac
#安装编译
[ -d $httpdir ] && cd $httpdir || echo "httpdir is not exist.please check"
echo "You are in `pwd` now"
yum grouplist "development tools" &>/dev/null|| yum -y groupinstall "Development Tools" &>/dev/null || echo "Devel tools is install"
rpm -q apr-devel &>/dev/null || yum -y install apr-devel &>/dev/null;
rpm -q apr-util-devel &>/dev/null || yum -y install apr-util-devel &>/dev/null;
rpm -q openssl-devel  &>/dev/null || yum -y install openssl-devel &>/dev/null;
rpm -q gcc &>/dev/null ||yum -y install gcc &>/dev/null;
#因为编译过程可能会缺失各种工具包,所以这里不隐藏编译过程,如果有问题,可以及时发现解决
./configure  --prefix=/sunny66/httpd66 &>/dev/null;
[ $? = 0 ] &&  make &>/dev/null|| echo "Please check configure"
[ $? = 0 ] && make install &>/dev/null || echo "Please check make";
[ $? = 0 ] && echo " httpd is successful install" || echo "Warning,install is failure,Please check make install"
#简单的初始化配置,注意是添加apache的bin路径到PATH
echo 'export PATH=/sunny66/httpd66/bin:$PATH' > /etc/profile.d/httpd22.sh
. /etc/profile.d/httpd22.sh && echo "Now PATH is $PATH"
echo "MANPATH /sunny66/sunny66/man" >> /etc/man.config;
echo "ServerName localhost:80" >>/sunny66/httpd66/conf/httpd.conf
sed -i 's/It works!/Welcome to Sunny Home/g' /sunny66/httpd66/htdocs/index.html
apachectl start;
#关闭防火墙和selinux
setenforce 0;
iptables -F;
#检查端口状态
ss -ntl | grep 80;
[ $? = 0 ] && echo "httpd is success.you can open web to check" || echo "Apache do not start"
#解除变量
unset httpdpkg;
unset pkgnu;
unset httpdir;
echo "Congratulation";
exit 0;

转载于:https://blog.51cto.com/ghbsunny/1955019

源码编译安装httpd服务相关推荐

  1. 源码编译安装httpd及其常见错误

    一.编译安装的整体步骤 1.在官网下载源码,并解压 2.切换到其目录中 3.执行./configure 4.编译 二.编译中及安装后配置常见的参数及其说明 编译中配置 1)指定安装路径 --prefi ...

  2. centos下LAMP之源码编译安装httpd

    1 最好先安装组件 [root@localhost ~]# yum groupinstall additional development [root@localhost ~]# yum groupi ...

  3. Linux-Centos7源码编译安装Twemproxy服务

    1. 软件简单介绍 Twemproxy Twemproxy(又称为nutcracker)是一个轻量级的Redis和Memcached代理,主要用来减少对后端缓存服务器的连接数.Twemproxy是由T ...

  4. 源码编译安装Nginx及网站服务配置

    文章目录 一.Nginx概述 1.1 Nginx概述 1.2 Nginx和Apache的区别 1.3Nginx和Apache的优缺点差异 1.4Nginx的进程 二.源码编译安装nginx服务 2.1 ...

  5. Web服务 源码编译安装LAMP架构

    Web服务 源码编译安装LAMP架构 一.LAMP架构 1.LAMP架构是什么 2.各组件的主要作用 二.编译安装Apache httpd服务 1.关闭防火墙,将安装Apache所需软件包传到/opt ...

  6. Linux LNMP源码架构部署 | Nginx服务 | Mysql服务 | php服务 | 论坛源码编译安装 | 超详细

    | Nginx服务 | Mysql服务 | php服务 | 论坛源码编译安装 | ➤安装 Nginx 服务 ➤1.关闭防火墙和安全机制 ➤2.卸载自带的httpd服务 ➤3.安装依赖包 ➤4.创建运行 ...

  7. Splunk安装和配置及源码编译安装SVN

    Splunk安装和配置 http://my.oschina.net/tuyang/blog/189159 http://my.oschina.net/longniao/blog/82766 http: ...

  8. php 7.0 编译安装mysql_源码编译安装php7.0.5

    源码编译安装php7.0.5 源码包下载地址 安装epel扩展yum源 [root@xuegod63 ~]# yum clean all [root@xuegod63 ~]# yum list 注:R ...

  9. linux7安装haproxy,Centos7 源码编译安装haproxy

    Centos7 源码编译安装haproxy 操作环境: 一台haproxy主机地址为:192.168.80.100 两台web服务器地址分别为:192.168.80.102 192.168.80.10 ...

最新文章

  1. YOLOv4-5D:一种高效的自动驾驶物体检测器
  2. 数据集与JSON对象互相转换
  3. 0129互联网新闻 | 平安好医生无人诊所进驻高速公路服务区; 第五批游戏版号下发...
  4. 杭州内推 | 阿里达摩院机器智能技术团队招聘多模态方向研究型实习生
  5. linux ssh基本
  6. ESFramework介绍之(14)-- AS与FS通信方案
  7. mybatis加载xml配置文件
  8. Word批量删除空白行
  9. Vue Cli脚手架安装与使用
  10. 项目总结Word基本格式
  11. Android 在一个APP里打开另一个APP
  12. 物联网蓝牙芯片的选型
  13. qiankun使用Actions实现通信
  14. 计算机音乐谱东演员,抖音计算机乐谱有哪些 抖音计算机乐谱分享
  15. JBuilder连接oracle数据库
  16. 162号段,165号段,167号段
  17. 别让自己 “墙” 了自己
  18. API接口开放平台-淘宝API接口详解
  19. LRC软件测试自学,基于单片机的LRC测试仪..doc
  20. 当时,章鱼保罗做的预测,现在有企业专门在做了

热门文章

  1. gcc: internal compiler error: Killed (program cci)错误
  2. Shell整数型变量自增自减的实现方式(+1,-1,++,--)
  3. 解决TeXstudio外部查看器失败方法
  4. 3.2.7.1 替换细节
  5. 自己动手写spring(三) 支持注解方式
  6. 8种主流深度学习框架介绍
  7. 极度烧脑+惊人发现:4个颠覆你世界观的量子理论实验
  8. 除阿里、网易和字节外,杭州居然还有这么多互联网公司!
  9. 技术人必看:15张图对比高效与瞎忙的区别!
  10. JeecgBoot 2.4.3版本发布,企业级低代码平台