Archive for the ‘CentOS’ Category

Rsync、Inotify实现服务器间文件实时同步

Wednesday, July 6th, 2011

写在前面 rsync对做系统运维的人来说,是个熟悉的名词,服务器间数据同步就靠它。但是rsync也有缺点,如果待同步文件数量巨大,那么光遍历目录的耗时就非常多,可实际上被改动待传输的文件可能只是很小的一部分。 系统运维中,用rsync实现备份服务器功能是经常遇到的。集群中程序的备份好说,一般程序文件不到升级版本,是不会改动的,所以我们每次上传后,在集群中建立信任关系,然后rsync同步下就完事了。但是用户上传图片备份呢?一般是选择定时传输文件到备份机,但是如果出现问题切换备份服务器,总会有部分数据丢失,无法做到实时备份。再举个例子,网站要跨机房进行迁移,一般的做法是在新机房放好机器后,传输程序和部分图片附件过去,然后切换DNS,数据库先用replication读写分离,远程写入撑着。老机房定时用rsync往新机房传,新机房的404页面做点手脚,如果访问的图片附件找不到,那么去旧IP地址下载新图片。这些事情说起来是几句话,做起来可很费劲,费劲之余,我们想想,如果新旧机房的附件能实现实时同步,那么是不是就等于节省了一半的力气呢?答案是肯定的。那么如何实现实时同步呢?哈哈!我们可以使用rsync和inotify来配套实现。 实验思路 假设机房里有一个web集群,我们上传程序的步骤是先上传文件到集群中某台服务器,此服务器作为集群的rsync inotify服务端,当服务端觉察到(由inotify实现)程序文件发生改变后,开始同步新文件到集群中其他服务器上(由rsync实现传输,各服务器之间先建立好信任关系)。 同理,当我们跨机房迁移网站时,由于DNS缓存导致各地访问的机房位置不同,附件图片也会上传到不同的机房里。这个时候,两个机房可以互相进行实时同步,rsync去掉--delete参数就好了。哈哈!举一反三,能学到很多东西。 测试环境 两台服务器均安装CentOS 5.5 x86_64,安装开发工具和开发库。 两台服务器IP地址、HOSTNAME和待同步目录分别为: 10.0.0.6 server1 /data/web (服务端) 10.0.0.7 server2 /data/web (客户端) 10.0.0.8 server3 /data/web (客户端) 10.0.0.9 server4 /data/web (客户端) 服务端服务器配置 安装inotify工具 yum -y groupinstall 'Development Tools' 'Development Libraries' cd /usr/local/src wget -c ftp://10.0.0.3/Linux/inotify-tools-3.14.tar.gz tar zxf inotify-tools-3.14.tar.gz cd inotify-tools-3.14 ./configure --prefix=/usr/local/inotify314 make make install 建立从服务端到客户端的信任关系。 ssh-keygen -t rsa [root@server1 web]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty ...

网卡故障解决随笔记录

Friday, June 10th, 2011

本地一台安装CentOS的开发服务器连续出现了几次网络连接不成功问题,连上显示器和键盘登录后,发现实际上系统还在运转,只不过网络不通畅了。第一次发现时,重新启动了网络,问题就解决了,当时由于匆忙也没太注意。可是过了两天,同样的问题又发生在这台服务器上,决定深究下了。 首先重启网络,使之可用,毕竟不能耽误开发任务,然后回到办公室远程连接寻找蛛丝马迹。毕竟机房的噪音也是一种折磨,谁也不想在那里呆很久。 首先查看错误日志: kernel: NETDEV WATCHDOG: eth0: transmit timed out 在网上铺天盖地都查,发现果然有同样的问题出现过,试验下解决方法: ethtool -K eth0 tso off 记得把这个添加到/etc/rc.local里。 继续观察两天,问题解决。

各64位操作系统安装skype方法汇总

Thursday, April 14th, 2011

CentOS 5.6、RedHat 6、Scientific Linux 6,甚至包含Fedora 14,凡是64位的系统,安装skype基本都会出现这样那样的问题,安装次数多了,把解决方法都记录下来,方便以后参考。 CentOS 5.6 x86_64安装skype方法 从skype官方网站下载最新skype静态包 skype_static-2.2.0.25.tar.bz2 ,解压缩运行后,出现错误如下。 [hluan@desktop skype22025]$ ./skype ./skype: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./skype) 下载 libstdc++.so.6.0.10 并解压缩到/usr/lib下,在 http://down.51cto.com/data/184394 可以下载。 cd /usr/lib rm -f libstdc++.so.6 ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6 启动skype,搞定! Scientific Linux 6 x86_64安装skype方法 下载使用官方针对fedora 10的rpm包,也可以使用官方静态包。 wget http://skype.tom.com/download/linux/skype-2.1.0.81-fc10.i586.rpm sudo rpm -ivh linux/skype-2.1.0.81-fc10.i586.rpm 使用如下命令检查skype依赖关系,然后yum search对应的包安装i686包即可。 [hluan@thinkpad skype21081]$ ldd skype linux-gate.so.1 => (0xf778c000) libasound.so.2 => /lib/libasound.so.2 (0xf7681000) libXv.so.1 => ...

