SSH客户端应用场景

SSH命令详解 参数 说明 -1 强制使用ssh协议版本1; -2 强制使用ssh协议版本2; -4 强制使用IPv4地址; -6 强制使用IPv6地址; -A 开启认证代理连接转发功能; -a 关闭认证代理连接转发功能; -b 使用本机指定地址作为对应连接的源ip地址; -C 请求压缩所有数据; -F 指定ssh指令的配置文件; -f 后台执行ssh指令; -g 允许远程主机连接主机的转发端口; -i 指定身份文件; -l 指定连接远程服务器登录用户名; -N 不执行远程指令; -o 指定配置选项; -p 指定远程服务器上的端口; -q 静默模式; -X 开启X11转发功能; -x 关闭X11转发功能; -y 开启信任X11转发功能。 -D 指定本地 “动态” 应用程序级端口转发。这通过分配套接字来侦听本地端口,可选地绑定到指定的bind_address。只要与此端口建立连接,就会通过安全通道转发连接,然后使用应用程序协议确定从远程计算机连接的位置。 SSH端口转发实战 概述 在通常情况下,网络防火墙会阻碍你进行某些必要的网络传输。公司的安全策略可能不允许你把SSH密钥存储在某些主机上。或者,你也可能需要在原本安全的环境中运行一些不安全的网络应用程序。 SSH提供了一个重要功能,称为转发forwarding或者称为隧道传输tunneling,它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程有时也被叫做tunneling,这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。 SSH端口转发主要用来解决如下两方面问题: 突破防火墙的限制完成无法建立的 TCP 连接。 加密 Client 端至 Server 端之间的通讯数据。 开启ssh的端口转发功能 ssh端口转发功能默认是打开的。如需修改的话,修改后需要重启sshd服务才会生效。...

tcp.validnode_checking踩过的坑

对Oracle 检查ip合法性,就必须在服务器端的sqlnet.ora文件中设置如下参数 text 1 2 TCP.INVITED_NODES=(10.0.0.36,10.0.0.1,10.0.0.35) TCP.EXCLUDED_NODES=(10.0.0.2) 启动监听出现如下错误 text 1 2 3 4 5 6 7 8 9 10 11 $ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 12-MAR-2018 18:32:13 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused 错误输出并没有打印详细的信息,从lisenter.ora,tnsnames.ora入手,但没有发现文件是错误的。最后检查sqlnet.ora,发现TCP.INVITED_NODES参数有如下约束是官方文档没有给出的 tcp.invited_nodes需要满足如下条件才可成功启动监听 1、需要设置参数TCP.VALIDNODE_CHECKING为YES才能激活该特性。 2、tcp.invited_nodes的值中一定要包括本机地址(127.0.0.1 / 10.0.0.36)或localhost,因为监听需要通过本机ip去访问监听,一旦禁止lsnrct将不能启动或停止监听。 3、不能设置ip段和通配符。 4、此方式只适合tcp/ip协议。 5、此方式是通过监听限制白名单的。 6、针对的是ip地址而不是其他(如用户名等)。 7、此配置适用于9i以上版本。本次踩坑是oracle11gr2。 8、修改配置后需要重启监听才可生效。 TCP....

jenkins检查代码 如没更新停止构建步骤

需求分析 在jenkins中没有找到构建前插件,每次构建时间很长,希望可以实现判断代码是否更新,如果没更细则停止构建步骤。 实现步骤 在构建时执行shell命令,而jenkins提供的的环境变量可以实现此判断 https://wiki.jenkins.io/display/JENKINS/Conditional+BuildStep+Plugin text 1 2 3 4 5 6 GIT_COMMIT The commit hash being checked out. GIT_PREVIOUS_COMMIT The hash of the commit last built on this branch, if any. GIT_PREVIOUS_SUCCESSFUL_COMMIT The hash of the commit last successfully built on this branch, if any. GIT_COMMIT 当前拉取版本的commit id GIT_PREVIOUS_COMMIT 最后在此分支上构建的 commit id GIT_PREVIOUS_SUCCESSFUL_COMMIT 最后在此分支上成功构建的 commit id号 text 1 2 3 4 5 6 7 8 #!/bin/bash if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT == $GIT_COMMIT ];then echo "no change,skip build" exit 0 else echo "git pull commmit id not equals to current commit id trigger build" fi 注意,不能使用-eq 只能使用 “==” 提交新版本后,构建提示如下:...

jenkins多个slave遇到的坑

jenkins配置如下 在Jenkins上添加了两个节点(Slave Node),且为这两个节点设置了一个相同的标签 “windows”。创建了一个新Job – “test-windows”,选择的是”构建一个自由风格的软件项目”。并且为了使多个slave并行构建,我选择了"只允许绑定到这台机器的job”,在"Label Expression"中选择了"windows"。 然而这种方式并不能实现多个slave并行操作。网上90%说的都不靠谱。 在我使用的过程中,使用了label 去管理多个 Slave,给一个项目的构建指定了这个 label,会发现这个项目的多次构建,都使用同一个 Slave,并没有使用 label 里的其它 Slave去构建。 查了很多资料才发现原来从 jenkins 的调度算法使用了一致性的哈希算法,jenkins根据添加的信息评测出优先级列表,选择优先级最高的Slave去构建,当最优slave不满足条件或者没有可用的 execut时,才会选用下一个slave。 查了很多资料发现构造多配置项目可以选择构建时的slave。这样可以实现多slave并行构建。 multi configuration project比起构建自由风格的软件项目多个Configuration Matrix,在这里可以选择多个slave。这里选择lable的话,还是会使用默认算法从lable中选择最优slave进行构建。 配置完成后再构建时,会同时在多个slave上进行并行构建 禁止在master上运行job或和业务相关的操作 将 [executors] 设置为0

