<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[静怡家园]]></title> 
<link>http://www.zhanghaijun.com/index.php</link> 
<description><![CDATA[书山有路勤为径，学海无涯苦作舟！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[静怡家园]]></copyright>
<item>
<link>http://www.zhanghaijun.com/post/978/</link>
<title><![CDATA[LSI阵列卡进行高效管理]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[网海拾贝]]></category>
<pubDate>Thu, 05 Feb 2026 06:27:36 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/978/</guid> 
<description>
<![CDATA[ 
	LSI公司（LSI Corporation）（NASDAQ：LSI）(中文：艾萨华)是一家总部位于加利福尼亚州米尔皮塔斯 (Milpitas) 的半导体和软件领先供应商，其主要产品包括：RAID控制器、SSD控制器、ReadChannel、Preamp、Axxia网络处理器和定制ASIC等，为加速数据存储中心与移动网络性能提供了许多领先的解决方案。<br/><br/>在目前各大知名品牌服务器厂商：IBM、DELL、HP、华为、联想、宝德、浪潮、中科曙光等服务器都使用LSI品牌的阵列卡作为服务器存储控制器，而且其性能其他品牌RAID控制器无与伦比，可见LSI阵列卡的优越性。<br/><br/> LSI阵列卡默认采用基于图形化的BIOS界面来管理，服务器在开机自检界面提示按CTRL+C、CTRL+R、CTRL+H等组合键进入，可使用鼠标或键盘来完成RAID的配置等，这种比较适合少量机器手工配置的场景。如果大量的服务器RAID的配置任采用这种方法就显得力不从心了，不过实际上LSI官方退出了基于命令行的管理软件来实现对RAID控制卡的配置与管理，在操作系统内安装软件，可直接对RAID控制卡的管理，同时也可使用带驱动的Linux内核+脚本即可实现大量服务器批量化自动配置RAID来提高管理效率。<br/><br/>目前LSI官方发布的基于SAS/SATA控制器RAID控制卡产品型号（芯片）有：LSI1064、LSI1086、LSI1078、LSI2008、LSI2208、lSI2308、LSI3008、LSI3108等。<br/><br/> 一般地，支持RAID 5的卡，我们称其为阵列卡，都可以使用LSI官方提供的MegaCli、SAS2IRCU等工具来管理，而不支持RAID 5的卡，我们称其为SAS卡，使用lsiutil工具来管理。HP的服务器则使用其特有的hpacucli工具来管理。<br/><br/>LSIUTIL<br/><br/>需要glibc.i686的支持，如果没有安装使用yum安装即可。源代码包，解压后直接可执行文件，适用于LSI1068系列阵列卡的管理。lsiutil有两种使用方法： 菜单的交互使用 和 命令行不带任何参数执行lsiutil，就会进入lsiutil的交互模式。加参数使用非交互模式<br/><br/>./lsiutil -p 1 -a 20,12,0,0&nbsp;&nbsp;&nbsp;&nbsp;查看硬盘计数器<br/><br/>./lsiutil -p 1 -a 21,1,0,0,0&nbsp;&nbsp;&nbsp;&nbsp; 查看逻辑卷状态<br/><br/>./lsiutil -p 1 -a 21,2,0,0,0&nbsp;&nbsp;&nbsp;&nbsp;查看物理硬盘状态<br/><br/>./lsiutil -p 1 -i –s&nbsp;&nbsp;&nbsp;&nbsp; 显示端口1的设置和连接的设备<br/><br/>./lsiutil –s&nbsp;&nbsp;&nbsp;&nbsp; 显示所有端口上连接的设备<br/><br/>./lsiutil -p 2 -l 1&nbsp;&nbsp;&nbsp;&nbsp; 强制HBA卡端口2连接速度为1Gb<br/><br/>MegaCli <br/><br/>可以在LSI官方网站或IBM官方下载，基于Windows平台是exe可执行文件，直接安装即可；基于Linux平台官方默认提供的是rpm格式包，直接使用rpm命令安装即可，安装完成后64位系统默认命令绝对路径为/opt/MegaRAID/MegaCli/MegaCli64，32位系统默认绝对路径为/opt/MegaRAID/MegaCli/MegaCli。<br/><br/>可实现对LSI2208等阵列卡的管理，如DELL服务器PERC 5、6、310、700、710、800和810系列阵列卡。具体使用命令如下：<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -h&nbsp;&nbsp;&nbsp;&nbsp;查看帮助信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL&nbsp;&nbsp;&nbsp;&nbsp;查看所有RAID卡信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -cfgclr -a0&nbsp;&nbsp;&nbsp;&nbsp;清除第一块RAID的所有配置，如果有多块RAID卡，a0代表第一块RAID卡，依次类推；如果只有一块RAID卡，那么就是a0。<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -cfglddel -L0 -a0&nbsp;&nbsp;&nbsp;&nbsp;清除第一块阵列卡第一个逻辑磁盘，L0代表第一个逻辑磁盘。<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -cfgldadd -r5[117:0,117:1,117:2] -wb -ra -cached -cachedbadbbu -force -a0&nbsp;&nbsp;&nbsp;&nbsp;在第一块RAID控制器上将前三块物理磁盘创建为RAID5，开启缓存策略。<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -CfgSpanAdd -r10 -Array0[245:0,245:1] Array1[245:2,245:3]&nbsp;&nbsp;-WB -RA -Cached&nbsp;&nbsp;-Cachedbadbbu -a0&nbsp;&nbsp;&nbsp;&nbsp;在第一块RAID卡上将前面4块物理磁盘，每2块一组配置为RAID10，开启缓存策略。（注意：LSI SAS2208最多支持64个RAID，支持128个子组，每个RAID最多支持16个子组。）<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -EncInfo -aALL&nbsp;&nbsp;&nbsp;&nbsp;查看所有物理硬盘信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpBootDrive -Set L0 -a0&nbsp;&nbsp;&nbsp;&nbsp;配置逻辑第一块磁盘为可引导磁盘<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -adpCount&nbsp;&nbsp;&nbsp;&nbsp;查看RAID控制器的数量<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpGetPciInfo -a0&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID卡的PCI信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -adpallinfo -a0&nbsp;&nbsp;&nbsp;&nbsp;查看RAID配置信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -CfgSave -f filename -a0&nbsp;&nbsp;&nbsp;&nbsp;将第一块RAID卡配置信息保存为一个文件<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -CfgRestore -f filename -a0&nbsp;&nbsp;&nbsp;&nbsp;从某个配置文件恢复配置到第一块RAID卡<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpFacDefSet -a0&nbsp;&nbsp;&nbsp;&nbsp;将第一块RAID卡恢复出厂设置<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set -PhysDrv [252:4,252:5] -a0&nbsp;&nbsp;&nbsp;&nbsp; 添加两块全局热备盘<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog -Clear -a0&nbsp;&nbsp;&nbsp;&nbsp;清除RAID卡日志信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog&nbsp;&nbsp;-IncludeDeleted -f deleted.txt -aALL 创建自从启动控制器以来的事件日志<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aALL&nbsp;&nbsp;&nbsp;&nbsp;查看电池信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL&nbsp;&nbsp;&nbsp;&nbsp;查看RAID卡日志信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL > ttylog.txt 将日志导出到文件<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -PdList -aALL &#124; egrep 'Firmware state &#124; SlotNumber'&nbsp;&nbsp;&nbsp;&nbsp;查看物理硬盘状态信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -L1 -a0&nbsp;&nbsp;&nbsp;&nbsp;删除第一块RAID卡上的第一个逻辑磁盘阵列信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -lALL -aALL&nbsp;&nbsp;&nbsp;&nbsp;查看逻辑磁盘信息<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpFwFlash -f 2208FW8.rom -Noverchk -a0&nbsp;&nbsp;&nbsp;&nbsp;升级RAID卡固件<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -Cfgclr -Force -a0&nbsp;&nbsp;&nbsp;&nbsp;清楚RAID卡配置<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -BbuLearn -aALL&nbsp;&nbsp;&nbsp;&nbsp;强制BBU重新充电<br/><br/>/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ProgDsply -PhysDrv [256:6] -a0&nbsp;&nbsp;&nbsp;&nbsp;查看物理应聘重新进进度信息<br/><br/>SAS2IRCU<br/><br/>sas2ircu是可执行文件不需要安装，直接使用，可对LSI2308阵列卡的管理，命令使用方法：<br/><br/>./sas2ircu -h&nbsp;&nbsp;&nbsp;&nbsp;查看帮助信息<br/><br/>./sas2ircu list&nbsp;&nbsp;&nbsp;&nbsp;查看所有RAID控制器信息<br/><br/>./sas2ircu 0 display&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID控制器、物理磁盘、逻辑磁盘等详细信息，0代表RAID卡编号，如果有多块RAID卡，那么从0开始编号，以此类推；如果只有一块RAID卡，那么就是0。<br/><br/>./sas2ircu 0 status&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID控制器所有逻辑磁盘信息<br/><br/>./sas2ircu 0 delete noprompt&nbsp;&nbsp;&nbsp;&nbsp;删除第一块RAID控制器上所有RAID配置<br/><br/>./sas2ircu 0 create raid 1 max 2:0 2:1 noprompt&nbsp;&nbsp;&nbsp;&nbsp;在第一块RAID控制器上将第一块与第二块物理磁盘配置为RAID1，分配最大使用空间。<br/><br/>./sas2ircu 0 create raid10 max 2:2 2:3 2:4 2:5 2:6 2:7 2:8 2:9 2:10 2:11 noprompt&nbsp;&nbsp;&nbsp;&nbsp;在第一块RAID控制器上将第三块到第十二块物理磁盘配置为RAID10，分配最大使用空间。（注意：LSI SAS2308最多支持2个RAID，单个RAID中最多支持10个硬盘。所有的RAID包含的硬盘总量最多14个，剩余硬盘只能以独立的“Physical drive”方式被LSI SAS2308管理。）<br/><br/>./sas2ircu 0 bootir 286&nbsp;&nbsp;&nbsp;&nbsp;设置Volume ID号为286的RAID组为预先可引导模式<br/><br/>./sas2ircu 0 hotspare 2:10&nbsp;&nbsp;&nbsp;&nbsp;配置第11块物理硬盘为热备<br/><br/>./sas2ircu 0 hotspare delete 2:10&nbsp;&nbsp;&nbsp;&nbsp;删除热备硬盘<br/><br/>./sas2ircu 0 logir&nbsp;&nbsp;&nbsp;&nbsp;上传或清除日志信息<br/><br/>这里，配置热备命令须要进行人机交互，bash环境下如果要实现自动应答可以用expect脚本实现，<br/><br/>#!/bin/bash<br/><br/>expect <<- END<br/><br/>spawn sas2ircu 0 hotspare 2:12<br/><br/>expect "(YES/NO)?"<br/><br/>send "yes&#92;n"<br/><br/>expect "(YES/NO)?"<br/><br/>send "no&#92;n"<br/><br/>expect eof<br/><br/>END<br/><br/>SAS2FLASH<br/><br/>sas2flash工具实现对RAID控制器固件程序的管理，是可执行文件不需要安装直接使用，刷新固件的命令：<br/><br/>sas2flash -o -f <firmware> -b <bios><br/><br/>./sas2flash -o -f 2118IT.BIN -b MPTSAS2.ROM<br/><br/>SAS3IRCU<br/><br/>对LSI3008阵列卡的管理，命令用法与sas2ircu类似。提供的为可执行文件无需安装<br/><br/>./sas3ircu -h&nbsp;&nbsp;&nbsp;&nbsp;查看帮助信息<br/><br/>./sas3ircu list&nbsp;&nbsp;&nbsp;&nbsp;查看所有RAID控制器信息<br/><br/>./sas3ircu 0 display&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID控制器、volume、物理磁盘等信息。这里数字0代表第一块RAID卡，依次类推。如果只有一块RAID卡，也是0。<br/><br/>./sas3ircu 0 status&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID控制器所有逻辑磁盘信息<br/><br/>./sas3ircu 0 delete noprompt&nbsp;&nbsp;&nbsp;&nbsp;删除第一块RAID控制器上所有RAID配置<br/><br/>./sas3ircu 0 create raid 1 max 2:0 2:1 noprompt&nbsp;&nbsp;&nbsp;&nbsp;在第一块RAID控制器上将第一块与第二块物理磁盘配置为RAID1，分配最大使用空间。<br/><br/>./sas3ircu 0 create raid10 max 2:2 2:3 2:4 2:5 2:6 2:7 2:8 2:9 2:10 2:11 noprompt&nbsp;&nbsp;&nbsp;&nbsp;在第一块RAID控制器上将第三块到第十二块物理磁盘配置为RAID10，分配最大使用空间。（注意：LSI SAS3008最多支持2个RAID，单个RAID中最多支持10个硬盘。所有的RAID包含的硬盘总量最多14个，剩余硬盘只能以独立的“Physical drive”方式被LSI SAS3008管理。）<br/><br/>./sas3ircu 0 bootir 286&nbsp;&nbsp;&nbsp;&nbsp;设置Volume ID号为286的RAID组为预先可引导模式<br/><br/>./sas3ircu 0 hotspare 2:10&nbsp;&nbsp;&nbsp;&nbsp;配置第11块物理硬盘为热备<br/><br/>./sas3ircu 0 hotspare delete 2:10&nbsp;&nbsp;&nbsp;&nbsp;删除热备硬盘<br/><br/>./sas3ircu 0 logir&nbsp;&nbsp;&nbsp;&nbsp;上传或清除日志信息<br/><br/>SAS3FLASH<br/><br/>sas3flash更新RAID控制器固件程序，用法跟sas2flash类似<br/><br/>STORCLI<br/><br/>对LSI3108阵列卡的管理，官方提供的rpm安装包，使用rpm命令安装完成后，64位系统命令的绝对路径为：/opt/MegaRAID/storcli/storcli64，32位系统命令的绝对路径为：/opt/MegaRAID/storcli/storcli。<br/><br/>/opt/MegaRAID/storcli/storcli64 -v&nbsp;&nbsp;&nbsp;&nbsp;显示软件版本信息<br/><br/>/opt/MegaRAID/storcli/storcli64 -h&nbsp;&nbsp;&nbsp;&nbsp;查看帮助信息<br/><br/>/opt/MegaRAID/storcli/storcli64 show&nbsp;&nbsp;&nbsp;&nbsp;查看RAID卡、系统内核、主机名等信息<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show all&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID卡版本、功能、状态、以及raid卡下的物理磁、逻辑盘信息。c0代表第一块raid卡，如果有多块则命令以此类推。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show freespace&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID卡剩下的磁盘空间<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show rebuildrate&nbsp;&nbsp;&nbsp;&nbsp;查看第一块RAID卡rebuildrate速度<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 download file=mr3108fw.rom&nbsp;&nbsp;&nbsp;&nbsp;升级第一块RAID卡固件<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 restart&nbsp;&nbsp;&nbsp;&nbsp;升级固件后重启RAID卡以便新固件及时生效<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 flushcache&nbsp;&nbsp;&nbsp;&nbsp; 清除第一块RAID卡缓存<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /eall /sall show all&nbsp;&nbsp;&nbsp;&nbsp; 查看第一块RAID卡上物理磁盘详细信息<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /e252 /s0 start locate 定位第一块RAID上某块物理磁盘，物理磁盘的绿色的定位灯会闪烁。 e代表Enclosure，s代表Slot或PD<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0&nbsp;&nbsp;/ex /sx stop locate&nbsp;&nbsp;&nbsp;&nbsp;停止定位，定位灯停止闪烁。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /e252 /sall show rebuild&nbsp;&nbsp;查看磁盘重建进度<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /ex /sx start rebuild&nbsp;&nbsp;&nbsp;&nbsp;开始重建<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /ex /sx stop rebuild&nbsp;&nbsp;&nbsp;&nbsp;停止重建<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /ex /sx add hostsparedrive dgs=0&nbsp;&nbsp;&nbsp;&nbsp;设置某块物理磁盘为磁盘组0的热备盘，如果不指定dgs，则为该RAID卡上全局热备盘。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /ex /sx delete hostsparedrive&nbsp;&nbsp;&nbsp;&nbsp;删除热备磁盘<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 add vd each type=raid0 drives=252:0,1,2,3&nbsp;&nbsp;&nbsp;&nbsp; 单独为每一块物理磁盘创建raid0<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid5 size=all names=tmp1 drives=32:2-4&nbsp;&nbsp;&nbsp;&nbsp;由第3、4、5块物理磁盘来构建RAID5，分配所有空间的逻辑磁盘命名tmp1。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid10 size=all names=tmp1 drives=32:0-3 pdperarray=2&nbsp;&nbsp;&nbsp;&nbsp;由前四块物理磁盘构建raid10，分配所有空间的逻辑磁盘命名为tmp1。（注意：LSI SAS3108最多支持64个RAID，创建10/50/60时，必须指定pdperarray参数。如果没有这个参数，是创建不成功的。这个参数的含义是：Specifies the number of physical drives per array. The default value is automatically chosen。）<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid10 size=100GB,200GB names=tmp1,tmp2 drives=32:0-3 pdperarray=2&nbsp;&nbsp;&nbsp;&nbsp;由前四块物理磁盘构建raid10，分别分配多个逻辑磁盘。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid10 size=all names=tmp3 drives=32:0-3 pdperarray=2&nbsp;&nbsp;&nbsp;&nbsp;剩下的所有空间分配给逻辑磁盘tmp3。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /vall show all&nbsp;&nbsp;&nbsp;&nbsp; 显示第一块RAID卡上所有逻辑磁盘相关信息，也可指定某个逻辑磁盘v0，v1等等。<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /v0 show&nbsp;&nbsp;&nbsp;&nbsp; 显示第一块RAID卡上第一个逻辑磁盘信息<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /v0 del force&nbsp;&nbsp; 强制删除某个逻辑磁盘<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /bbu show all&nbsp;&nbsp; 显示bbu信息<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /vall set wrcache=wt/wb/awb 设置写策略<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show alarm&nbsp;&nbsp;&nbsp;&nbsp;查看报警器信息<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 set alarm=silence&nbsp;&nbsp; 暂时关闭报警器鸣叫<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 set alarm=off&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 始终关闭报警器鸣叫<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /e252 /s3 set good&nbsp;&nbsp;&nbsp;&nbsp;改变插入的物理磁盘的状态<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /e252 /s3 start initialization&nbsp;&nbsp;&nbsp;&nbsp;初始化某个物理磁盘<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /e252 /s3 show initialization&nbsp;&nbsp;&nbsp;&nbsp;查看某个初始化的物理磁盘进度<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /v0 set wrcache=wt&nbsp;&nbsp; 修改vd的写策略<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /v0 set rdcache=nora&nbsp;&nbsp; 修改vd的读策略<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /fall show&nbsp;&nbsp; 查看foreign信息<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 /fall import&nbsp;&nbsp;&nbsp;&nbsp;导入foreign<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show termlog type=contents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在线查看日志<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show termlog type=contents &#124; grep "rebuild"&nbsp;&nbsp;&nbsp;&nbsp;在线查看日志抽取关键字<br/><br/>/opt/MegaRAID/storcli/storcli64 /c0 show events file=/home/eventreports&nbsp;&nbsp;&nbsp;&nbsp;将日志存储为文件<br/><br/>文章来源：https://www.cnblogs.com/zhangxinglong/p/7267690.html<br/>Tags - <a href="http://www.zhanghaijun.com/tags/lsiutil/" rel="tag">lsiutil</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/977/</link>
<title><![CDATA[-bash: fuser: command not found]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[技术文章]]></category>
<pubDate>Tue, 10 Jul 2018 07:07:14 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/977/</guid> 
<description>
<![CDATA[ 
	CentOS 7.5 最小化安装之后突遇停电，导致系统无法正常启动直接进入修复模式，经过文件系统修复之后系统开机启动。<br/><br/>进系统之后，启动某些服务发现仍然有分区文件损坏，于是想要卸载分区挂载点来修复文件系统，结果执行umount的时候无法卸载，逐执行fuser命令查看是什么进程在占用，结果直接报-bash: fuser: command not found，找不到此命令。<br/><br/>一般这种错误就是系统没有安装相关的包，所以没有这个命令，解决方法很简单，找到这个命令在哪个包里，安装上就可以了，但是麻烦的就是很多命令你不知道是在哪个包里面，还好yum有个功能可以查到某个命令在哪个包里面，使用yum provides&nbsp;&nbsp;ifconfig，yum provides lsof，yum provides fuser等可以查到这个命令的安装包是什么，用起来很方便。<br/><textarea name="code" class="c" rows="15" cols="100"># yum provides fuser
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
psmisc-22.20-15.el7.x86_64 : Utilities for managing processes on your system
Repo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: base
Matched from:
Filename&nbsp;&nbsp;&nbsp;&nbsp;: /usr/sbin/fuser

psmisc-22.20-15.el7.x86_64 : Utilities for managing processes on your system
Repo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: @base
Matched from:
Filename&nbsp;&nbsp;&nbsp;&nbsp;: /usr/sbin/fuser
</textarea><br/>知道在哪个包里使用yum安装即可。<br/><textarea name="code" class="c" rows="15" cols="100">
# yum -y install psmisc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; 3.6 kB&nbsp;&nbsp;00:00:00&nbsp;&nbsp;&nbsp;&nbsp; 
extras&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; 3.4 kB&nbsp;&nbsp;00:00:00&nbsp;&nbsp;&nbsp;&nbsp; 
updates&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124; 3.4 kB&nbsp;&nbsp;00:00:00&nbsp;&nbsp;&nbsp;&nbsp; 
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package psmisc.x86_64 0:22.20-15.el7 will be installed
--&gt; Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================
 Package&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Repository&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size
=========================================================================================================================================================
Installing:
 psmisc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x86_64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22.20-15.el7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 141 k

Transaction Summary
=========================================================================================================================================================
Install&nbsp;&nbsp;1 Package

Total download size: 141 k
Installed size: 475 k
Downloading packages:
psmisc-22.20-15.el7.x86_64.rpm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124; 141 kB&nbsp;&nbsp;00:00:00&nbsp;&nbsp;&nbsp;&nbsp; 
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
&nbsp;&nbsp;Installing : psmisc-22.20-15.el7.x86_64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1 
&nbsp;&nbsp;Verifying&nbsp;&nbsp;: psmisc-22.20-15.el7.x86_64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1/1 

Installed:
&nbsp;&nbsp;psmisc.x86_64 0:22.20-15.el7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

Complete!
</textarea><br/><br/>Tags - <a href="http://www.zhanghaijun.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.zhanghaijun.com/tags/fuser/" rel="tag">fuser</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/976/</link>
<title><![CDATA[CentOS 5的yum源更换为阿里云可用源]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[Linux技术]]></category>
<pubDate>Wed, 15 Mar 2017 04:32:27 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/976/</guid> 
<description>
<![CDATA[ 
	最近在老的机器（CentOS 5）上使用yum的时候发现不能正常使用，打开相关源的地址之后发现很多源都已经抛弃了CentOS 5了，大家常用的如：<br/>1、网易：http://mirrors.163.com/centos/<br/>2、搜狐：http://mirrors.sohu.com/centos/<br/>3、科技大学：http://mirrors.ustc.edu.cn/centos/<br/>无一例外，全都不可使用了，于是前往阿里云的镜像源看看，发现阿里云的源还保留着，阿里云Linux安装镜像源地址：http://mirrors.aliyun.com/，这样就简单了，只需将系统的更新源替换为阿里云的即可。<br/>CentOS系统更换软件安装源：<br/>1、备份<textarea name="code" class="c" rows="15" cols="100">mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup</textarea><br/>2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/<br/><textarea name="code" class="c" rows="15" cols="100">CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo</textarea><br/>3、之后运行yum makecache生成缓存<br/><textarea name="code" class="c" rows="15" cols="100">yum clean all
yum makecache</textarea><br/>如果你使用的是阿里云的服务器，将源的域名从mirrors.aliyun.com改为mirrors.aliyuncs.com,不占用公网流量。<br/><textarea name="code" class="c" rows="15" cols="100">#批量替换：
sed -i 's#mirrors.aliyun.com#mirrors.aliyuncs.com#' /etc/yum.repos.d/CentOS-Base.repo</textarea><br/>Tags - <a href="http://www.zhanghaijun.com/tags/linux/" rel="tag">linux</a> , <a href="http://www.zhanghaijun.com/tags/yum/" rel="tag">yum</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/975/</link>
<title><![CDATA[CentOS ProFtpd 一键安装脚本]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[服务器类]]></category>
<pubDate>Wed, 15 Feb 2017 07:59:23 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/975/</guid> 
<description>
<![CDATA[ 
	<textarea name="code" class="c" rows="15" cols="100">#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# Check if user is root
if [ $(id -u) != &quot;0&quot; ]; then
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Error: You must be root to run this script!&quot;
&nbsp;&nbsp;&nbsp;&nbsp;exit 1
fi
clear
echo &quot;+----------------------------------------------------------+&quot;
echo &quot;&#124;Author:jingyihome&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#124;&quot;
echo &quot;+----------------------------------------------------------+&quot;
echo &quot;&#124;E-mail:webmaster@zhanghaijun.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&quot;
echo &quot;+----------------------------------------------------------+&quot;
echo &quot;&#124;Website:http://www.zhanghaijun.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&quot;
echo &quot;+----------------------------------------------------------+&quot;
echo &quot;&#124;Usage: ./proftpd.sh or ./proftpd.sh install&#124;uninstall&nbsp;&nbsp;&nbsp;&nbsp; &#124;&quot;
echo &quot;+----------------------------------------------------------+&quot;
cur_dir=$(pwd)

Proftpd_Ver=&#039;proftpd-1.3.6rc2&#039;
installdir=&quot;/usr/local/proftpd&quot;

Install_Proftpd()
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[32m Installing dependent packages... &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yum -y install make gcc gcc-c++ gcc-g77 openssl openssl-devel wget

&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[32m Download files... &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;cd $&#123;cur_dir&#125;/
&nbsp;&nbsp;&nbsp;&nbsp;wget --no-check-certificate https://soft.loveyan.com/ftp/proftpd/$&#123;Proftpd_Ver&#125;.tar.gz $&#123;cur_dir&#125;/$&#123;Proftpd_Ver&#125;.tar.gz
&nbsp;&nbsp;&nbsp;&nbsp;if [ $? -eq 0 ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Download $&#123;Proftpd_Ver&#125;.tar.gz successfully!&quot;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wget ftp://ftp.proftpd.org/distrib/source/$&#123;Proftpd_Ver&#125;.tar.gz $&#123;cur_dir&#125;/$&#123;Proftpd_Ver&#125;.tar.gz
&nbsp;&nbsp;&nbsp;&nbsp;fi

&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[32m Installing proftpd... &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;tar xzvf $&#123;Proftpd_Ver&#125;.tar.gz $&#123;Proftpd_Ver&#125;
&nbsp;&nbsp;&nbsp;&nbsp;cd $&#123;Proftpd_Ver&#125;
&nbsp;&nbsp;&nbsp;&nbsp;./configure --prefix=$&#123;installdir&#125;

&nbsp;&nbsp;&nbsp;&nbsp;make &amp;&amp; make install

&nbsp;&nbsp;&nbsp;&nbsp;cd $&#123;cur_dir&#125;/
&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[32m Create configure files... &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;mv $&#123;installdir&#125;/etc/proftpd.conf $&#123;installdir&#125;/etc/bak_proftpd.conf
&nbsp;&nbsp;&nbsp;&nbsp;wget --no-check-certificate https://soft.loveyan.com/ftp/proftpd/proftpd.conf
&nbsp;&nbsp;&nbsp;&nbsp;if [ $? -eq 0 ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sed -i &quot;s#/usr/local/ftp/proftpd#$&#123;installdir&#125;#g&quot; $&#123;cur_dir&#125;/proftpd.conf
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mv $&#123;cur_dir&#125;/proftpd.conf $&#123;installdir&#125;/etc/
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[31m Download proftpd.conf failed! &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1
&nbsp;&nbsp;&nbsp;&nbsp;fi

&nbsp;&nbsp;&nbsp;&nbsp;if [ -L /etc/init.d/proftpd ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rm -f /etc/init.d/proftpd
&nbsp;&nbsp;&nbsp;&nbsp;fi

&nbsp;&nbsp;&nbsp;&nbsp;wget --no-check-certificate https://soft.loveyan.com/ftp/proftpd/proftpdinit
&nbsp;&nbsp;&nbsp;&nbsp;if [ $? -eq 0 ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sed -i &quot;s#/usr/local/ftp/proftpd#$&#123;installdir&#125;#g&quot; $&#123;cur_dir&#125;/proftpdinit
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mv $&#123;cur_dir&#125;/proftpdinit /etc/init.d/proftpd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chmod +x /etc/init.d/proftpd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; touch $&#123;installdir&#125;/etc/ftpd.passwd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chmod 600 $&#123;installdir&#125;/etc/ftpd.passwd
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[31m Download proftpdinit failed! &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1
&nbsp;&nbsp;&nbsp;&nbsp;fi

&nbsp;&nbsp;&nbsp;&nbsp;rm -rf $&#123;cur_dir&#125;/$&#123;Proftpd_Ver&#125;

&nbsp;&nbsp;&nbsp;&nbsp;if [ -s /sbin/iptables ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sbin/iptables -I INPUT -p tcp --dport 50000:53000 -j ACCEPT
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -e &quot;&#92;033[32m iptables was not installed! &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;fi

&nbsp;&nbsp;&nbsp;&nbsp;service iptables save

&nbsp;&nbsp;&nbsp;&nbsp;if [[ -s $&#123;installdir&#125;/sbin/proftpd &amp;&amp; -s $&#123;installdir&#125;/etc/proftpd.conf &amp;&amp; -s /etc/init.d/proftpd ]]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Starting proftpd...&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/etc/init.d/proftpd start
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ln -s $&#123;installdir&#125;/bin/ftpasswd /bin/ftpasswd
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;+----------------------------------------------------------------------------------------------------------------------------+&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&#124; Install ProFTPd completed,enjoy it!&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&#124; =&gt;use:ftpasswd --passwd --file=$&#123;installdir&#125;/etc/ftpd.passwd --name=X --uid=X --gid=X --home=dir --shell=/bin/false&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;+----------------------------------------------------------------------------------------------------------------------------+&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&#124; For more information please visit http://www.zhanghaijun.com/post/975/&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;+----------------------------------------------------------------------------------------------------------------------------+&quot;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[31m Proftpd install failed! &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;fi
&#125;

Uninstall_Proftpd()
&#123;
&nbsp;&nbsp;&nbsp;&nbsp;if [ ! -f $installdir/sbin/proftpd ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[31m Proftpd was not installed! &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1
&nbsp;&nbsp;&nbsp;&nbsp;fi
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Stop proftpd...&quot;
&nbsp;&nbsp;&nbsp;&nbsp;/etc/init.d/proftpd stop
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Remove service...&quot;
&nbsp;&nbsp;&nbsp;&nbsp;rm -f /etc/init.d/proftpd
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Delete files...&quot;
&nbsp;&nbsp;&nbsp;&nbsp;rm -rf $&#123;installdir&#125;
&nbsp;&nbsp;&nbsp;&nbsp;rm -rf /bin/ftpasswd
&nbsp;&nbsp;&nbsp;&nbsp;/sbin/iptables -D INPUT -p tcp --dport 21 -j ACCEPT
&nbsp;&nbsp;&nbsp;&nbsp;/sbin/iptables -D INPUT -p tcp --dport 50000:53000 -j ACCEPT
&nbsp;&nbsp;&nbsp;&nbsp;service iptables save
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;Proftpd uninstall completed.&quot;
&#125;

action=$1
[ -z $1 ] &amp;&amp; action=install
case &quot;$action&quot; in
install)
&nbsp;&nbsp;&nbsp;&nbsp;Install_Proftpd 2&gt;&amp;1 &#124; tee /root/proftpd-install.log
&nbsp;&nbsp;&nbsp;&nbsp;;;
uninstall)
&nbsp;&nbsp;&nbsp;&nbsp;Uninstall_Proftpd
&nbsp;&nbsp;&nbsp;&nbsp;;;
*)
&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[31m error! [$&#123;action&#125;] &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;echo -e &quot;&#92;033[32m Usage: `basename $0` &#123;install&#124;uninstall&#125; &#92;033[0m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;;;
esac
</textarea><br/>Tags - <a href="http://www.zhanghaijun.com/tags/centos/" rel="tag">centos</a> , <a href="http://www.zhanghaijun.com/tags/proftpd/" rel="tag">proftpd</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/974/</link>
<title><![CDATA[CentOS ProFtpd启动脚本]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[服务器类]]></category>
<pubDate>Wed, 15 Feb 2017 07:53:25 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/974/</guid> 
<description>
<![CDATA[ 
	<textarea name="code" class="c" rows="15" cols="100">#!/bin/bash
#
# chkconfig: 2345 85 15
# description: ProFTPd is an FTP server
# processname: proftpd

# Author:&nbsp;&nbsp; jingyihome
# E-mail:&nbsp;&nbsp; webmaster@zhanghaijun.com
# Website:&nbsp;&nbsp;https://www.zhanghaijun.com

# ProFTPd Settings
PROFTPD=&quot;/usr/local/ftp/proftpd/sbin/proftpd&quot;
PROCONF=&quot;/usr/local/ftp/proftpd/etc/proftpd.conf&quot;
PROPID=&quot;/usr/local/ftp/proftpd/var/proftpd.pid&quot;
RETVAL=0
prog=&quot;ProFTPd&quot;

start() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;echo -n $&quot;Starting $prog... &quot;
&nbsp;&nbsp;&nbsp;&nbsp;$PROFTPD -c $PROCONF
&nbsp;&nbsp;&nbsp;&nbsp;if [ &quot;$?&quot; = 0 ] ; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot; done&quot;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot; failed&quot;
&nbsp;&nbsp;&nbsp;&nbsp;fi
&#125;

stop() &#123;
&nbsp;&nbsp;&nbsp;&nbsp;echo -n $&quot;Stopping $prog...&nbsp;&nbsp;&quot;
&nbsp;&nbsp;&nbsp;&nbsp;if [ ! -e $PROPID ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo -n $&quot;$prog is not running.&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1
&nbsp;&nbsp;&nbsp;&nbsp;fi
&nbsp;&nbsp;&nbsp;&nbsp;kill `cat $PROPID`
&nbsp;&nbsp;&nbsp;&nbsp;if [ &quot;$?&quot; = 0 ] ; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot; done&quot;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot; failed&quot;
&nbsp;&nbsp;&nbsp;&nbsp;fi
&#125;

restart()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;echo $&quot;Restarting $prog...&quot;
&nbsp;&nbsp;&nbsp;&nbsp;$0 stop
&nbsp;&nbsp;&nbsp;&nbsp;sleep 2
&nbsp;&nbsp;&nbsp;&nbsp;$0 start
&#125;

status()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;if [ -e $PROPID ]; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $&quot;$prog is running.&quot;
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $&quot;$prog is not running.&quot;
&nbsp;&nbsp;&nbsp;&nbsp;fi
&#125;

case &quot;$1&quot; in
&nbsp;&nbsp;&nbsp;&nbsp;start)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;&nbsp;&nbsp;stop)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stop
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;&nbsp;&nbsp;restart)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restart
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;&nbsp;&nbsp;status)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;
&nbsp;&nbsp;*)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $&quot;Usage: $0 &#123;start&#124;stop&#124;restart&#124;status&#125;&quot;
esac
</textarea><br/>Tags - <a href="http://www.zhanghaijun.com/tags/centos/" rel="tag">centos</a> , <a href="http://www.zhanghaijun.com/tags/proftpd/" rel="tag">proftpd</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/973/</link>
<title><![CDATA[CentOS/RedHat Enterprise使用官方源安装MySQL]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[数据库类]]></category>
<pubDate>Wed, 18 Jan 2017 03:54:10 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/973/</guid> 
<description>
<![CDATA[ 
	一、RPM包下载地址：<br/><a href="http://dev.mysql.com/downloads/repo/yum/" target="_blank">http://dev.mysql.com/downloads/repo/yum/</a><br/><br/>请根据自己的操作系统，选择要下载的rpm包：<br/>Red Hat Enterprise Linux 7/CentOS 7<br/>mysql57-community-release-el7-9.noarch.rpm<br/>Red Hat Enterprise Linux 6/CentOS 6<br/>mysql57-community-release-el6-9.noarch.rpm<br/>Red Hat Enterprise Linux 5/CentOS 5<br/>mysql57-community-release-el5-7.noarch.rpm<br/><br/>以CentOS 6为例：<br/><div class="code">wget https://repo.mysql.com//mysql57-community-release-el6-9.noarch.rpm</div><br/><br/>二、安装：<br/><textarea name="code" class="c" rows="15" cols="100">[root@localhost ~]# rpm -Uvh mysql57-community-release-el6-9.noarch.rpm
warning: mysql57-community-release-el6-9.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;########################################### [100%]
&nbsp;&nbsp; 1:mysql57-community-relea########################################### [100%]</textarea><br/><br/>2.1、选择要安装的MySQL版本：<br/><textarea name="code" class="c" rows="15" cols="100">[root@localhost ~]# yum repolist all &#124; grep mysql
mysql-connectors-community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL Connectors Community&nbsp;&nbsp;&nbsp;&nbsp; enabled:&nbsp;&nbsp;&nbsp;&nbsp; 30
mysql-connectors-community-source MySQL Connectors Community - S disabled
mysql-tools-community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL Tools Community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enabled:&nbsp;&nbsp;&nbsp;&nbsp; 42
mysql-tools-community-source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL Tools Community - Source disabled
mysql-tools-preview&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL Tools Preview&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disabled
mysql-tools-preview-source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL Tools Preview - Source&nbsp;&nbsp; disabled
mysql55-community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL 5.5 Community Server&nbsp;&nbsp;&nbsp;&nbsp; disabled
mysql55-community-source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL 5.5 Community Server - S disabled
mysql56-community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL 5.6 Community Server&nbsp;&nbsp;&nbsp;&nbsp; disabled
mysql56-community-source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL 5.6 Community Server - S disabled
mysql57-community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL 5.7 Community Server&nbsp;&nbsp;&nbsp;&nbsp; enabled:&nbsp;&nbsp;&nbsp;&nbsp;164
mysql57-community-source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL 5.7 Community Server - S disabled
mysql80-community&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MySQL 8.0 Community Server&nbsp;&nbsp;&nbsp;&nbsp; disabled
mysql80-community-source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL 8.0 Community Server - S disabled</textarea><br/><br/>2.2、安装MySQL，默认安装的版本是5.7，所以不需要做任何的修改。<br/><textarea name="code" class="c" rows="15" cols="100">yum -y install mysql-community-server</textarea><br/><br/>2.3、安装其他版本，假如你想安装MySQL5.6或者其他版本,需要修改 /etc/yum.repos.d/mysql-community.repo文件。<br/><textarea name="code" class="c" rows="15" cols="100">vi /etc/yum.repos.d/mysql-community.repo
将[mysql57-community]内的enabled=1修改为enabled=0
将[mysql56-community]内的enabled=0修改为enabled=1
保存并退出
然后再执行 yum -y install mysql-community-server 安装的版本就是MySQL5.6了，选择MySQL5.5或者MySQL8.0的方法一样，把要选择的版本的[mysqlXX-community]下面的enabled=0改为enabled=1，不需要的版本的[mysqlXX-community]下面的enabled=1改为enabled=0，然后再执行yum -y install mysql-community-server安装。</textarea><br/><br/>三、启动MySQL服务<br/><textarea name="code" class="c" rows="15" cols="100">service mysqld start</textarea><br/><br/>3.1、查看MySQL状态<br/><textarea name="code" class="c" rows="15" cols="100">service mysqld status</textarea><br/><br/>对于MySQL5.7版本，系统初始化之后会生成root账户的密码，保存在日志文件里，使用grep &#039;temporary password&#039; /var/log/mysqld.log 查看初始密码，MySQL5.7的密码要求至少包含一个大写字母，一个小写字母，一个数字和一个特殊字符，并且总密码长度至少为8个字符。<br/><br/>3.2、修改密码<br/><textarea name="code" class="c" rows="15" cols="100">mysql -uroot -p 
输入你上面查看到的初始密码
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;MyNewPass4!&#039;;
修改root@localhost账户的密码为MyNewPass4!</textarea><br/><br/>3.3、安装其他MySQL产品和组件<br/><textarea name="code" class="c" rows="15" cols="100">yum --disablerepo=&#92;* --enablerepo=&#039;mysql*-community*&#039; list available
yum install package-name&nbsp;&nbsp;#package-name 为你选择要安装的包名如：mysql-community-client</textarea><br/><br/>官方文档：<br/>https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/<br/>Tags - <a href="http://www.zhanghaijun.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://www.zhanghaijun.com/tags/rpm/" rel="tag">rpm</a> , <a href="http://www.zhanghaijun.com/tags/yum/" rel="tag">yum</a> , <a href="http://www.zhanghaijun.com/tags/mysql5.5/" rel="tag">mysql5.5</a> , <a href="http://www.zhanghaijun.com/tags/mysql5.6/" rel="tag">mysql5.6</a> , <a href="http://www.zhanghaijun.com/tags/mysql5.7/" rel="tag">mysql5.7</a> , <a href="http://www.zhanghaijun.com/tags/mysql8.0/" rel="tag">mysql8.0</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/972/</link>
<title><![CDATA[工具控 InfluxDB+Grafana快速搭建自己的NewRelic,分析应用运行情况]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[开源世界]]></category>
<pubDate>Thu, 12 Jan 2017 06:59:51 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/972/</guid> 
<description>
<![CDATA[ 
	NewRelic 估计很多人都用过，但是这货非常贵，贵的一般人买不起，尤其是个人项目，可咱也要性能指标分析啊！那来自己搭建一个<br/><a href="http://www.zhanghaijun.com/attachment.php?fid=222" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=222" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>你需要三个工具:<br/><a href="http://influxdb.com/" target="_blank">InfluxDB</a> - Go 写的一个 Time series (不知道怎么翻译) 数据库，用于存储指标、事件、分析等数据；<br/><a href="http://grafana.org/" target="_blank">Grafana</a> - 一个纯静态的项目，用于访问 InfluxDB，自定义报表，也就是上面那个图的内容，可以自由编辑；<br/><a href="https://github.com/influxdb/influxdb-ruby" target="_blank">influxdb-ruby</a> - InfluxDB 的 Ruby 客户端库，用来写数据<br/>安装 InfluxDB<br/>InfluxDB 安装非常简单<br/>Mac<br/><div class="code">Homebrew 就可以安装<br/>$ brew update<br/>$ brew install influxdb</div><br/>Ubuntu<br/><div class="code"># for 64-bit systems<br/>wget http://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb<br/>sudo dpkg -i influxdb_latest_amd64.deb<br/><br/># for 32-bit systems<br/>wget http://s3.amazonaws.com/influxdb/influxdb_latest_i386.deb<br/>sudo dpkg -i influxdb_latest_i386.deb</div><br/>然后启动就可以了，帐号默认 root 密码 root 你可以打开它的 Web Admin 界面: http://127.0.0.1:8083/ 并创建一个数据库 rails_app<br/>Grafana 安装<br/>由于 Grafana 是存静态的，你只需要下载源代码解压，将它部署在 Nginx 上面就可以了，或者可以用 Python 的 SimpleHTTPServer 来跑<br/><div class="code">$ wget http://grafanarel.s3.amazonaws.com/grafana-1.9.1.tar.gz<br/>$ tar zxf grafana-1.9.1.tar.gz<br/>$ cd grafana-1.9.1<br/>$ python -m SimpleHTTPServer<br/>Serving HTTP on 0.0.0.0 port 8000 ...<br/></div><br/>然后打开 http://127.0.0.1:8000 就可以看到 Grafana 的界面了，剩下的事情自己摸索。<br/>数据埋点<br/>gem install influxdb<br/>或 Gemfile 加入 influxdb<br/>Rails 项目 config/initializers/influxdb.rb<br/><textarea name="code" class="c" rows="15" cols="100">
require &#039;influxdb&#039;
influx_config&nbsp;&nbsp;= YAML.load_file(&quot;#&#123;Rails.root&#125;/config/influxdb.yml&quot;)[Rails.env]
$influxdb = InfluxDB::Client.new(&quot;rails_app&quot;, hosts: [&quot;127.0.0.1&quot;], port: 8086, username: &quot;root&quot;, password: &quot;root&quot;)

# 关注 ActionController 的 process_action 通知，会收到所有的请求
ActiveSupport::Notifications.subscribe(&#039;process_action.action_controller&#039;) do &#124;*args&#124;
&nbsp;&nbsp;event = ActiveSupport::Notifications::Event.new(*args)

&nbsp;&nbsp;info = &#123;
&nbsp;&nbsp;&nbsp;&nbsp;action: &quot;#&#123;event.payload[:controller]&#125;##&#123;event.payload[:action]&#125;&quot;, 
&nbsp;&nbsp;&nbsp;&nbsp;runtime: event.duration,
&nbsp;&nbsp;&nbsp;&nbsp;db_runtime: event.payload[:db_runtime],
&nbsp;&nbsp;&nbsp;&nbsp;server: Socket.gethostname,
&nbsp;&nbsp;&nbsp;&nbsp;status: event.payload[:status] 
&nbsp;&nbsp;&#125;

&nbsp;&nbsp;$influxdb.write_point(&quot;process_action.action_controller&quot;, info)
end
</textarea><br/>然后数据就会慢慢的写入到 InfluxDB 的 rails_app 会有新表 process_action.action_controller 你可以回到 InfluxDb Admin 里面查询看看<br/>select * from process_action.action_controller;<br/>或者用 list series 查看所有的表<br/>list series;<br/>其它的选择<br/>除了用 Grafana 来展示统计的数据外，你还可以用 <a href="http://facette.io/" target="_blank">facette</a>，它也是支持 InfluxDB 的，也是一个 Go 写的 Web Server，包含 Web 界面，可以自由配置（目前看起来可用性没有 Grafana 好）。<br/>http://facette.io<br/><a href="http://www.zhanghaijun.com/attachment.php?fid=223" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=223" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>2016 更新，用了 Grafana 3.0.0<br/>收集系统数据用 <a href="https://influxdata.com/time-series-platform/telegraf/" target="_blank">Telegraf</a><br/><a href="http://www.zhanghaijun.com/attachment.php?fid=224" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=224" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>如何将influxdb的数据配置进grafana:<br/>https://www.rittmanmead.com/blog/2015/02/obiee-monitoring-and-diagnostics-with-influxdb-and-grafana/<br/>Tags - <a href="http://www.zhanghaijun.com/tags/influxdb/" rel="tag">influxdb</a> , <a href="http://www.zhanghaijun.com/tags/grafana/" rel="tag">grafana</a> , <a href="http://www.zhanghaijun.com/tags/newrelic/" rel="tag">newrelic</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/971/</link>
<title><![CDATA[Nginx开启单IP多SSL证书支持-TLS SNI support]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[服务器类]]></category>
<pubDate>Wed, 21 Dec 2016 03:17:19 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/971/</guid> 
<description>
<![CDATA[ 
	Nginx支持单IP多域名SSL证书需要OpenSSL支持，由于CentOS5.X系统自带的OpenSSL版本太低不支持，所以首先需要编译安装一个高版本的openssl，CentOS 6.X的系统自带的openssl版本大于0.98以上，一般编译好的nginx都是支持的。<br/><br/>检查nginx是否支持TLS SNI support：<br/>/usr/local/nginx/sbin/nginx -V<br/>nginx version: nginx/1.10.2<br/>TLS SNI support disabled<br/>configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module<br/><br/>TLS SNI support disabled 这样是不支持的。<br/><br/>查看openssl的版本：<br/><textarea name="code" class="c" rows="15" cols="100">[root@localhost ~]# openssl version -a
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
built on: Tue May 31 06:58:30 CDT 2016
platform: linux-x86_64
options:&nbsp;&nbsp;bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,16,int) blowfish(ptr2) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DOPENSSL_USE_NEW_FUNCTIONS -fno-strict-aliasing -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
OPENSSLDIR: &quot;/etc/pki/tls&quot;
engines:&nbsp;&nbsp;dynamic 
</textarea><br/><br/>下面开始升级openssl：<br/>wget ftp://ftp.openssl.org/source/openssl-1.0.2h.tar.gz<br/>tar xzvf openssl-1.0.2h.tar.gz<br/>cd openssl-1.0.2h<br/>./config --prefix=/usr/local/openssl/ enable-shared enable-tlsext<br/>make &amp;&amp; make install<br/><br/>检查openssl的版本：<br/><textarea name="code" class="c" rows="15" cols="100">[root@localhost ~]# /usr/local/openssl/bin/openssl version -a
OpenSSL 1.0.2h&nbsp;&nbsp;21 Dec 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options:&nbsp;&nbsp;bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -I. -I.. -I../include&nbsp;&nbsp;-fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -fPIC -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: &quot;/usr/local/openssl/ssl&quot;
</textarea><br/><br/>编译nginx：<br/><textarea name="code" class="c" rows="15" cols="100">wget http://nginx.org/download/nginx-1.10.2.tar.gz
tar xzvf nginx-1.10.2.tar.gz
cd nginx-1.10.2/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module
make &amp;&amp; make install</textarea><br/><br/>检查现在是否支持TLS SNI support：<br/><textarea name="code" class="c" rows="15" cols="100">[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.2
built by gcc 4.1.2 20080704 (Red Hat 4.1.2-55)
built with OpenSSL 1.0.2h&nbsp;&nbsp;21 Dec 2016
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-openssl=/usr/local/openssl --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module</textarea><br/><br/>TLS SNI support enabled 现在已经支持了，再添加几个https的站点都正常了。<br/><br/><br/>Tags - <a href="http://www.zhanghaijun.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://www.zhanghaijun.com/tags/https/" rel="tag">https</a> , <a href="http://www.zhanghaijun.com/tags/ssl/" rel="tag">ssl</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/970/</link>
<title><![CDATA[nginx编译报.openssl/include/openssl/ssl.h] Error 127]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[服务器类]]></category>
<pubDate>Mon, 19 Dec 2016 09:25:33 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/970/</guid> 
<description>
<![CDATA[ 
	软件版本：OpenSSL 1.0.2h&nbsp;&nbsp;nginx/1.10.2<br/>错误信息：<br/><div class="code"><br/>make -f objs/Makefile<br/>make&#91;1&#93;: Entering directory `/data/2016/openresty-1.11.2.2/bundle/nginx-1.10.2&#039;<br/>cd /usr/local/openssl &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; if &#91; -f Makefile &#93;; then make clean; fi &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; ./config --prefix=/usr/local/openssl/.openssl no-shared&nbsp;&nbsp;&#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; make &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; make install_sw LIBDIR=lib<br/>/bin/sh: line 2: ./config: No such file or directory<br/>make&#91;1&#93;: *** &#91;/usr/local/openssl/.openssl/include/openssl/ssl.h&#93; Error 127<br/>make&#91;1&#93;: Leaving directory `/data/2016/openresty-1.11.2.2/bundle/nginx-1.10.2&#039;<br/>make: *** &#91;build&#93; Error 2<br/></div><br/>其实/usr/local/openssl/目录下面根本没有.openssl这个目录，找不到相关文件肯定会报错的了。<br/>解决方法也很简单：<br/><div class="code"><br/>vi auto/lib/openssl/conf<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_INCS=&quot;$CORE_INCS $OPENSSL/.openssl/include&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_DEPS=&quot;$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_LIBS=&quot;$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_LIBS=&quot;$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a&quot;<br/></div><br/>把31行到34行中的.openssl删除<br/><div class="code"><br/>&nbsp;&nbsp;&nbsp;&nbsp; 31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_INCS=&quot;$CORE_INCS $OPENSSL/include&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_DEPS=&quot;$CORE_DEPS $OPENSSL/include/openssl/ssl.h&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_LIBS=&quot;$CORE_LIBS $OPENSSL/lib/libssl.a&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 34&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORE_LIBS=&quot;$CORE_LIBS $OPENSSL/lib/libcrypto.a&quot;<br/></div><br/>保存之后，再make就编译通过了。<br/>Tags - <a href="http://www.zhanghaijun.com/tags/error/" rel="tag">error</a> , <a href="http://www.zhanghaijun.com/tags/127/" rel="tag">127</a> , <a href="http://www.zhanghaijun.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://www.zhanghaijun.com/tags/openssl/" rel="tag">openssl</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post/969/</link>
<title><![CDATA[CentOS下PhxSQL编译安装第二版]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[开源世界]]></category>
<pubDate>Fri, 09 Sep 2016 13:40:09 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post/969/</guid> 
<description>
<![CDATA[ 
	【注】官方已经更新了依赖的第三方包的版本，最新获取的文件编译安装会遇到之前没有遇到的问题，下面是用全新最小化安装的CentOS 6.7 来编译安装的，更新系统后是CentOS 6.8了。<br/><br/>CentOS 6 全新最小化安装的操作系统：<br/><div class="code">yum install -y patch make gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel kernel-headers libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel gmp-devel unzip automake libxslt libxslt-devel wget tar libcurl libcurl-devel libcap diffutils ca-certificates net-tools libc-client-devel psmisc libXpm-devel git git-core c-ares-devel libicu-devel libzip libzip-devel perl perl-devel python python-devel</div><br/><br/>#更新系统<br/>yum update<br/><br/>#相关依赖的包<br/>yum install -y readline readline-devel libstdc++-static glibc-static perl-Module-Install.noarch<br/><br/>一：获取源码：<br/>git clone --recursive https://github.com/tencent-wechat/phxsql.git （--recursive参数可以同时获得所依赖的第三方库colib,glog,leveldb,protobuf源码，和依赖库phxpaxos,phxrpc）<br/><br/>1.1：升级相关依赖的库及工具。<br/>1.1.1：autoconf<br/>下载地址：http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz<br/><div class="code">tar xzvf autoconf-2.69.tar.gz<br/>cd autoconf-2.69<br/>./configure --prefix=/usr/local/autoconf-2.69<br/>make &amp;&amp; make install<br/><br/>mv /usr/bin/autoconf /usr/bin/bak_autoconf<br/>mv /usr/bin/autoheader /usr/bin/bak_autoheader<br/>mv /usr/bin/autom4te /usr/bin/bak_autom4te<br/>mv /usr/bin/autoreconf /usr/bin/bak_autoreconf<br/>mv /usr/bin/autoscan /usr/bin/bak_autoscan<br/>mv /usr/bin/autoupdate /usr/bin/bak_autoupdate&nbsp;&nbsp; <br/>ln -sf /usr/local/autoconf-2.69/bin/autoconf /usr/bin/autoconf<br/>ln -sf /usr/local/autoconf-2.69/bin/autoheader /usr/bin/autoheader<br/>ln -sf /usr/local/autoconf-2.69/bin/autom4te /usr/bin/autom4te<br/>ln -sf /usr/local/autoconf-2.69/bin/autoreconf /usr/bin/autoreconf<br/>ln -sf /usr/local/autoconf-2.69/bin/autoscan /usr/bin/autoscan<br/>ln -sf /usr/local/autoconf-2.69/bin/autoupdate /usr/bin/autoupdate<br/></div><br/>1.1.2：automake<br/>下载地址：http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz<br/><div class="code">tar xzvf automake-1.14.tar.gz<br/>cd automake-1.14<br/>./configure --prefix=/usr/local/automake-1.14<br/>make &amp;&amp; make install<br/><br/>ln -sf /usr/local/automake-1.14/bin/aclocal-1.14 /usr/bin/aclocal-1.14<br/>ln -sf /usr/local/automake-1.14/bin/automake-1.14 /usr/bin/automake-1.14<br/>ln -sf /usr/local/automake-1.14/bin/aclocal-1.14 /usr/bin/aclocal-1.14<br/>mkdir /usr/share/automake-1.14<br/>ln -sf /usr/local/automake-1.14/share/automake-1.14/test-driver&nbsp;&nbsp;/usr/share/automake-1.14/test-driver<br/></div><br/>1.1.3：cmake<br/>下载地址：https://cmake.org/files/v3.6/cmake-3.6.1.tar.gz<br/><div class="code">tar xzvf cmake-3.6.1.tar.gz<br/>cd cmake-3.6.1<br/>./configure<br/>make &amp;&amp; make install<br/></div><br/>1.1.4：python<br/>下载地址：https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz<br/><div class="code">tar xzvf Python-2.7.12.tgz<br/>cd Python-2.7.12<br/>./configure --prefix=/usr/local/python27<br/>make &amp;&amp; make install<br/></div><br/>1.1.5：gcc<br/>下载地址：http://ftp.gnu.org/gnu/gcc/gcc-6.2.0/gcc-6.2.0.tar.gz<br/><div class="code">tar xzvf gcc-6.2.0.tar.gz<br/>cd gcc-6.2.0/<br/>./contrib/download_prerequisites<br/>cd ..<br/>mkdir gcc-build-6.2.0<br/>cd gcc-build-6.2.0/<br/>../gcc-6.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib<br/>make -j4 （-j4参数根据自己的cpu核心数来设置，这样编译的速度会快点，其实加了编译的时间也很长的）<br/>make install<br/><br/>ls /usr/local/bin &#124; grep gcc<br/>update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc-6.2.0 40 （优先使用6.2.0版本的gcc）<br/>执行以上操作之后使用 gcc --version 就可以看见当前使用的gcc版本是gcc (GCC) 6.2.0的新版本了。<br/><br/>cp ./x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 /usr/lib64/<br/>删除原来低版本的软链：rm -rf /usr/lib64/libstdc++.so.6<br/>创建新版本的软链：ln -sf /usr/lib64/libstdc++.so.6.0.22 /usr/lib64/libstdc++.so.6<br/></div><br/>二、编译相关依赖<br/>2.1：colib<br/>cd /home/phxsql/third_party/colib<br/>make<br/><br/>2.2：glog<br/>cd /home/phxsql/third_party/glog<br/>./configure CXXFLAGS=-fPIC --prefix=/home/phxsql/third_party/glog<br/>make<br/>make install<br/><br/>2.3：leveldb<br/>/home/phxsql/third_party/leveldb<br/>make<br/>mkdir lib<br/>cp libleveldb.* ./lib<br/><br/>2.4：protobuf<br/>cd /home/phxsql/third_party/protobuf<br/>./autogen.sh<br/>./configure CXXFLAGS=-fPIC --prefix=/home/phxsql/third_party/protobuf<br/>make<br/>make install<br/><br/>#执行autogen.sh的时候curl报超时的问题：<br/>autogen.sh 文件的第34行gmock的下载地址是https://googlemock.googlecode.com/files/gmock-1.7.0.zip，这个地址在国内正常是访问不了的，所以在执行./autogen.sh的时候会报curl超时，翻出墙外之后这个地址也不能下载，404，应该不会是忘了上传了吧。<br/><br/>解决办法1：<br/>修改autogen.sh文件第34行的下载地址，把https://googlemock.googlecode.com/files/gmock-1.7.0.zip 改为wget http://www.zhanghaijun.com/soft/gmock-1.7.0.zip，这个我已经把两个包都下载了，打包好了。<br/><br/>解决办法2：<br/>项目地址：https://github.com/google/googlemock<br/>项目地址：https://github.com/google/googletest<br/>wget https://github.com/google/googlemock/archive/release-1.7.0.zip<br/>unzip -q release-1.7.0.zip<br/>rm release-1.7.0.zip<br/>mv googlemock-release-1.7.0 gmock<br/><br/>wget https://github.com/google/googletest/archive/release-1.7.0.zip<br/>unzip -q release-1.7.0.zip<br/>rm release-1.7.0.zip<br/>mv googletest-release-1.7.0 gmock/gtest<br/><br/>解决办法三：<br/>wget http://www.zhanghaijun.com/soft/gmock-1.7.0.zip<br/>unzip gmock-1.7.0.zip<br/>mv gmock-1.7.0 gmock<br/><br/><br/>2.5：phxrpc<br/>cd /home/phxsql/third_party/phxrpc<br/>mv third_party/protobuf third_party/bak_protobuf<br/>ln -sf /home/phxsql/third_party/protobuf /home/phxsql/third_party/phxrpc/third_party/protobuf<br/>make<br/><br/>2.6：phxpaxos<br/><div class="code">cd /home/phxsql/third_party/phxpaxos<br/>mv third_party/protobuf third_party/bak_protobuf<br/>mv third_party/leveldb third_party/bak_leveldb<br/>mv third_party/glog third_party/bak_glog<br/>ln -sf /home/phxsql/third_party/protobuf /home/phxsql/third_party/phxpaxos/third_party/protobuf<br/>ln -sf /home/phxsql/third_party/leveldb /home/phxsql/third_party/phxpaxos/third_party/leveldb<br/>ln -sf /home/phxsql/third_party/glog /home/phxsql/third_party/phxpaxos/third_party/glog<br/><br/>./autoinstall.sh<br/>make<br/>make install<br/>cd plugin<br/>make<br/>make install<br/></div><br/>三、编译安装PHXSQL<br/><div class="code">cd /home/phxsql<br/>wget https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-5.6.31-77.0/source/tarball/percona-server-5.6.31-77.0.tar.gz<br/>tar xzvf percona-server-5.6.31-77.0.tar.gz<br/>mv percona-server-5.6.31-77.0 percona<br/>sh autoinstall.sh<br/>make<br/>make install<br/></div><br/>3.1：生成安装包<br/>[root@localhost phxsql]# make package<br/>creating package phxsql-0.8.0.tar.gz...<br/><br/>生成的压缩包名称为：phxsql-0.8.0.tar.gz，把它拷贝到其他机器上就可以部署了。<br/><br/><br/>四、部署测试<br/>把安装包拷贝到其他测试的机器上，解压，本文目录为/home/phxsql<br/>创建mysql用户<br/>useradd -d /home/datacenter -s /sbin/nologin mysql<br/>mkdir /home/phxsql/etc<br/>cd /home/phxsql/tools<br/>把director_operator.py文件第26行中的chown user:mysql 修改为chown mysql:mysql<br/><br/>#因为前面测试的时候已经用三台虚拟机搭过一个集群了，这次就把这台机器加入到之前部署的集群中<br/>[root@localhost sbin]# ./phxbinlogsvr_tools_phxrpc -f AddMember -h192.168.1.241 -p17000 -m 192.168.1.243<br/>get master 192.168.1.241 expire time 1473413135<br/>AddMember 192.168.1.243 done<br/><br/>#初始化PhxSQL<br/>mkdir /home/datacenter<br/>/usr/local/python27/bin/python2.7 install.py -i&quot;192.168.1.243&quot; -p 54321 -g 6000 -y 11111 -P 17000 -a 8001 -f /home/datacenter/<br/><br/>#备份集群中其他机器的percona数据<br/>/home/phxsql/percona.src/bin/mysqldump --set-gtid-purged=off -h 192.168.1.186 -P11111 -u root --all-databases &gt;/home/all.sql<br/><br/>#kill掉新加入机器的phxbinlogsvr进程<br/>ps axf&#124;grep phxbinlogsvr&#124;grep -v grep&#124;awk &#039;&#123;print $1&#125;&#039;&#124;xargs kill<br/><br/>#通过本地端口登录新加机器的percona<br/>/home/phxsql/percona.src/bin/mysql -h 127.0.0.1 -P11111 -u root<br/><br/>#登录之后执行以下操作<br/>set GLOBAL super_read_only = 0; set GLOBAL read_only = 0;<br/><br/>#导入其他机器备份出的percona数据<br/>/home/phxsql/percona.src/bin/mysql -h 127.0.0.1 -P11111 -u root &lt; /home/all.sql<br/><br/>#启动phxbinlogsvr<br/>nohup /home/phxsql/sbin/phxbinlogsvr_phxrpc &amp;<br/><br/>之前的测试的集群由3台变成4台了<br/>[root@localhost sbin]# ./phxbinlogsvr_tools_phxrpc -f GetMemberList -h&quot;192.168.1.186&quot; -p 17000<br/>get master 192.168.1.241 expire time 1473416759<br/>ip 192.168.1.186 port 17000<br/>ip 192.168.1.180 port 17000<br/>ip 192.168.1.241 port 17000<br/>ip 192.168.1.243 port 17000<br/><br/>#查看复制状态，如果都是YES就可以测试了。<br/>/home/phxsql/percona.src/bin/mysql -h 127.0.0.1 -P11111 -u root -e &quot;show slave status&#92;G;&quot;<br/>Slave_IO_Running: Yes<br/>Slave_SQL_Running: Yes<br/><br/>#测试<br/>./test_phxsql.sh 54321 192.168.1.186 192.168.1.180 192.168.1.241 192.168.1.243<br/><a href="http://www.zhanghaijun.com/attachment.php?fid=220" target="_blank"><img src="http://www.zhanghaijun.com/attachment.php?fid=220" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>【附】：已编译版本下载：<a href="http://pan.baidu.com/s/1c1PgDQK" target="_blank">http://pan.baidu.com/s/1c1PgDQK</a> 提取密码: dhxm，MD5:ffcebea7eebf51b2b9bcd52696bd2b1f<br/>Tags - <a href="http://www.zhanghaijun.com/tags/centos/" rel="tag">centos</a> , <a href="http://www.zhanghaijun.com/tags/phxsql/" rel="tag">phxsql</a> , <a href="http://www.zhanghaijun.com/tags/percona/" rel="tag">percona</a>
]]>
</description>
</item>
</channel>
</rss>