运维工程师必备技能——编译安装

相信广大从事运维工作的小伙伴对编译安装都不陌生,这里我简要演示一下编译安装的基本步奏。

在生产环境中,我们往往需要从网上或其他源码包提供点下载所需要的源码包,而这些源码包我们是无法直接安装的,这时我们就需要先把源代码编译成二进制程序包,然后再执行安装。

源码编译安装程序,首先需要依赖环境的支持,既编译开发工具、以及各个被依赖到的程序包的开发组件,另外还需要通过定制的编译参数来进行编译安装。

常见的编译开发工具(包组)有:

Development tools

Server Platform Development

Desktop Platform Development

Debug Tools

被依赖的程序包的开发组件:

  1. 编译安装被依赖的程序
  2. 安装相关程序的名称中包含devel的子包

源代码程序中会将程序分隔保存在多个文件中,文件间或许存在依赖关系,因此,编译时可能需要按特定次序进行编译;此时,一般会使用项目管理工具(通常也称为构建工具GNU make)对其进行管理;构建工具会调用合适的编译器,并根据配置文件(makefile)中定义的次序对源代码文件进行编译。

需要注意的是:

  1. 每个项目的程序员开发完成某版本之后,会使用autoconf为程序代码生成一个脚本文件:configure;其功用为:此脚本会收集当前系统上的开发环境中所依赖各组件的版本、特性等,并检查所依赖的环境是否能满足,最后根据Makefile.in文件生成一个makefile文件。
  2. 每个项目的程序员开发完成某版本之后,会使用autoconf为程序代码生成一个makefile模板文件,既Makefile.in。

编译人员的编译安装过程如下:

  1. 运行configure脚本:

configure脚本的应用;

--help:查看帮助信息

--prefix:指定默认安装路径,如--prefix=/usr/local/nginx

--sysconfdir:指定配置文件安装路径

--with-CAPABILITY:依赖的程序包

--without-CAPABILETY:

--enable-FEATURE:启用某个特性

--disable-FEATURE:禁用某个特性

2.运行make命令,完成项目构建;

3.运行make install命令,完成安装;

注意:前两步只需要普通用户权限,建议使用普通用户身份进行;最后一步根据安装路径的指定,可能会用到管理员权限。

以上是编译安装的大概过程,接下来给大家讲一下程序的运行环境