windows上sqlplus客户端连接oralce数据库中文显示问题

运行环境 服务器:centos6.8 服务器oracle版本:oracle 11g R2 64位,字符集是ZHS32utf8。 客户端:navicat 12x64 windows8.1x64 问题分析 当在windows客户端使用sqlplus或navicat时如果数据库中文显示“????” 这种情况是在客户端与服务器端字符集不一致时,从客户端输入了汉字信息。输入的这些信息即便是把客户端字符集更改正确,也无法显示汉字。 解决方法:退出sqlplus,设置相应的环境变量NLS_LANG linux: text 1 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" windows: 出现问题 此时。系统cmd命令行使用sqlplus已经正常显示中文,但是navicat中依旧是???? 图为cmd命令行访问sqlplus客户端查询 图为navicat f6弹出的sqlplus客户端 原因是因为Navicat Premium默认自带的instant client,但是其是base lite版本的(Basic Lite: Basic 的精简版本,其中仅带有英文错误消息和 Unicode、ASCII 以及西欧字符集支持),不支持中文字符集,而本文中的服务器端oracle恰好是中文字符集。自带版本不支持。此处需要去oracle官网下载相对应的版本。 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html 将下载的文件解压覆盖navicat中的instantclient目录里的文件。 此时连接oracle实例提示如下信息 尽管我们下载了64位的版本。却提示如图信息。这是因为Navicat仅支持32位的,因此还需下载一个32位的客户端。替换到instantclient目录中 替换完成后连接实例。f6使用sqlplus查询发现中文已经正常显示

jenkins github tag使用方式

jenkins github tag 测试项目地址:GitHub - go-redis\redis: Type-safe Redis client for Golang 插件下载地址:[git-parameter](http:\updates.jenkins-ci.org\download\plugins\git-parameter) pt-online-schema-change Jenkins中配置gradle项目的坑 - doctorq - CSDN博客

详解haproxy

haproxy 介绍 haproxy是一个开源的、高性能的基于TCP和HTTP应用代理的高可用的、负载均衡服务软件,它支持双机热备、高可用、负载均衡、虚拟主机、基于TCP和HTTP的应用代理、图形界面查看信息等功能。其配置简单、维护方便,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,haproxy会自动的将该故障服务器摘除,当故障的服务器恢复后,haproxy还会自动将该服务器自动加入进来提供服务。 LVS/NGINX对比 haproxy 特别适用于那些高负载、访问量很大,但又需要会话保持及七层应用代理的业务应用。haproxy运行在今天的普通的服务器硬件上,几乎不需要进行任何的优化就可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单、轻松、安全的整合到各种己有的网站架构中,同时,haproxy的代理模式,可以使得所有应用服务器不会暴露到公共网络上,即后面的节点服务器不需要公网IP地址。 从1.3版本起,haproxy软件引入了frontend,backend的功能,frontend (ad规则匹配)可以让运维管理人员根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend(这个是事先定义好的多个server pools,等待前端把请求转过来的服务器组)。通过frontend和backend,我们可以很容易的买现haproxy的各种7层应用代理功能。 haproxy代理模式 haproxy支持两种主要代理模式: 1、基于4层的tcp应用代理(例如:可用于邮件服务、内部协议通信服务器、MySQL、HTTPS服务等)。 2、基于7层的http代理。在4层tcp代理模式下,haproxy仅在客户端和服务器之间进行流量转发。但是在7层http代理模式下,haproxy会分析应用层协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求(request)或者回应(response)里指定内容来控制协议。 官方网站:www.haproxy.org haproxy 解决方案拓扑图 haproxy L4负载均衡应用架构拓扑 haproxy软件的四层tcp应用代理非常优秀,且配置非常简单、方便,比LVS和Nginx的配置要简单很多,首先,配置haproxy不需要在RS端做任何特殊配置 (只要对应服务开启就OK)就可以实现应用代理,其次,haproxy的配置语法和增加虚拟主机功能等也比lvs/nginx简单。并且和商业版的NS (Netscaler)、F5, A10等负载均衡硬件的使用方法和在架构中的位置一模一样。下面是haproxy的Layer4层应用代理的拓扑结构图: 说明:由于haproxy软件采用的是类NAT模式(本质不同)的应用代理,数据包来去都会经过haproxy,因此,在流量特别大的情况下(门户级别的流量),其效率和性能不如LVS的DR模式负载均衡。 在一般的中小型公司,建议采用haproxy做负载均衡,而不要使用LVS或Nginx。为什么强调中小型公司呢?换句话说,千万PV级别以下直接使用haproxy做负载均衡,会让我们负责维护的运维管理人员配置简单、快速、维护方便,出问题好排查。 haproxy L7负载均衡应用架构拓扑 haproxy软件的最大优势在于其7层的根据URL请求头应用过滤的功能以及sesson会话功能,在门户网站的高并发生产架构中,haproxy软件一般用在4层LVS负载均衡软件的下一层,或者像haproxy官方推荐的也可以挂在硬件负载均衡althon, NS, F5, A10下使用,其表现非常好。从2009年起taobao,京东商城的业务也大面积使用了haproxy作为7层CACHE应用代理。 安装haproxy 模拟真实环境 搭建合适的模拟环境是一个人学习能力的重要体现。例如:人类第一次上太空也没有真正的环境,但是想去太空就是要自己动手去搭建逼真的模拟环境。实验多了就是经验,自然就有解除生产环境的机会了。 名称 接口 IP 用途 MASTER eth0 10.0.0.7 外网管理IP用于WAN数据转发 eth1 172.16.1.7 内网管理IP,用于LAN数据转发 eth2 10.0.10.7 用于服务器间心跳连接(直连) VIP 10.0.0.17 用于提供应用程序A挂载服务 BACKUP eth0 10.0.0.8 外网管理IP,用于WAN数据转发 eth1 172.16.1.8 内网管理IP,用于LAN数据转发 eth2 10.0.10.8 用于服务器间心跳连接(直连) VIP 10.0.0.8 用于提供应用程序B挂载服务 下载安装haproxy 下载地址:http://www.haproxy.org/download/ 文档地址:http://www.haproxy.org/download/1.7/doc/configuration.txt 编译haproxy bash 1 2 3 4 make TARGET=linux2628 ARCH=x86_64 # <==64位编译配置 make TARGET=linux2628 ARCH=i386 # <==32位编译配置 make PREFIX=/app/haproxy-1....

