系统运维

Docker新手入门实战教程

本文从新手视角记录了一个实际的Dokcer应用场景从创建、上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法。通过Docker快速拉起一个定制服务,极大的简化了部署,加快了业务部署节奏,并降低了运维成本。 ------ 人生苦短,快用Docker。
阅读全文
操作系统

Linux在批量服务器管理中实用的PS1命令提示符格式

作为一个大公司的运维,手头管理了成百上千的服务器是家常便饭,甚至更多。而我们一般都是用跳板机登陆,由于这些机器一般都是克隆或者虚拟化出来的,所以登陆后的命令行提示符几乎是一个模子刻出来的,比如都是:# 这时,我们肯定会经常遇到这样一个困扰:操作服务器时因某事中断,回头继续操作的时候肯定会ifconfg确认下是否是我要操作的服务器,因为无法从表象识别。 所以,我们很有必要将这个PS1命令行提示符优化一下。每个运维攻城狮肯定都有自己的习惯,不过我还是推荐一个服务器批量管理中比较使用的PS1格式吧! PS1是神马?PS1是linux里头的一个默认的环境变量,至于当前系统的PS1是如何设置的,你可以使用命令“env|grep PS1”来查看 。 其实PS1就是用来设置命令提示符格式的环境变量。 下面贴一下PS1的配置参数: 当然,为了更好的识别,我们还可以加入一些颜色设置,这个就不赘述了,百度一下shell颜色即可,当然记得参考下文的PS1进行自定义。 为了更好的区分服务器,我建议使用如下格式: 所以PS1可以如下设置: 但是机器太多,这个IP总不能每次手动修改,所以还是写个脚本来修改吧!(当然,你也可以先获取IP,赋值变量加入到PS1) 脚本很简单: 好了,最后直接 source ./update_PS1.sh 即可看到效果: 重新登陆或source /etc/profile,就可以看到效果了: 这样设置之后,就能清晰的知道现在操作的是服务器是哪一台,而不至于混淆。
阅读全文
操作系统

Linux系统编译安装Redis以及主从复制配置小记

Redis的安装配置很简单,而且很早之前就装过Redis,可这几天再次安装时居然又遗忘了一些细节,看来好记性不如烂笔头,还是在博客记录一下比较好,至少不用总是抱度娘大腿了。 今天编译安装了几次,发现居然没在prefix指定目录生成文件??看了半天结果发现PREFIX我用了小写字母。。。 看来还是得记录一次正确的操作步骤,免得再次出现这种窘迫。 一、选择版本 前往官方网站:http://www.redis.io/download 选择一个适合的稳定版本,比如最新的redis-3.0稳定版(stable),获得下载地址: http://download.redis.io/releases/redis-3.0.0.tar.gz 二、编译安装 安装完成后,redis目录结构如下: 三、注册服务 ①、编写服务控制脚本 vi /etc/init.d/redis ②、注册服务与启动 四、主从配置 ①、配置 在从机上按照上面的步骤安装redis,然后在从机的redis.conf里面新增如下配置项目: 保存后启动redis即可完成简单的主从配置。  ②、测试 测试很简单,先在主机上通过客户端 redis-cli 执行新增键值命令: 然后,登录从机上同样执行 redis-cli 执行查询命令: 很明显主机上新增的键值已经自动同步到了从机,主从同步成功! 本文只是记录一下基本的编译安装和主从配置,当然,redis还有其可以继续进行自定义设置或优化的项目,后续有机会再继续整理补充一下。
阅读全文
操作系统

linux/scp命令报“bash: scp: command not found lost connection”错误的解决办法