程序安装之后想要被运行起来,就必须为其中的二进制文件指定环境变量,否则只能通过绝对路径进行执行,每次这样都要输入很长的一部分路径,当然也可以通过命令别名来操作,但比较两者起来,环境变量还是比较简洁实用的。在系统之上我们通过$PATH环境变量来指定系统中的二进制程序的路径信息,自己编译的程序文件安装路径可能不在这些路径下,因此就需要编译PATH环境变量,加入这些程序文件所在目录;即将export PATH=export_path:$PATH保存于/etc/profile.d/*.sh文件中。

除了这些二进制文件之外,还有一些库文件信息,因为大多数应用程序都依赖于标准库某些共享文件,甚至于某些应用提供的特定的文件库;Linux系统会在特定的路径下为应用查找所依赖的库文件:/lib64,/lib,/usr/lib64,/usr/lib,自己编译安装的程序提供的库文件有可能不在系统搜索路径中,解决办法:

  1. 编辑/etc/ld.so.conf.d/*.conf文件,添加新库文件搜索路径至此文件中,每行一个;
  2. 执行ldconfig命令,重新生成库映射缓存ld.so.conf

ldconifg 命令:用于生成/etc/ld.so.cache

常见选项有:

-p:打印当前系统ld.so.cache中已经缓存的所有库文件目录及库文件映射列表;

-v:显示命令执行过程的详细信息;

除了二进制文件、库文件外还有一些头文件信息,头文件信息的解决方案有两种方法,如下:

  1. 复制所有新生成的头文件至/usr/include目录中
  2. 创建链接(以Apache为例)

ln -sv /usr/local/apache/include /usr/include/http

ln -sv /usr/local/apache/include/* /usr/include/

最后还有一些man手册文件,我们可以通过修改man的配置文件/etc/man.config,使用MANPATH指令指向的路径,来让其识别新的帮助信息

说了这么多,下面我们以httpd-2.2.29为例,执行编译安装

首先我们需要将下载到的http-2.2.29.tar.bz2压缩文件解压缩,得到http-2.2.29文件

进入http-2.2.29目录中,首先查看INSTALL文件,这里会给我们提供快速安装指南

然后我们需要查看README文件,这里给我们提供了程序的介绍

然后在执行configure之前,我们先使用./configure --help 命令来查看帮助

而后执行./configuer --prefix=/usr/local/http2 --sysconfdir-/etc/http2

执行完后查看执行make

然后执行make install命令

安装完成后cd 到之前我们指定的安装目录下/usr/local,查看是否有Apachectl文件

接下来我们使用netstat -atn命令查看启动的网络

发现没有HTTP的80端口号,接下来我们执行./apachectl start命令,启用服务,然后再次使用netstat -tan命令,发现服务已经启动

接下来我们就可以使用浏览器访问了,首先我们使用yum install links安装links浏览器

顺便提醒一下,如果本机的防火墙开启时是无法访问的,我们可以使用iptables -vnL查看防火墙相关信息,然后使用iptables -F临时清空防火墙数据,这样就能实现访问了。

为了以后使用的方便,送佛送到西,我们需要定义程序的运行环境

时间: 2024-10-13 05:04:00

运维工程师必备技能——编译安装的相关文章

linux运维工程师必备技能

1.Linux系统基础 2.网络服务 3.shell脚本和另一种脚本语言 4.sed和awk工具 5.文本处理命令 6.数据库 7.防火墙 8.监控工具 9.集群和热备 10.数据备份

高薪岗位云计算面试题,云计算运维工程师必备

云计算产业市场规模快速增长,人才需求数量激增.相关云计算企业加大对核心技术的投入,提高对客户的服务,无论从技术层面,运营商层面还是集成与服务提供层面,人才需求巨大.下面给大家分享高薪岗位云计算面试题,云计算运维工程师必备好好收藏吧. 1.osi七层参考模型有哪些? 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 2.udp协议工作在哪一层?ping工作在哪一层? UDP工作在传输层 ping 工作在网络层 3.linux系统中用于检测通信的命令有哪些?(四个以上) ping trac

运维工程师必备150个命令(连载中...)

运维工程师必备150个命令 1.mkdir  make directory        创建目录,例子:mkdir /data表示在根下创建data目录. 2.cd        change directorys    切换目录,例子:cd /表示进入根目录. 3.ls          list                            列表目录,例子:ls /etc, -l(long)长格式显示目录或文件属性. -d(directory),表示查看目录 4.touch   

Rsync为何会是运维人员必备技能之一?

Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具,也是运维人员必备技能之一.那Rsync有什么特点使得它有如此的地位呢? 1.Rsync有啥特性? 1)支持拷贝特殊文件,比如连接文件.设备等 2)排除指定文件或目录同步,相当于打包命令的tar的排除 3)保持源文件或目录的权限.时间.软硬链接.属主.组等所有属性均不改变-p 4)增量同步,即只同步发生变化的数据,数据传输效率高,tar -N 5)使用rcp,rsh,ssh等方式来配合传输文件 6)可通过

Linux运维工程师必备的十个技能点

1.Linux 系统基础 这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥 Linux 基础篇,至少要掌握这书 60% 内容,没必须全部掌握,但基本命令总得会吧! 2. 网络服务 服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如 FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行,LAMP 和 LNMP 是必须要熟练,我所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是 Web 服务器,所以 nginx 和 apache

运维工程师必备的18个网络带宽监控常用命令

马哥教育 本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带宽.这样一来,用户很容易发现过度使用网络带宽的某个进程. 这些工具使用不同的机制来制作流量报告.nload等一些工具可以读取"proc/net/dev"文件,以获得流量统计信息:而一些工具使用pcap库来捕获所有数据包,然后计算总数据量,从而估计流量负载. 下面是按功能划分的命令

远程桌面连接,运维工程师-必备软件【MultiDesk】

实习时,在本地一家大型女装公司做桌面运维,服务器碰得到少,大部分时间都是在维护同事的电脑桌面,什么360全家桶了,毒霸了,都是通过远程工具 teamviewer 去搞定的. 后来做了前端开发,免不了自己要去登陆服务器,经常使用mstsc这个命令,有时候也难免会敲错这个命令. 使用了MultiDesk 软件(绿色版)只要第一次手动输入了账户 密码,后面都是傻瓜式操作,点击一下直接连接上服务器的远程桌面. 原文地址:https://www.cnblogs.com/suni1024/p/1135838

菜鸟运维笔记:小记编译安装Nginx所遇到的坑

转载请注明出处:http://blog.csdn.net/guodongxiaren/article/details/40950249 谢谢合作 前言 无论是CentOS,或是Debian/Ubuntu.甚至是Windows.Nginx都有已编译好的安装包可用. 通常仅仅须要在终端上潇洒地输入apt-get install ...或是yum install ..就能够了.可是对于我这个源代码编译狂来说.那样一键安装,显然无法满足我心理需求. 获取Nginx源代码 下载 官网已经出现了1.7了.只

Linux运维工程师必备(命令)

如何过滤出以下目录的中的所有一级目录 [[email protected] ~]# ll total 16 -rw-r--r-- 1 root root    0 Jul  5 11:43 111 -rw-r--r-- 1 root root    0 Jul  5 11:43 222 -rw-r--r-- 1 root root    0 Jul  5 11:43 333 drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa drwxr-xr-x 2 roo