ch08 - MySQL存储引擎

什么是存储引擎 在经清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式如mp4 avi wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs fat32,存在于linux常见的ext3 ext4 xfs,但是,给我们或者用户看到实际视频内容都是一样的。直观区别是,占用系统的空间大小与清晰程度可能不一样。 那么数据库表里的数据存储在数据库里及磁盘上和上述的视频格式及存储磁盘文件系统格式特征类似,也有很多中存储方式。 但是,对于用户和应用程序来说同样一张表的数据,无论用什么引擎来存储,用户看到的数据都是一样的。不同的引擎存储,引擎功能,占用的空间大小,读取性能等可能有区别。 MySQL最常用的存储引擎为:MyISAM和InnoDB。全文索引:目前MySQL5.5版本,myisam和inondb都已经支持。 MySQL存储引擎的架构 MySQL的存储引擎是MySQL数据库的重要组成部分,MySQL常用的表的引擎为MyISAM和InnoDB两种。MySQL的每种存储引擎在MySQL里是通过插件的方式使用的,MySQL可以同时支持多种存储引擎。下面是MySQL存储引擎体系结构简图: MyISAM引擎 MyISAM引擎是MySQL关系数据库管理系统的默认存储引擎(MySQL 5.5.5以前)。这种MySQL表存储结构从旧的ISAM代码扩展出许多有用的功能。在新版本MySQL中,InnoDB引擎由于其对事务参照完整性,以及更高的并发性等优点开始逐步的取代MyISAM引擎, “InnoDB is the default storage engine as of MySQL 5.5.5。MyISAM: The MySQL storage engine that is used the most in Web,data warehousing,and other application environments.MyISAM is supported in all MySQL configurations,an is the default storage engine prior to MySQL 5.5.5。” 查看MySQL5.1数据库默认引擎 bash 1 2 3 4 5 6 7 mysql> show create table test1\G *************************** 1....

ch07 - 实现和MySQL非交互式对话

利用 mysql -e 参数查看 mysql 数据 bash 1 2 3 4 5 6 7 8 $ mysql -uroot -p111 -e 'use test;show tables;' +------------------------------+ | Tables_in_test | +------------------------------+ | 33hao_activity | | 33hao_activity_detail | | 33hao_address | +------------------------------+ 利用 mysql -e 参数查看SQL线程执行状态 bash 1 2 $ mysql -uroot -p111 -e 'show processlist;' kill 12; 查看完整的线程状态,此参数才查看慢查询语句是非常有用 解决方法: bash 1 2 3 4 root@localhost [test]>show variables like '%_timeout%'; # 设置 set global wait_timeout=60; set global interactive_timeout=60; 在配置文件里修改 text 1 2 set global wait_timeout=60; set global interactive_timeout=60; # 此参数设置后wait_timeout自动生效 其他方法 (1) PHP程序中,不适用持久链接,即 mysql_connect 而不是 pconnect(java调整连接池)...

ch06 - MySQL主从复制