CentOS编译安装lighttpd配置静态资源服务器

Tuesday, December 7th, 2010

简介 Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。就目前国内的应用来看,好像lighttpd都是和亲爱的python搭伙,参考网上的文章,我们拿lighttpd作为静态资源服务器,这样也好,毕竟nginx + php fast-cgi已经很强大了,我们就让lighttpd担负起静态资源服务器的重任吧。 测试环境 CentOS 5.5 x86_64,安装开发工具和开发库。 安装并启动 安装pcre开发库 yum -y install pcre-devel 安装lighttpd tar zxf lighttpd-1.4.26.tar.gz cd lighttpd-1.4.26 ./configure --prefix=/usr/local/lighttpd --with-pcre make && make install 添加管理脚本 cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd1426 ln -s /usr/local/lighttpd/sbin/lighttpd /usr/sbin/lighttpd 创建配置文件 mkdir /etc/lighttpd cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf 使用cronolog来分割服务器访问日志 tar zxf cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure make && make install 创建日志和默认站点目录 mkdir /www /www/logs /www/htdocs 修改lighttpd配置文件 sed -i 's#server.document-root ...

CentOS + LVS 安装配置Web负载均衡服务器(NAT方式)

Wednesday, October 27th, 2010

准备设备 3台安装好CentOS 5.3 x86_64的普通PC电脑,均安装好开发工具和开发库,关闭selinux; 一台计算机做负载均衡调度服务器,代号:loadbalance; 两台计算机做网页服务器,代号:web1和web2; TP-link交换机一个; TP-link网卡一块。 配置网络环境 网络拓扑图 配置loadbalance服务器 关闭iptables,防止其阻止lvs启动。 配置网络,安装两块网卡: [root@loadbalance ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static HWADDR=00:25:22:07:3c:c7 ONBOOT=yes IPADDR=10.0.0.107 NETMASK=255.255.255.0 GATEWAY=10.0.0.254 TYPE=Ethernet [root@loadbalance ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none ONBOOT=yes HWADDR=00:0a:eb:63:0c:67 TYPE=Ethernet IPADDR=10.10.0.10 NETMASK=255.255.255.0 [root@loadbalance ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1:1 TYPE=Ethernet DEVICE=eth1:1 BOOTPROTO=static NETMASK=255.255.255.0 IPADDR=10.10.0.1 ONPARENT=yes 开启linux路由转寄,编辑/etc/sysctrl.conf: net.ipv4.ip_forward = 1 运行 sysctrl -p 使之生效。 修改网卡启动脚本,防止net.ipv4.ip_forward再次被设置成0,编辑/etc/init.d/network注释掉相关代码: 配置完毕,重新启动网络。 配置web1和web2服务器 [root@web1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static HWADDR=00:e0:4c:78:57:da ONBOOT=yes IPADDR=10.10.0.30 NETMASK=255.255.255.0 GATEWAY=10.10.0.1 TYPE=Ethernet [root@web2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes HWADDR=00:00:6c:95:aa:42 NETMASK=255.255.255.0 IPADDR=10.10.0.40 GATEWAY=10.10.0.1 TYPE=Ethernet 配置好后重启网络,别忘记检查一下三台服务器是否可以互通。 安装配置LVS yum install -y ipvsadm piranha 启动piranha-gui /etc/init.d/piranha-gui start 执行 piranha-passwd 设置登录密码,打开浏览器访问:http://10.0.0.107:3636即可看到登录界面。点击“login”登录。登录用户名: piranha,密码使用刚才设置的。登录后,选择选项卡“Global Setting”进行设置并点击“accept”,如图: 选择选项卡“VIRTUAL SERVERS”,点击“ADD”后会添加一个空白服务器,然后点击“EDIT”,输入以下数据: 点击“accept”保存后,点击“(DE)ACTIVATE”激活。 继续选择刚才保存好的“VIRTUAL SERVERS”,点击“EDIT”后选择“REAL SERVER”,点击“ADD”后再点击“EDIT”输入web1和web2的IP地址,保存后激活,如图: 都配置好后,我们在loadbalance服务器上启动服务: /etc/init.d/pulse start 测试负载均衡调度 web1和web2提供http服务,安装网页服务器步骤省略,我们先在loadbalance服务器上查看一下: [root@loadbalance ~]# ipvsadm -l IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> ...

CentOS + Nagios 监控Web服务器

Saturday, October 23rd, 2010

测试环境 CentOS 5.5 x86_64,安装开发工具和开发库; 关闭selinux; 服务端IP地址:192.168.90.187,hostname:vps1; 客户端IP地址:192.168.90.237,hostname:vps2,由apache提供web服务。 vi /usr/local/nagios/etc/lan_objects/hosts.cfg # http 服务 define host{ use generic-host host_name vps2_apache alias ...

CentOS + Nagios 监控服务器SSHD

Friday, October 22nd, 2010

测试环境: CentOS 5.5 x86_64,安装开发工具和开发库; 关闭selinux; 服务端IP地址:192.168.90.187,hostname:vps1; 客户端IP地址:192.168.90.237,hostname:vps2。 接上篇安装配置Nagios监控服务器基本功能,这次我们使用nagios监控sshd。修改配置文件: vi /usr/local/nagios/etc/lan_objects/commands.cfg # 检查SSH配置 define command{ command_name check_ssh command_line $USER1$/check_ssh -H $HOSTADDRESS$ } vi /usr/local/nagios/etc/lan_objects/hosts.cfg # ssh 服务器 define host{ use generic-host host_name ...

CentOS + Nagios 监控服务器基本功能

Thursday, October 21st, 2010

测试环境 CentOS 5.5 x86_64,安装开发工具和开发库。 关闭selinux 服务端IP地址:192.168.90.187 安装nagios groupadd nagios useradd -g nagios -md /usr/local/nagios nagios groupadd nagioscmd usermod -G nagioscmd apache usermod -G nagioscmd nagios wget ftp://192.168.1.242/Linux/nagios/nagios-2.9.tar.gz wget ftp://192.168.1.242/Linux/nagios/nagios-plugins-1.4.8.tar.gz tar zxf nagios-2.9.tar.gz tar zxf nagios-plugins-1.4.8.tar.gz cd nagios-2.9 ./configure --with-cgiurl=/nagios/cgi-bin --with-htmlurl=/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagioscmd make all make install make install-init make install-commandmode make install-config cd .. cd nagios-plugins-1.4.8 ./configure make && make install cd .. 创建身份验证秘钥 cd /usr/local/nagios/etc htpasswd -c htpasswd.users nagios chown apache:nagioscmd htpasswd.users chmod 600 htpasswd.users 配置apache 安装apache步骤省略,确保httpd.conf里有Include conf.d/*.conf,然后在conf.d目录里创建nagios.conf,输入以下内容: # conf.d/nagios.conf Alias /nagios/cgi-bin ...

CentOS 编译安装 MongoDB 数据库

Saturday, October 16th, 2010

测试环境 CentOS 5.3 x86_64 安装开发工具和开发库 安装Scons yum install -y python-devel tar zxf scons-1.2.0.tar.gz cd scons-1.2.0 python setup.py install cd .. 安装spidermonkey库 yum install -y boost boost-devel tar zxf js-1.7.0.tar.gz cd js/src/ export CFLAGS="-DJS_C_STRINGS_ARE_UTF8" make -f Makefile.ref JS_DIST=/usr gmake -f Makefile.ref export cd ../.. 安装pcre tar zxf pcre-6.6.tar.gz cd pcre-6.6 ./configure --enable-utf8 --enable-unicode-properties make && make install cd .. 安装MongoDB tar zxf mongodb-src-r1.6.3.tar.gz cd mongodb-src-r1.6.3 scons all mkdir /db scons --prefix=/db/mongo163 install 如果需要安装lib和head,使用如下方式安装: scons --prefix=/db/mongo163 --full install 创建配置文件 mkdir -p /db/mongo163/etc /db/mongo163/data ...

解决执行 df -h 卡住,yum和rpm都无法安装软件问题

Wednesday, September 29th, 2010

线上一台服务器需要安装screen,结果不论yum安装还是rpm安装都无法进行,据其他开发人员反应,执行 df -h 也会卡住,真是奇怪。我们运行一下rpm安装看看,把调试信息打印出来: [root@pindex7 ~]# rpm -ivh -vv screen-4.0.3-1.el5.x86_64.rpm ... ...中间省略很多信息... ... D: mounted filesystems: D: i dev bsize bavail iavail mount point 从最后一行看来,应该是rpm安装后挂载文件系统有问题,也就不难理解为什么 df -h 也会卡住了,好吧,我们看一下挂载的调试信息: [root@pindex7 ...

CentOS搭建局域网Yum更新源服务器

Tuesday, September 21st, 2010

最近一口气配置了好几个使用openvz实现的虚拟机,结果基于模板创建的虚拟机属于无包安装的CentOS,真正使用起来缺这缺那,yum安装一百多个软件包简直是噩梦,时间宝贵,干脆在本地局域网环境内搭建一个CentOS软件仓库服务器吧,以后yum安装软件速度起码能快点,软件包的更新倒不是最重要的,毕竟服务器使用的软件,不在于新,而在于稳定。 实验环境: CentOS 5.3 x86_64 安装开发工具和开发库,服务器IP地址:192.168.90.239 1.安装配置web服务器: 使用apache还是nginx都无所谓,安装配置过程省略,web站点目录为:/www/htdocs/。 2.配置yum服务端: 首先创建一个目录,用来存放所有的rpm文件: mkdir -p /www/htdocs/centos/5/{os,updates}/x86_64 挂载好CentOS 5.3 x86_64的镜像,开始拷贝数据: cd / mkdir centos53amd64 mount -o loop CentOS-5.3-x86_64-bin-DVD.iso /centos53amd64/ cp -r /centos53amd64/CentOS /centos53amd64/repodata /www/htdocs/centos/5/os/x86_64/ 通过浏览器访问一下http://192.168.90.239/centos/5/os/x86_64/CentOS/,应该可以看到rpm列表。 软件仓库的软件是会更新的,我们本地的软件仓库也应该与时俱进。为了节省带宽,我们使用rsync进行软件包同步,这样只传输有更新内容的软件包,未被更新的软件包不会纳入传输列表,在CentOS官方网站上找一个亚洲的服务器,而且提供rsync服务的,找来找去,找到一个香港的,或许速度会很快。 我们写一个shell脚本 /srv/rsync_centos.sh: #!/bin/bash rsync -avrt rsync://centos.01link.hk/centos/5/updates/x86_64 --exclude=debug/ /www/htdocs/centos/5/updates/ 添加到计划任务,每天晚上1点执行。 编辑 /etc/crontab,加入以下内容: 0 1 * * * root sh /srv/rsync_centos.sh 3.配置yum客户端 打开并编辑 /etc/yum.repos.d/CentOS-Base.repo如下,建议把原来的文件备份了,直接创建一个新的: [base] name=CentOS-$releasever - Base baseurl=http://192.168.90.239/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 [updates] name=CentOS-$releasever - Updates baseurl=http://192.168.90.239/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 在客户端执行一下: yum clean all yum groupinstall 'Development Tools' yum groupinstall 'Development Libraries' 享受一下飞速更新的快感吧。 经过实践使用发现,光盘里的rpm包不够用,经常出现找不到依赖的rpm包现象,由此看来所有的一切都需要和官方源同步才行,在我们的计划任务脚本中加入一行: rsync -avrt rsync://centos.01link.hk/centos/5/os/x86_64 --exclude=debug/ /www/htdocs/centos/5/os/

CentOS + OpenVZ 实现多虚拟机方案

Wednesday, September 8th, 2010

日常的开发任务需要许多开发测试服务器支持,尤其是开发小组多了以后,大家都想有自己的开发服务器,让自己的软件产品运行在上面,那种自豪感更会激励众多软件工程师迸发出伟大的灵感,开发出更适合用户和市场的软件产品。但是现在是节约型社会,低碳生活是我们不懈追求的。服务器多了,耗费电力,增加开支,污染环境,那么如何既让众多工程师满意,又不增加服务器开支呢?openVZ提供了很好的解决方案。 测试环境: CentOS 5.3 X86_64 安装开发工具和开发库,分一个较大的分区,挂载到/vz下。 安装OpenVZ cd /etc/yum.repos.d wget http://download.openvz.org/openvz.repo rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ yum install -y ovzkernel 查看一下 /boot/grub/menu.lst 内容如下: # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You do not have a /boot partition. This means that # ...

CentOS安装zimbra实现电子邮件方案

Wednesday, August 4th, 2010

实验环境 CentOS 5.3 x86_64 安装开发工具开发库,默认语言选择中文。 安装前准备 1.安装CentOS时设置好主机名mail.hluan.com; 2.关闭防火墙和selinux; 3.修改/etc/hosts文件,确保加上了此行,如下: 192.168.90.108 mail.hluan.com hluan 4.配置好DNS服务,使mail.hluan.com的mx记录指向192.168.90.108,参考文章CentOS+Bind配置DNS服务器; 5.禁用并卸载senmail; 6.下载需要的软件包 yum install -y openssl097a compat-libstdc++-296 compat-libstdc++-33 compat-db fetchmail sysstat 7.关闭bluetooth、cups、exjm系统服务并重新启动服务器。 安装 下载zimbra基于red hat的发行包,解压缩开始安装。 tar zxf zcs-6.0.7_GA_2473.RHEL5_64.20100616215237.tgz cd zcs-6.0.7_GA_2473.RHEL5_64.20100616215237 sh install.sh --platform-override 按照提示,安装所有并设置好管理员密码即可,安装时间耗费挺长。 测试 我们给自己发一封电子邮件,结果截图如下: 再给163邮局发一封电子邮件,结果截图如下

CentOS+Bind配置DNS服务器

Monday, August 2nd, 2010

知识点学习: DNS是什么? DNS全称是:Domain Name System,通俗的理解就是我们输入 www.google.com,就等于输入了64.233.189.104,可以直接访问google的网页,毕竟www.google.com这一串字符比数字的IP地址好记忆。实际上,DNS是一个分布式数据库。允许对整个数据库各个部分进行本地控制,同时整个网络也能通过客户到服务器的方式访问任何一个部分的数据。 domain和zone具体怎么讲? domain的汉语翻译是:域名。zone的汉语翻译是:区域。 例如:doforge.com就是一个domain,旗下可以有许多二级或三级域名,例如:lvs.centos.doforge.com、svn.centos.doforge.com等等,但是zone中记录的是:centos.doforge.com,即zone就是一个一级的domain,也可以是一个多极domain的一部分。 主从DNS是什么? 我们配置的DNS服务器实际上也在享受着互联网上其他DNS服务器的域名解析服务,每一个zone都有有主DNS服务器,他会读取本地编辑的文件进行域名解析,还可以有多个从DNS服务器,也可以叫二级域名服务器,或辅域名服务器,这些服务器从互联网上的DNS服务器上获取域名解析服务。 能否举个具体例子? 例如,假设我们现在的网络状况是:工作用计算机的DNS被设置成本地某几台主从DNS服务器IP地址,分别是NS1、NS2......,我们访问某些公司的内部域名通过主DNS服务器的配置文件解析到内部的服务器IP上,如果我们访问外部网站,从DNS服务器使用外部DNS获取域名解析服务。当然也可以把主从DNS服务器部署到同一台计算机上,只要给网卡设置多个IP地址即可。 实验开始: 测试环境:无包安装CentOS 5.3 x86_64 主DNS服务器ip:192.168.90.237 测试被解析的IP地址:192.168.90.238,192.168.90.239,给网卡设置多个IP地址,把测试的域名解析到这个IP地址上。 配置服务器IP地址 [root@vbox1 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:B0:79:99 inet addr:192.168.90.237 Bcast:192.168.90.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:feb0:7999/64 Scope:Link ...

CentOS 5.3 x86_64 编译安装pureftpd+mysql支持虚拟用户

Sunday, May 30th, 2010

越来越喜欢 http://www.howtoforge.com 了,外国人做事认真的态度值得每一个中国软件工程师学习。 参考文章:http://www.howtoforge.com/virtual-hosting-with-pureftpd-and-mysql-incl-quota-and-bandwidth-management-on-centos-5.3 测试环境:CentOS 5.3 x86_64,安装开发工具和开发库,主机ip:192.168.90.125 编译安装配置 mysql 这里不再赘述,我们直接开始安装 pureftpd 前的准备工作,mysql安装目录/usr/local/mysql: ln -s /usr/local/mysql/include/mysql/* /usr/include/ ln -s /usr/local/mysql/lib/mysql/ /usr/lib/ ldconfig 安装 pureftpd wget ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.29.tar.gz tar zxf pure-ftpd-1.0.29.tar.gz cd pure-ftpd-1.0.29 ./configure --with-everything --with-mysql && make && make install cp pureftpd-mysql.conf /etc/ cp configuration-file/pure-config.pl /usr/local/sbin/ chmod 755 /usr/local/sbin/pure-config.pl cp configuration-file/pure-ftpd.conf /etc/ cp contrib/redhat.init /etc/rc.d/init.d/pureftpd chmod u+x /etc/rc.d/init.d/pureftpd chkconfig --add pureftpd chkconfig --level 2345 pureftpd on service pureftpd start 启动成功提示信息如下: 启动 ...