-
04-23 学习记录
mongodb 最近回顾了下mongodb的安装,使用等。 ubuntu(12.04)下安装和启动 $ sudo apt-get install mongodb-server $ sudo mongod -f /etc/mongodb.conf 默认会同时安装客户端,即命令mongo,换句话说是那个支持JavaScript的客户端。 macosx下安装和启动 $ brew update $ brew install mongodb $ mongod –config /usr/local/etc/mongod.conf brew update耗时会比较长,如果没有必要的话可以不做。 让dash搜索casbah 默认dash下是没有casbah的文档的,把casbah clone下来,尝试用mkScalaDocSet也失败了,casbah生成的文档多处出现不标准的XHTML。后来某一天发现dash支持Scala Docs,那么可以这么做: 进入Scala Docs,就是点击常规下载DocSets左边的Ruby, Java, Scala Docs导航栏中的Scala Docs 搜索casbah 找到你需要的casbah版本并下载,由于casbah有多个模块,大概要下3~4个 默认这些Scala Docs的前缀是scaladoc:,需要都改成casbah:,这样你就可以用casbah:搜索casbah多个模块了 注意,casbah的这个文档只是API文档,不是那种tutorial。不过一般来说应该够了。
-
nagios和zabbix安装笔记
nagios和zabbix都是用于监控的软件。前者我在《网站运维:保持数据实时的秘技》这本书中看到,后者是在之前杭州的某个分享会议上听小米的运维(他们的博客)了解到的。以下是我在vagrant+virtualbox的虚拟机上的安装测试。
-
使用puppet配置本网站
以下只是一个示例,描述LNMP使用puppet配置的大致方案,里面的用户名和密码不是真实数据。 LNMP主要包含nginx,mysql,php和网站(site,这里是blog)模块。文件结构如下: ├── manifests │ └── site.pp └── modules ├── blog │ ├── files │ │ └── wp-config.php │ ├── manifests │ │ └── init.pp │ └── templates │ └── nginx.conf.erb ├── mysql │ ├── files │ └── manifests │ └── init.pp ├── nginx │ ├── files │ └── manifests │ └── init.pp └── php…
-
自制vagrant box的优化
前一篇讲到自制vagrant box,本篇来讲一些优化的方法。 启动速度 box的速度受原来的虚拟机启动的影响。 我在安装debian的虚拟机完之后发现grub默认有5秒的选择时间,这可以通过修改/etc/default/grub种的GRUB_TIMEOUT为0来取消,注意修改完之后执行update-grub应用变更。 第二是启动时的MTA,据说这个邮件相关的东西会进行DNS查询所以速度比较慢。一般情况下不需要邮件,所以可以安装rcconf取消exim的服务,这样速度就快很多了。 SSH连接速度 我的box在没有优化时连接会卡在 debug1: SSH2_MSG_SERVICE_ACCEPT received 上(通过ssh -v 查看调试信息)。因为之后的Authentications that can continue 没有GSSAPI什么的,应该和GSSAPI无关。后来查到服务器端sshd(/etc/ssh/sshd_config)可能需要配置UseDNS=no,实际配置并重启服务后确实解决问题了。 顺便说一句,macosx连接ssh时可能会碰到locale的问题。这个问题很可能不是由服务器端引起的,注意本地的/etc/ssh_config,把SendEnv LANG LC_* 注释掉基本就可以了。 常用程序 因为是自制的,为了方便,自己复制了一份vim的配置,安装了默认没有的curl、tree等等。 至此,自制的vagrant box应该比原先的要好用一些,特别是启动和连接速度上。
-
自制vagrant base box
最近在学习puppet,自然而然地想到使用vagrant配置一些虚拟机练手。默认的vagrant的box大多都是带puppet,但是很神奇的是没有/etc/puppet这个目录,估计不是使用类似apt-get的方式安装的。解决方法之一是使用人家未安装puppet的base box,比如这里有一个列表。个人比较习惯ubuntu/debian的环境,所以试着找了几个相关的base box,但是不是很满意。另外还有一个解决方法,就是自己做base box。 虽然vagrant的文档上说不是很推荐自制base box,因为比较耗时间。但是如果你对系统管理比较熟悉的话,亲手做一下也不是特别麻烦。我参考这篇文章自己尝试做了一个基于debian-7.3.0-i386,通过aptitude安装了puppet的base box。 首先虚拟机自身的配置,内存设定不要太大,动态分配的空间不要太小,还有大部分时候音频和USB是没有用的。 理论上vagrant的base box和普通的虚拟机映射文件区别不大,只是安装系统的时候有几个地方需要注意: root password: vagrant 附加的用户名和密码 vagrant, vagrant hostname: vagrant 只安装必须的软件,大部分时候桌面环境是不需要的 安装完之后,需要增加一个admin组,把vagrant用户加入admin组,并且修改/etc/sudoers文件允许admin组用户执行sudo时不输入密码。 默认debian是没有sudo的,需要用aptitude安装,安装完之后才有/etc/sudoers这个文件。 最后aptitude安装puppet,清理一些东西之后就可以用vagrant做base box了。 做完之后加入vagrant的box列表,自己尝试启动一个,如果vagrant up成功就说明可以了。
-
python linux administrator学习小结
看《Python Linux Administrator》这本书时,我并不是按照从头到尾的方式读的,而是看了一遍目录,选择性地读了部分章节。以下是我选择的章节: GUI 有GUI肯定更直观一些,特别是在一些报表展示上。书中提到主要是三种方式,基于pygtk/wxPython的桌面程序,基于cursers的CLI方式和基于django的web方式。个人觉得web方式综合下面比较好一些,而且django并不比想象中要难。我也把django作为定期学习的一个候选。 network unix/linux下网络相关命令很多,python也有很多针对网络的库。书中介绍了从底层socket,到上层httplib/ftplib/paramiko(sftp),urllib/urllib2,xmlprclib/Pyro和强大的twisted。针对不同协议场景用不同的库,前提是你要了解足够多的网络库。 operaton system 通用的有platform,可以用来判断操作系统。接下来都是一些指定系统下的库,比如mac的dscl/asr,windows的zenoss,还有libvert, libvirt, cobbler, virt-factory, func等。这块和系统相关,个人认为要根据实际环境选择性的学习。 package manager 较多篇幅介绍了easy_install。同时提到了buildout, virtualenv, epm。个人对virutalenv有点兴趣,因为可以多版本python共存。 demo 一些使用python管理系统的实例。和之前介绍内容可能有交集。个人感兴趣的是python查询dns,还有python管理ldap等。 data 主要是操作文件。比如常用的os模块,还有glob,shutil,filecmp。用于产生摘要的hashlib等。更多的在python标准库文档中。
-
终于完成了路由器(openwrt)上pptp客户端的设置
在路由器上设置pptp的初衷是为了解决类似3DS等不能设置VPN,所以必须同过带VPN的路由器或者代理等方式设置。如何使用代理设置以前有讲过,这里讲带VPN的路由器。 带VPN的路由器一般指的是用ddwrt或者openwrt刷过固件的路由器,我的路由器是tl-wr841n v7.1,ddwrt和openwrt都支持。 一开始我刷了ddwrt,虽然能够上网了,但是pptp死活连接不上。在放置了一段时间之后,看到还有openwrt,就想刷openwrt试试。
-
shell学习小记2
到昨天为止,把《Linux脚本攻略》看完了,全书有273页,老实说是最近少有的我能从头看到尾的书。evernote中我大概记了10个note,以下是从中抽选的一些笔记,之后有空的话还会加更多的。 按照CPU使用量排序(倒序)进程 ps -eo comm,pcpu –sort -pcpu | head ps -e 表示显示所有进程 ps -o 表示筛选显示的列,comm是可执行文件,pcpu是CPU使用量 ps –sort 表示排序依据,-pcpu表示按照CPU使用量倒排(+pcpu表示正排) head表示截图头十行 kill相关 列出所有执行的信号 kill -l 给指定的进程发送信号 kill -s SIGNAL process_id 常见信号 SIGINT 2 ctrl + c SIGKILL 9 强制退出 SIGSTP 20 ctrl + z which, whereis & whatis which cmd # 打印命令位置 whereis cmd # 打印命令位置和手册位置 whatis…
-
用tput做一个简单的倒计时
以前一直很好奇那种在shell里面出现的动态改变当前行内容的效果,比如你用apt-get install安装包时,shell最下面一行是进度,是不会被冲掉的,内容会动态改变;还有类似wget下载文件时的进度效果等。 最近学习shell,发现这些效果可以通过一个叫做tput的命令来实现,以下就是我在学习tput时做出来的一个简单的倒计时效果。shell脚本如下: #!/bin/bash if [ $# -ne 1 ]; then echo “Usage $0 count” exit 1 fi echo -n ‘Countdown: ‘ tput sc for i in `seq $1 | tac`; do tput rc tput ed echo -n $i sleep 1 done echo 第一段是简单的参数检查,要求必须带一个参数,即count,比如10。 从echo -n ‘Countdown: ‘开始倒计时。tput这里有三次命令sc, rc, ed分别是保存当前光标位置,恢复保存的光标位置和清除从当前光标位置到设置行末尾的内容。 你可以想象,当前位置不断显示不同内容的原理是动态改变这个位置上的内容,对于图像来说,记录某个对象的位置,刷新显示时定位笔刷到对象的位置,清除对象所在位置上的内容,最后绘制内容。用tput来说,就是rc -> ed -> “绘制”命令。sc肯定是在最前面只做一次的,因为只要记录一次光标位置就行。…
-
vagrant使用小记
vagrant是一个简单实用的适合本地开发使用的虚拟机管理工具。默认基于virtualbox,也可以切换为基于vmware的模式。基于Ruby的配置文件相对在命令行操作virtualbox更容易些,特别是配置多虚拟机的情况下。以下主要是个人在使用时记录的一些点。 安装 ubuntu可以直接用apt-get安装。不过12.04版本的ubuntu对应的vagrant配对的是ruby 1.8,这可能不是你想要的。这时你可以从vagrant官网上下载deb,用dpkg -i方式安装。 因为我之前就装过virtualbox和ruby 1.9,所以不清楚如果这两个没有的时候dpkg -i安装时是否有问题。virtualbox和ruby实际也是用apt-get安装的。 下载base box 因为vagrant实际是操作virtualbox的,所以实际需要一个类似vbox的文件,或者说是安装了指定系统的虚拟硬盘,又称base box。如果你没有base box的话,就需要自己加载对应操作系统镜像逐步安装。 vagrant给的方法是执行 vagrant box add base http://files.vagrantup.com/precise32.box 后面的URL实际就是vagrant提供的一个base box。执行这条命令时,vagrant会下载这个base box然后加入box列表中。有兴趣的人可以执行 vagrant box list 查看所有安装的box。