Linux文件数据同步方案 在讲解MySQL主从复制之前,先回忆下,前面将结果的普通文件(磁盘上的文件)的同步方法。 文件级别的异机同步方案 scp/sftp/nc命令可以实现远程数据同步。 搭建ftp/http/svn/nfs服务器,然后在客户端上也可以把数据同步到服务器。 搭建samba文件共享服务,然后在客户端上也可以把数据同步到服务器。 利用rsync/csync2/union等均可以实现数据同步。 提示:union可实现双向同步,csync2可实现多机同步。 ​ 以上文件同步方式如果结合定时任务或innotify sersync等功能,可以实现定时以及实时的数据同步。 扩展思想:文件级别复制也可以利用mysql,mongodb等软件作为容器实现。 扩展思想:程序向两个服务器同时写数据,双写就是一个同步机制。 ​ 特点:简单、方便、效率和文件系统级别要差一些,但是被同步的节点可以提供访问。 软件的自身同步机制(mysql、oracle、mongdb、ttserver、redis…..),文件放到数据库,听不到从库,再把文件拿出来。 文件系统级别的异机同步方案 drbd基于文件系统同步,相当于网络RAID1,可以同步几乎任何业务数据。 mysql数据的官方推荐drbd同步数据,所有单点服务例如:NFS,MFS(DRBD),MySQL等度可以用drbd做复制,效率很高,缺点:备机服务不可用。 数据库同步方案 自身同步机制:mysql relication,(逻辑的SQL重写)物理复制方法drbd(丛库不提供读写)。 第三方drbd MySQL主从复制概述 MySQL的主从复制方案,和上述文件及文件系统级别同步是类似的,都是数据的传输。只不过MySQL无需借助第三方工具,而是其自带的同步复制功能,另外一点,MySQL的主从复制并不是磁盘上文件直接同步,而是逻辑的binlog日志绒布到本地在应用执行的过程 MySQL主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库(Master)复制到另一个数据库(Slave),在 mater 与 Slave之 间实现整个主从复制的过程是由三个线程参与完成的。其中有两个线程( SQL和IO )在Slave端,另外一个线程(I/O)在Master端。 要实现MySQL的主从复制,首先必须打开 Master 端的 binlog 记录功能,否则就无法实现。因为整个复制过程实际上就是Slave从Master端获取Binlog日志,然后在Slave上以相同顺序逐自获取 binlog 日志中所记录的各种SQL操作。 要打开MySQL的binlog记录功能,可能通过在MySQL的配置文件 my.cnf 中的 mysqld 模块( [mysqld] )标识后的参数部分增加 “log-bin” 参数选项来实现,具体信息如下: bash 1 2 [mysqld] log-bin = /data/3307/mysql-bin 提示:log-bin需放置在[mysqld]标识后,否则会导致配置复制不成功。 MySQL数据可支持单向、双向、链式级联等不同场景的复制。在复制过程中,一台服务器充当主服务器(Master),而一个或多个其他的服务器充当从服务器(Slave)。 复制可以使单向:M==>S,也可以是双向 M<==>M,当然也可以多M环装同步等。 如果设置了链式级联复制,那么,从(slave)服务器本身除了充当从服务器外,也会同时充当其下面从服务器的主服务器。链式级联复制类似 A==>B==>C==>D 的复制形式。 下面是MySQL各种同步架构的逻辑图。 单向主从复制逻辑图,次架构只能在Master端进行数据写入。官方给出Slave最多9,工作中不要超过5 双向主主同步逻辑图,次架构可以再Master1端或Master2端进行数据写入 线性级联单向双主同步逻辑图,此架构只能在Master1端进行数据写入 缺陷:1 ==>3 之间会存在延迟 环装级联单向多主同步逻辑图,任意一个点都可以写入数据。...

ch04 - MySQL数据库服务日志类型

错误日志 error log MySQL错误日志记录MySQL服务进程mysqld在启动/关闭或运行过程中遇到的错误信息 错误日志配置 在配置文件中调整方法,当然可以在启动时加入启动参数 bash 1 2 [mysqld_safe] log-error=/data/3306/mysql_3306.err 启动MySQL命令里加入 bash 1 2 3 4 5 6 7 8 9 10 /app/mysql/bin/mysqld_safe \ --defaults-file=/data/3306/my.cnf \ --log-error=/data/3306/mysql_3306.err MariaDB> show variables like "%log_error%"; +-------------------+---------------------------+ | Variable_name | Value | +-------------------+---------------------------+ | log_error | /data/3306/mysql_3306.err | +-------------------+---------------------------+ 遇到数据库启动不了 先把日志文件备份并清空启动一下mysql服务后再查看日志文件,看报有什么错误 bash 1 2 3 InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory 然后查看mysql3306目录下文件权限 普通查询日志 general query log 普通查询日志 (general query log):记录客户端链接信息和执行的SQL语句信息。...

ch02 - MySQL安全相关配置

设置MySQL管理员账号密码 在安装MySQL数据库后,MySQL管理员的账号root密码默认为空,极不安全 启动修改丢失的MySQL单实例root密码方法 停止MySQL bash 1 /etc/init.d/mysqld stop 使用 –skip-grant-tables启动mysql,忽略授权登陆验证 bash 1 2 3 4 5 6 7 8 9 10 11 # 单实例 /app/mysql/bin/mysqld_safe --skip-grant-tables --user=mysql # 多实例 /app/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --user=mysql --skip-grant-tables & # 登录时空密码 $ mysql -S /data/3306/mysql.sock ... ... Welcome to the MySQL monitor. Commands end with ; or \g. # 在启动时加 --skip-grant-tables参数,表示忽略授权 修改root密码为新密码 bash 1 2 3 4 5 6 mysql> set password=password('123'); ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement mysql> update mysql....

ch05 - MySQL字符集相关配置