这两天接到的任务是给JAVA开发项目组部署【JAVA+MySQL主从+Redis主从】运行环境。部署过程中大问题倒没有,小问题却不少,因此也涨了不少经验值。后续有时间我会一一整理记录下来,沉淀而不忘分享。 今天,装完一台redis,并配置好redis.conf后,想偷懒直接用scp传到另一台redis,省去全部重新编辑的麻烦。结果一执行就出现下面这个错误: 所有机器我都是最小化安装,所以很多组件没装也是情理之中,所以用yum装一下scp: 装完后,继续执行之前的命令,结果出现如下错误: 我擦,这就诡异了!明明装了为毛提示不存在呢? 而且还提示输入密码了,用whereis也能找到scp,没办法从man中找到一个DEBUG参数 -v,于是如下增加 -v 参数执行试试: 原来是因为目标主机也没装scp,倒是我大意了!登陆后再次执行如下命令安装scp: 回到之前的服务器上,执行最初的命令,果然毫无意外成功了: 网站搜索这个故障,大部分经验都是告知要安装scp,然后给出一个 yum 在线安装 scp 的命令。实际上,明明已经提示要输入密码了,说明 scp 是正常安装的!还继续报找不到命令,我们就只能从 scp 的执行过程来分析了,因此就借助到了scp的debug参数(-v),很清楚的看到了整个执行过程,从而得知真正的原因是对方主机没有安装scp,而且还可以清楚的看到 scp 的工作流程。 中午时间有限,就写这么多了,希望遇到这个问题的人,看到此文能少走点弯路。
阅读全文
操作系统

CVE-2015-0235:Linux glibc高危漏洞的检测及修复方法

这几天复习运维知识,也没怎么关注业界新闻,可等我一关注,又“捅娄子”了,Linux继上次CVE-2014-6271漏洞爆发以来,再次爆发一个严重漏洞:CVE-2015-0235-Linux glibc高危漏洞,正在使用Linux系统的个人或企业,看到消息请立即修复! 下面是我转载的检测和修复方法,我个人服务器Centos 6.5已成功修复: 一、漏洞概述 2015/01/28【CVE 2015-0235: GNU glibc gethostbyname 缓冲区溢出漏洞 】全面爆发,该漏洞的产生是Qualys公司在进行内部代码审核时,发现了一个在GNU C库(glibc)中存在的__nss_hostname_digits_dots函数导致的缓冲区溢出漏洞。这个bug可以通过gethostbyname *()函数来触发,本地和远程均可行。该漏洞(幽灵漏洞)造成了远程代码执行,攻击者可以利用此漏洞远程获取系统进程当前的权限。 幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让攻击者在不了解系统的任何情况下远程获取操作系统的控制权限。目前他的CVE编号为CVE-2015-0235。 什么是glibc glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。glibc 囊括了几乎所有的 UNIX 通行的标准。 出现了什么漏洞 代码审计公司Qualys的研究人员在glibc库中的__nss_hostname_digits_dots()函数中发现了一个缓冲区溢出的漏洞,这个bug可以经过 gethostbyname*()函数被本地或者远程的触发。应用程序主要使用gethostbyname*()函数发起DNS请求,这个函数会将主机名称转换为ip地址。 更多的细节可以从下面的视频中看到(一堆鸟语,听不懂): XODgxMTg1NDY4 漏洞危害 这个漏洞造成了远程代码执行,攻击者可以利用此漏洞获取系统的完全控制权。 漏洞证明 在我们的测试中,我们编写了一个POC,当我们发送一封精心构造的电子邮件给服务器后,我们便可以获得远程Linux服务器的shell,这绕过了目前在32位和64位系统的所有保护(如ASLR,PIE和NX)。 我们能做什么? 给操作系统及时打补丁,我们(Qualys)已与Linux发行商紧密合作,会及时发布补丁。 为什么叫做GHOST? 因为他通过GetHOST函数触发。 哪些版本和操作系统受影响? 第一个受影响的版本是GNU C库的glibc-2.2,2000年11月10号发布。我们已找出多种可以减轻漏洞的方式。我们发现他在2013年5月21号(在glibc-2.17和glibc-2.18发布之间)已经修复。不幸的是他们不认为这是个安全漏洞。从而导致许多稳定版本和长期版本暴露在外,其中包括Debian 7 (wheezy),Red Hat Enterprise,Linux 6 & 7,CentOS 6 & 7,Ubuntu 12.04等。 以上内容摘自:360安全播报平台 二、检测方法 检测方法1【RedHat官方检测方法】: ghost_check.sh源码(张戈亲测:推荐使用这种方法来测试更加准确!): 检测方法2【简单的检测方法】: 检测方法3【二进制检测方法】: ghost.c源码: 三、修复方法 ①、在线修复方案 CentOS, Red Hat, Fedora等系列衍生版本(RHN建议): Debian, Ubuntu等系列衍生版本: ②、离线修复方案 I. Centos6.5离线补丁 先检查本地glibc包安装了哪些相关包 然后,到阿里源下载对应版本 进行后台断点下载补丁包 使用yum本地安装 或是rpm安装 II. Red Had系列衍生版本 使用方法:参考上文【Centos6.5离线补丁】的修补方法。 离线包下载地址: http://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/glibc-2.17-55.el7_0.5.i686.rpm http://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/glibc-2.17-55.el7_0.5.x86_64.rpm 四、修复检测 ①、ghost_check.sh脚本检测 ②、ghost.c脚本检测 注意:打好补丁后必须立即重启操作系统,否则会造成应用业务无法使用。 五、参考来源 redhat官方:https://access.redhat.com/articles/1332213 redhat官方补丁介绍: https://rhn.redhat.com/errata/RHSA-2015-0090.html https://rhn.redhat.com/errata/RHSA-2015-0092.html ubuntu官方补丁介绍: http://www.ubuntu.com/usn/usn-2485-1/
阅读全文
zabbix监控在lnmp环境下编译安装小记 WEB应用