MySQL数据库字符集介绍 简单来说,字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集ASCII! MySQL数据库字符集包括字符集(character)和校对规则(collation)两个概念。其中,字符集是用来定义MySQL数据字符串的存储方式。而校对规则则是定义比较字符串的方式。 上面命令查看已建立的test数据库语句中 CHARACTER SET latin1即为数据库字符集,而COLLATE latin1_swedish_ci为校对规则,更多内容 见mysql手册第10章。 编译MySQL时,指定字符集了,这样以后建库的时候就直接create database test; 二进制安装MySQL,并没有指定字符集,这时字符集默认latin1,此时,需要建立UTF8字符集的库,就需要指定UTF8字符集建库。 sql 1 create database test1 default character set utf8 default collate=utf8_general_ci; MySQL常见字符集介绍 在互联网环境中,使用MySQL时常用的字符集有: 常用字符集 一个汉字长度(字节) 说明 GBK 2 不是国际标准,对中文环境支持很好。 UTF8 3 中英文混合环境,建议使用此字符集,用的比较多的。 latin1 1 MySQL的默认字符集 utf8mb4 4 UTF8 Unicode,移动互联网 MySQL如何选择合适的字符集? 如果处理各种各样的文字,发布到不同语言的国家地区,应选Unicode字符集,对MySQL来说就是utf-8(每个汉字三个字节),如果应用需处理英文,仅有少量汉字的utf-8更好。 如果只需支持中文,并且数据两很大,性能要求也高,可选GBK(定长 每个汉字占双字节,英文也占双字节),如果需大量运算,比较排序等,定长字符集更快,性能 处理移动互联网业务,可能需要使用utf8mb4字符集。 如无特别需求,选择UTF8 查看MySQL字符集 查看当前MySQL系统支持的字符集 MySQL可支持多种字符集,同一台机器,库或表的不同字段都可以指定不同的字符集。 sql 1 2 3 4 5 6 7 8 9 mysql> show character set; +----------+-------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-------------------------+---------------------+--------+ | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | +----------+-------------------------+---------------------+--------+ 查看MySQL当前的字符集设置情况...

ch03 - MySQL的备份与恢复

备份数据库的意义 运维工作到底是什么工作,到底是做什么? 运维工作简单的概括就两件事: 一是保护公司的数据;二是网站7*24小时提供服务。 那么对数据丢失一部分和网站7*24小时提供服务那个更重要呢? 都很重要,只是说相比哪个更为重要?这个具体要看业务个公司。例如:银行、金融行业,数据是最重要的,一条都不能丢,可能宕机停机影响就没那么大。百度搜索,腾讯qq聊天记录丢失了几万条数据,都不算啥。 对于数据来讲,数据最核心的就是数据库数据。 备份单个数据库练习多种参数的使用 MySQL数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: sql 1 mysqldump -u UserName -p PassWord dbName > backName.sql 备份库 sql 1 mysqldump -S /data/3306/mysql.sock -uroot -p test>mysql.sql 检查备份结果 sql 1 2 3 4 5 6 7 8 9 10 11 12 $ egrep -v "#|\*|--|^$" ./mysql.sql DROP TABLE IF EXISTS `test1`; CREATE TABLE `test1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `num1` varchar(20) NOT NULL, `num2` varchar(20) NOT NULL, `num3` varchar(20) NOT NULL, `num4` int(11) NOT NULL DEFAULT '0' COMMENT 'test1', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2000001 DEFAULT CHARSET=utf8; LOCK TABLES `test1` WRITE; INSERT INTO `test1` VALUES (1,'1455577','9779520','4530868',0), 注:因为导出时的格式没有加字符集,一般恢复到数据库里会正常,只是系统外查看不正常而已。另外,insert是批量插入的方式,这样在恢复时效率很高。...

ch01 - Linux下安装Mysql

MySQL数据库简介 编程语言排名:http://www.tiobe.com/tiobe-index 数据库排名:http://db-engines.com/en/ranking MySQL数据库分类与版本升级 MySQL数据库官网为http://www.mysql.com,其发布的MySQL版本采用双授权政策,和大多数开源产品的路线一样,分别为社区版和商业版,而这两个版本又各自分四个版本依次发布,这四个版本为Alpha版、Beta版、RC版和GA版(GA正式发布版) MySQL数据库商业版和社区版的区别 在前面的内容已经阐述过了,MySQL的版本发布采用双授权政策,即分为社区版和商业版,而这两个版本又各自分四个版本依次发布:Alpha版、Beta版、RC版和GA版(GA正式发布版) Alpha版 Alpha版一般只在开发的公司内部运行,不对外公开。主要死开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致。MySQL是属于开放源代码的开源产品,因此需要世界各地开发者、爱好者和用户参与软件的开发测试和手册编写等工作。所以会对外公布此版本的源码和产品,方便任何人可以参与开发测试工作,甚至编写与修改用户手册。 Beta版 Beta版一般是完成功能的开发和所有的测试工作时候的产品,不会存在较大的功能或性能BUG,并且邀请或提供给公户体验与测试,以便更全面地测试软件的不足之处或存在的问题。 RC版 RC版属于生产环境发布之前的一个小版本或称候选版,是根据Beta测试结果,收集到的BUG或缺陷之处等收集到信息,进行修复和完善之后的新一版本 GA版 GA版是软件产品正式发布的版本,也称生产版本的产品。一般情况下,企业生产环境都会选择GA版本的MySQL软件,用于真实的生产环境中。偶尔有个别的大型企业会追求新功能驱动而牺牲稳定性使用其他版本,但这个是个例。 MySQL四中发布版本选择说明 MySQL AB官方网站会把五种数据库版本都提供下载,主要是MySQL数据库属于开发源代码的数据库产品,鼓励全球的技术爱好者参与研发、测试、文档编写和经验分享,甚至包过产品发展规划,对于Development版本、Alpha版本和Beta版本是绝对不允许使用在任何生产环境,毕竟这是一个GA版本之前,也即生产版本发布之前的一个小版本。另外,对MySQL数据库GA版本,也是需要慎重选择,开源社区产品毕竟不是经过严格的测试工序完成的产品,是全球开源技术人员的资源完成的,会存在比商业产品稳定性弱的缺陷。更严格的选择见后文。 MySQL产品路线 MySQL产品路线变更历史背景 早起MySQL也是遵循版本号逐渐增加的方式发展的,格式例如:mysql-x.xx.xx.tar.gz,例如DBA都非常熟悉的生产场景版本:4.1.7、5.0.56等。 近几年,为了提高MySQL产品的竞争优势、以及提高性能、降低开发维护成本等原因,同时,更方便企业用户更精准的选择适合的版本产品用于自己的企业生产环境中。 MySQL在发展到5.1系列版本之后,重新规划为3条产品线 5.0.xx到5.1.xx产品线介绍 第一条产品线:5.0.xx及升级到5.1.xx的产品系列,这条产品线继续完善与改进其用户体验和性能,同时增加新功能,这条路线可以说是MySQL早起产品的延续系列,这一系列的产品发布情况及历史版本如下: MySQL 5.1是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布;没有增加会影响稳定性的新功能。 MySQL 5.1:Previous stable(production-quality) release MySQL 5.0是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布;没有增加会影响该系列的重要功能。 MySQL 5.0:Old stable release nearing the end of the product lifecycle MySQL 4.0和3.23是旧的稳定(产品质量)发布系列。该版本不再使用,新的发布只用来修复特别严重的漏洞(以前的安全问题)。 5.4.xx开始到5.7.xx产品线系列介绍 为了更好的整合MySQL AB公司社区和第三方公司开发的新存储引擎,以及吸收新的实现算法等,从而更好的支持SMP架构,提高性能而做了大量的代码重构。版本号为从5.4.xx开始,目前发展到了5.6.x 主流:互联网公司用mysql5.5,逐步过渡到5.6。 6.0.xx-7.1.xx产品线系列介绍 第三条产品线:为了更好的推广MySQL Cluster版本,以及提高MySQL Cluster的性能和稳定性,以及功能改进和增加,以及改动mysql基础功能,使其对Cluster存储引擎提供更有效地支持与优化。版本号为6.0.xx开发,目前发展到7.1.xx MySQL数据库软件命名介绍 MySQL数据库软件的名字是由3个数字和一个后缀组成的版本号。例如,像 mysql-5.0.56.tar.gz 的版本号这样解释: 第一个数字(5)为主版本号,描述了文件格式。所有版本5发行都有相同文件格式。 第二个数字(0)为发行级别,主版本号和发行级别组合到一起便构成了发行序列号。 第三个数字(56 为在此发行系列的版本号,随每个新分发版本递增。通常你需要已经选择的发行(release)的最新版本。 每次更新后,版本字符串的最后一个数字递增。如果相对于前一个版本增加了新功能或有微小的不兼容性,字符串的第二个数字递增。如果文件格式改变,第一个数字递增。 后缀显示发现的稳定性级别。通过一系列后缀显示如何改进稳定性。可能的后缀有: alpha 表明发行包含大量未被彻底测试的新代码。已知的缺陷应该在新闻小节被记录。请参见附录D:MySQL变更史。在大多数alpha版本中也有新的命令和扩展。alpha版本也可能有主要代码更改等开发。但我们在发布前一定对其进行测试。 beta 意味着该版本功能是完整的,并且所有的新代码被测试了,没有增加重要的新特征,应该没有已知的缺陷。当alpha版本至少一个月没有出现报导的致命漏洞,并且没有计划增加导致已经实施的功能不稳定的新功能时,版本则从alpha版变为beta版。在以后的beta版、发布版或产品发布中,所有API、外部可视结构和SQL命令列均不再更改。 rc 是发布代表;是一个发行了一段时间的beta版本,看起来应该运行正常。只增加了很小的修复。(发布代表即以前所称的gamma 版) 如果没有后缀,这意味着该版本已经在很多地方运行一段时间了,而且没有非平台特定的缺陷报告。只增加了关键漏洞修复修复。这就是我们称为一个产品(稳定)或“通用”版本的东西。...

同步工具rsync使用指南

Overview 官方网站:https://www.samba.org/ftp/rsync/rsync.html rsync特性 rsync类似于scp的功能 rsync还可以在本地的不同分区和目录之间进行全量及增量的复制数据,类似cp又优于cp rsync可以实现文件的删除 一个rsync相当于 scp cp rm,但是还优于他们每一个 支持拷贝特殊文件如链接文件,设备等 可以有排除指定文件或目录的权限、时间、软硬链接、属主、组所有属性均不改变-p 可以有排除指定文件或目录的功能,相当于打包命令tar的排除功能 可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高tar。 可以使用rcp rsh ssh等方式来配合传输文件(rsync本身不对数据加密) 可以通过socket(进程方式)传输文件和数据 支持匿名的或认证(无须系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像 安装rsync linux上安装rsync Platform Command Debian/Ubuntu & Mint sudo apt-get install rsync Arch Linux pacman -S rsync Gentoo emerge sys-apps/rsync Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux sudo yum install rsync openSUSE sudo zypper install rsync windows安装rsync 官网下载cwRsync的服务端和客户端软件,cwRsync官网为:www.itefix.net/cwrsync Notes:由于伟大的 people‘s leader president xi 网站已经无法中国地区访问(点击测试),伟大的俄罗斯因为俄乌战争,也不对俄罗斯访问了(俄乌战争开始后,西方大量学术网站禁止了俄罗斯地区的访问) 所以目前只能下载到一些镜像站上4.x版本,截止到2022年11月的6.2.7相差很多,windows客户端版本可以通过chocolate 安装 rsync使用说明 rsync命令语法 选项 注释说明 rsync rsync同步命令 option 为同步时的选项参数 src 为源,及待拷贝的分区、文件或目录等 dest 为目标分区、文件或目录等 rsync参数说明...

firewalld

1 firewalld的配置文件 以xml格式为主 bash 1 2 /etc/firewalld/ /usr/lib/firewalld/ 使用时的规则是这样的:当需要一个文件时firewalld会首先到第一个目录中查找,如果找到直接使用,否则会继续到第二个目录中查找。 1.1 配置文件结构 firewalld的配置文件主要有两个文件和三个目录 文件:firewalld.conf、lockdown-whitelist.xml 目录:zone services icmptypes 1.2 firewalld.conf firewalld的主配置文件,不过非常简单,只有五个配置项 defaultzone:默认使用的zone默认public minimalmark:标记最小值 cleanUpOnExit:退出当前firewalld后是否清除防火墙规则,默认值为yes; zones 保存zone配置文件 services 保存service配置文件 icmptypes 保存和icmp类型相关的配置文件 2 firewall操作 2.1 查看firewalld状态 bash 1 2 3 4 5 6 7 $ firewall-cmd --state not running $ systemctl start firewalld $ firewall-cmd --state running 2.2 不改变状态的条件下重新加载防火墙 bash 1 firewall-cmd --reload 获取支持的区域列表 bash 1 firewall-cmd --get-zone 获得所有支持的服务 bash 1 2 $ firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxypmwebapi pmwebapis pop3s postgresql proxy-dhcp radius redis rpc-bind samba samba-client smtp ssh telnet tftp tftp-clienttransmission-client vnc-server wbem-https 获取所有支持的ICMP类型...

Keepalived 高可用集群应用实践

Keepalived介绍 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。 Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。所以,Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。 Keepalived服务的三个重要功能 管理LVS负载均衡软件 早期的LVS软件,需要通过命令行或脚本实现管理,并且没有针对LVS节点的健康检查功能。为了解决LVS的这些使用不便的问题,Keepalived就诞生了,可以说,Keepalived软件起初是专为解决LVS的问题而诞生的。因此,Keepalived和LVS的感情很深,它们的关系如同夫妻一样,可以紧密地结合,愉快地工作。Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能,这使得LVS的应用更加简单方便了。LVS和Keepalived的组合应用不是本章的内容范围。 实现对LVS集群节点健康检查功能(healthcheck) 前文已讲过,Keepalived可以通过在自身的keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务。 作为系统网络服务的高可用功能(failover) Keepalived可以实现任意两台主机之间,例如Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡、Nginx反向代理这样的服务器。 Keepalived高可用功能实现的简单原理为,两台主机同时安装好Keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备;当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务;而当角色为Master的主机故障修复后,又会自动接管回它原来处理的工作,角色为Backup的主机则同时释放Master主机失效时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始角色及工作状态。 说明:Keepalived的高可用功能是本章的重点,后面除了讲解Keepalived高可用的功能外,还会讲解Keepalived配合Nginx反向代理负载均衡的高可用的实战案例。 Keepalived高可用故障切换转移原理 Keepalived高可用服务对之间的故障切换转移,是通过VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)来实现的。 在Keepalived服务正常工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。 什么是VRRP VRRP,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。 VRRP早期是用来解决交换机、路由器等设备单点故障的,下面是交换、路由的Master和Backup切换原理描述,同样适用于Keepalived的工作原理。 在一组VRRP路由器集群中,有多台物理VRRP路由器,但是这多台物理的机器并不是同时工作的,而是由一台称为Master的机器负责路由工作,其他的机器都是Backup。Master角色并非一成不变的,VRRP会让每个VRRP路由参与竞选,最终获胜的就是Master。获胜的Master有一些特权,比如拥有虚拟路由器的IP地址等,拥有系统资源的Master负责转发发送给网关地址的包和响应ARP请求。 VRRP通过竞选机制来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(Multicast)包(默认的多播地址224.0.0.18)形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址:00-00-5E-00-01-{VRID}。所以,在一个虚拟路由器中,不管谁是Master,对外都是相同的MAC和IP(称之为VIP)。客户端主机并不需要因Master的改变而修改自己的路由配置。对它们来说,这种切换是透明的。 在一组虚拟路由器中,只有作为Master的VRRP路由器会一直发送VRRP广播包(VRRP Advertisement messages),此时Backup不会抢占Master。当Master不可用时,Backup就收不到来自Master的广播包了,此时多台Backup中优先级最高的路由器会抢占为Master。这种抢占是非常快速的(可能只有1秒甚至更少),以保证服务的连续性。出于安全性考虑,VRRP数据包使用了加密协议进行了加密。 如果你在面试时,要你解答Keepalived的工作原理,建议用自己的话回答如下内容,以下为对面试官的表述: Keepalived高可用对之间是通过VRRP通信的: VRRP,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。 VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的。 VRRP用IP多播的方式(默认多播地址(224.0.0.18))实现高可用对之间通信。 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。 VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。 Keepalived服务的工作原理 介绍完了VRRP,接下来我再介绍一下Keepalived服务的工作原理: Keepalived高可用对之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。 在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒。 Keepalived高可用服务搭建 安装Keepalived 通过官方地址获取Keepalived源码软件包编译安装 sh 1 2 3 4 ./configure \ --prefix=/app/keepalived-\ --mandir=/usr/local/share/man make && make install 复制命令到/usr/sbin下 sh 1 ln -s /app/keepalived-1.3.5/sbin/keepalived /usr/sbin/ keepalived默认会读取/etc/keepalived/keepalived.conf配置文件...

LVS & keepalived 集群架构

LVS概述 负载均衡(Load Balance)集群提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载、带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 搭建负载均衡服务的需求 把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验. 单个重负载的运算分担到多台节点设备上做并发处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。 7*24小时服务保证,任意一个或多个有限后面节点设备宕机,要求不能影响业务。 在负载均衡集群中,所有计算机节点都应该提供相同的服务。集群负载均衡器所截获所有对该服务的入站请求。然后将这些请求尽可能的平均分配在所有集群节点上。 LVS (Linux Virtual Server)介绍 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可在UNIX、Linux平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立,是中国国内最早出现的自由软件项目之一 LVS项目介绍 http://www.linuxvirtualserver.org/zh/lvs1.html LVS集群的体系结构 http://www.linuxvirtualserver.org/zh/lvs2.html LVS集群中的IP负载均衡技术 http://www.linuxvirtualserver.org/zh/lvs3.html LVS集群的负载调度 http://www.linuxvirtualserver.org/zh/lvs4.html IPVS(LVS)发展史 早在2.2内核时,IPVS就已经以内核补丁的形式出现。 从2.4.23版本开始,IPVS软件就是合并到Linux内核的常用版本的内核补丁的集合。 从2.4.24以后IPVS已经成为Linux官方标准内核的一部分。 IPVS软件工作层次图 从上图可以看出,LVS负载均衡调度技术是在Linux内核中实现的,因此,被称之为Linux虚拟服务器(Linux virtual Server)。我们使用该软件配置LVS时候,不能直接配置内核中的ipvs,而需要使用ipvs的管理工具ipsadm进行管理. LVS技术点小结: 真正实现调度的工具是IPVS, 工作在Linux内核层面 LVS自导IPVS管理工具是ipvsadm keepalived实现管理IPVS及负载均衡器的高可用。 RedHat工具Piranha WEB管理实现调度的工具IPVS。 LVS体系结构与工作原理简单描述 LVS集群负载均衡器接受服务的所有入站客户端计算机请求,并根据调度算法决定那个集群几点应该处理回复请求。负载均衡器简称(LB)有时也被成为LVS Director简称Director LVS虚拟服务器的体系结构如下图所示,一组服务器通过告诉的局域网或者地理分布的广域网互相连接,在他们的前端有一个负载调度器(Load Balancer)。负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不收服务器集群的影响不需作任何修改。胸的伸缩性通过在服务集群中透明的加入和删除一各节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。由于我们的负载调度技术是在Linux内核中实现的,我们称之为Linux虚拟服务器(Linux Virtual Server)。 LVS基本工作过程图 **LVS基本工作过程图1:带颜色的小方块代表不同的客户端请求 LVS基本工作过程图2: 不同的客户端请求小方块经过负载均衡器,通过指定的分配策略被分发到后面的机器上 LVS基本工作过程图3: LVS基本工作过程图4: LVS相关术语命名约定 名称 缩写 说明 虚拟IP地址(Virtual IP Address) VIP VIP为Direcort用于向客户端计算机提供IP地址.如www.baidu.com域名就要解析到VIP上提供服务 真实IP地址(Real Server IP Address) RIP 在集群下面节点上使用的IP地址,物理IP地址 Director的IP地址(Director IP Address) DIP Director用于连接内外网络的IP地址,物理网卡上的IP地址,是负载均衡器上的IP 客户端主机IP地址(Client IP Address) CIP 客户端用户计算机请求集群服务器的IP地址,该地址用作发送给集群的请求的源IP地址 LVS集群内部的节点称为真实服务器(Real Server),也叫做集群节点。请求集群服务的计算机称为客户端计算机。...

使用fpm制作rpm包与搭建本地yum源

rpm 与 fpm 软件的安装方式 编译安装:优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长 yum安装:优点是全自动化安装,不需要为依赖问题发愁,缺点是自主性太差,软件的功能、存放位置都已经固定好了,不易变更。 编译源码:根据自己的需求做成 RMP包 ==> 搭建yum仓库 ==> yum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,一般人不会定制RPM包。 RPM概述 RPM全称是Red Hat Package Manager(RedHat包管理器)。几乎所有的Linux发型版本都使用这种形式的软件包管理安装、更新和卸载软件。 rpm命令有5种基本功能(不包括创建软件包):安装、卸载、升级、查询和验证。 关于rpm命令的使用可以用rpm –help来获得 rpmbuild rpmbuild是reahat系的原声打包命令,这个命令的使用难点主要在于spec文件编写,一个类似于kickstart的ks.cfg文件。 作为一个使用工具,种种繁琐,在没有替代品时还能存活。当有了其他简易工具时,他就到了完蛋的时候 fpm fpm 是将一种类型的包转换成另一种类型 支持的源类型包 类型 说明 dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm 对rpm进行转换 gem 对rubygem包进行转换 python 将python模块打包成相对应的类型 支持目标类型包 rpm 转换为rpm包 deb 转换为deb包 solaris 装环卫solaris包 puppet 转换为puppet模块 fpm安装 fpm是ruby写的,因此系统环境需要ruby,而且ruby版本号大于bshards运行的版本。 yum安装ruby模块 bash 1 yum install ruby rubygems ruby-devel -y 查看ruby的版本 bash 1 2 3 4 5 6 7 $ rpm -qa|grep ruby ruby-libs-1....