zabbix监控在lnmp环境下编译安装小记

最近在复习运维常见的监控告警软件的时候,想起了zabbix,于是先用军哥的lnmp一键安装包快速搭建了lnmp环境,然后成功编译安装了zabbix,特地将安装过程和遇到的问题记录在此,以便自己或有需要的人来参考翻阅。 由于已有php运行环境,所以只需要编译安装zabbix即可。 一、安装依赖组件 二、编译安装zabbix ①、下载zabbix ②、编译安装 Ps:configure可能出现下列错误: a. 找不到mysqlclient library: 如下建立软链接之后,重新编译即可: b. 找不到 MySQL library: 这是未安装mysql-devel组件产生的错误,先用yum安装,然后重新编译即可: 三、配置zabbix Ps:以下步骤如果不是绝对路径,均位于zabbix解压后的文件夹目录,即/usr/local/src/zabbix-2.4.3 ③、创建zabbix数据库,并导入初始数据 ③、修改配置 ④、部署WEB ⑤、增加服务端口 ⑥、启动zabbix服务 四、WEB端的安装 因为我是放到lnmp的default目录,所以直接在浏览器访问http://ip地址/zabbix进入安装向导,和一般的php建站程序的安装一样,非常简单。 下一步会检测运行环境,若出现红色的,就自查并解决即可,比如这次出现了一个这样的提示: 提示max_input_time的值应该改成300,所以只需要编辑php.ini,找到max_input_time并修改为300,保存后执行service php-fpm restart,再刷新安装向导已经没有问题了,继续按照向导直到安装完毕: 完成后进入zabbix登陆界面: 输入默认的用户名:admin 和 密码:zabbix 即可登入: 五、问题与解决 ①、监控报错 登陆zabbix后,发现仪表盘报如下错误: 看了下后台日志: 原来是mysql.sock路径问题。 解决方法: 方法(1). 修改/usr/local/zabbix/etc/zabbix_server.conf,找到#DBSocket=/tmp/mysql.sock,取消注释: 方法(2). 建立软链接: 推荐第一种方法,保存后,使用service zabbix_server restart 重启zabbix服务即可解决此问题。 ①、中文设置 修改为中文界面的步骤是:Profile -> Language -> Chinese (zh_CN)  ->Save 可当我安装之后,却没有Chinese (zh_CN)这这个下拉选项。 解决办法: 1、在zabbix网站目录(/home/wwwroot/default/zabbix)找到 include/locales.inc.php 文件 2、编辑 locales.inc.php,找到 修改为: Ps:里面好多语言默认都是false屏蔽了,想开启只需要改成true即可在语言配置中开启。 修改保存后,刷新网页,已经可以找到Chinese (zh_CN)了: ②、图形中文显示为方框 由于还没有添加受监控的客户端,所以先把server自身的监控打开: 步骤:组态(配置) -> 主机 -> 激活主机 进入图形后,发现文字都是方框: 看来是字体问题,只需要用 Windows 下的常用字体替换一下即可。 具体步骤: 1). 我比较喜欢微软雅黑,所以在 C:\windows\fonts 下找到微软雅黑字体:msyh.ttc 2). 上传到zabbix字体目录:/home/wwwroot/default/zabbix/fonts/ 3.). 用msyh.ttc覆盖默认的字体文件 DejaVuSans.ttf 即可: 刷新页面,已经正常了: 好了,关于zabbix服务端的安装就记录到这,后续有时间在来记录下zabbix客户端的安装及使用。
阅读全文