Posts categorized “linux”.

capistrano网络部署

本地安装capistrano

gem install capistrano
2)检查安装是否有效
cap -V
本文看到结果:Capistrano V2.1.0,说明安装成功
3)开始工作
进入本地 rails工程根目录执行
capify .
这个命令会生成两个文件,一个是Capfile文件,在应用的根目录下,另一个是deploy.rb文件,在应用的config目录下
可以用cap -T 查看所有task, cap -e deploy 解释deploy任务的详情 。
4)修改config/deploy.rb文件


set :application, ”space”
set :repository, ”http://192.168.100.212:3690/repo/moxtv/branches/space”



# If you aren’t deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, ”/var/www/#{application}”

# If you aren’t using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion



role :app, ”192.168.100.231″
role :web, ”192.168.100.231″
role :db, ”192.168.100.231″, :primary => true

#1
set :svn_username, ”weip”
set :svn_password, ”weip”

#2
set :deploy_to, ”/var/www/webapps/#{application}”
set :user, ”root”
set :password, ”secretpa”


#3
set :use_sudo,false

#4
task :chmod, :roles => :web do
run ”chmod -fR 755 #{deploy_to}/current/script/*”
end

after ”deploy:symlink”, :chmod

#5
default_environment["PATH"] =”/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/ruby/bin:/usr/local/ant/bin:/usr/java/jdk1.5.0_05/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin”

额外添加了5个部分
#1 指定SVN用户名密码
#2 指定远程目的服务器的用户名和密码
#3 因为懒得配置SUDO,所以加上这行,直接用ROOT访问,否则会有权限问题
#4 为了能使目的服务器能执行脚本,特意加上全县,否则会有权限问题
#5 显示的指明路径,否则互有如下问题

cobbler系统架设

1、安装:

添加yum源: http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/

然后yum install cobbler

2、添加cobbler

cobbler import –mirror=/mnt/cdrom –name=CentOS-5.3-64
cobbler repo add –name=epel5-64 –mirror=/mnt/cdrom/epel5-64/5/x86_64
cobbler reposync –only=epel5-64

####### epel5-64的光盘需要另外下载#####

3、作一个cobbler的profile

cobbler profile copy –name=CentOS-5.3-64-x86_64 –newname=webserver
cobbler profile list
cobbler profile edit –name=webserver –repos=”epel5-64″
cobbler profile edit –name=webserver –kickstart=/var/lib/cobbler/kickstarts/centos53puppetinstall.ks

############ ks文件为cobbler安装好之后,可以从其他安装有kickstart的机器上配好ks文件之后copy到cobbler机器上##########

kickstart是cobbler的底层基础,ks的配置文件就是需要kickstart来做的,kickstart的安装google找下有很多

4、通过cobbler指定一个机器安装开始

cobbler system add –name=napa –profile=webserver –interface=eth0 –mac=00:22:19:5d:98:2d –static=1 –ip=10.0.60.110 –name-servers=”208.67.222.222 208.67.220.220″ –subnet=255.255.255.0 –hostname=napa.intra.fminutes.com –dns-name=napa.intra.fminutes.com

####### 需要提供DHCP服务,如果网内没有DHCP,则需要再在cobbler服务器上启用DHCP服务,dhcp的配置例在/etc/cobbler/内有一份 ####

kvm及qemu-kvm安装配置

需要CPU支持,如果看google 上很多。

关于KVM虚拟机在使用qemu-kvm启动时的参数,已经配合参数进行优化,可以参照IBM技术的一个文档 http://www.ibm.com/developerworks/cn/linux/l-cn-kvm/

其中提到的qemu-kvm启动虚拟机时,-net参数后使用 -net nic, mode=virtio, macaddr=00:3e:00:12:34:3e 在千兆网络环境内能明显提升虚拟机的网络性能

表 2. 虚拟网络模块的性能差异

虚拟网络模块 网络传输速度(ssh) 客户机操作系统 网络状态
rtl8029 200-300KB/s SLES10SP2 (kernel 2.6.16-60) 不稳定
e1000 4.8-5.4MB/s SLES10SP2 (kernel 2.6.16-60) 稳定
virtio 10.6-11.1MB/s SLES11 (kernel 2.6.27-19) 稳定

linux系统中关于虚拟网络设备的manpage

清单 13. 虚拟网络设备的 manpage

Network options:
 -net nic[,vlan=n][,macaddr=addr][,model=type]
 Create a new Network Interface Card and connect it to VLAN n (n = 0 is the default).
 The NIC is an rtl8139 by default on the PC target. Optionally,
 the MAC address can be changed.
 If no -net option is specified, a single NIC is created.
 Qemu can emulate several different models of network card.
 Valid values for type are "i82551", "i82557b", "i82559er", "ne2k_pci", "ne2k_isa",
 "pcnet", "rtl8139", "e1000", "smc91c111", "lance" and "mcf_fec".
 Not all devices are supported on all targets.
 Use -net nic,model=? for a list of available devices for your target.

下面是安装配置过程

PS:需要注意的是,yum install kvm之后,可执行的程序qemu-kvm工具是在/usr/libexec/qemu-kvm,并没有在/usr/bin,所以直接使用qemu-kvm会说找不到命令,在path将/usr/libexec/添加进去即可

说下需要安装的包:

[root@kvm wills]# rpm -qa|grep kvm
kvm-83-105.el5_4.27
etherboot-zroms-kvm-5.4.4-10.el5.centos
kvm-tools-83-105.el5_4.27
kmod-kvm-83-105.el5

[root@kvm wills]# rpm -qa|grep qemu
qemu-0.9.0-4

QEMU只是用来作KVM的控制台的作用,引用官方的说法是:For the userspace components, you will find both qemu-kvm-<version> and kvm-<version> there. qemu-kvm is the stable branch of kvm, it’s based off of qemu’s point releases with the kvm extras on top; kvm-NN releases are so called development releases.

QEMU和KVM的关系引用copy来的一段话:

现在所说的虚拟化,一般都是指在CPU硬件支持基础之上的虚拟化技术。KVM也同hyper-V、Xen一样依赖此项技术。没有CPU硬件虚拟化的支持,KVM是无法工作的。
准 确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出 可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两 大部分三个文件,分别是KVM模块、QEMU工具以及二者的合集。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU 的关系

安装均可使用Yum方式安装。
1、创建虚拟磁盘

qemu-img create -f qcow2 php-el5.4-vm.img 50G     ######  -f qcow2是代表磁盘映像格式.在大多数情况下可以自动检测.可以支持下面的格式:
raw
raw 磁盘格式(默认).这种格式有简单并且易于移植到其他模拟器的优点.如果我们的文件系统支持holes(例如在Linux上的ext2或是ext3),然 后只有写入的部分保持空白.使用qemu-img info来得到映像使用的实际的大小或是在Unix/Linux上使用 ls -ls.
qcow
QEMU映像格式.最通用的格式.使用他可以获得较小的映像(如果我们的文件系统不支持holes,例如在Windows上,这是相当有用的),可以选用AES加密或是基于zlib的压缩.
cow
在写映像格式上的用户模式的Linux拷贝.在QEMU中作为增长的映像格式使用.这个选项只是为了与以前版本的兼容,并不能在Win32上使用.
vmdk
VMware 3 或是 4 兼容的映像格式.

2、启动KVM进程,例如;

qemu-kvm -m 1024 -smp 4 -hda php-el5.4-vm.img -cdrom /home/wills/CentOS-5.4-x86_64-bin-DVD.iso -net nic,macaddr=00:3e:00:12:34:80 -net tap,script=/etc/init.d/qemu-ifup -boot d -vnc 192.168.1.214:0 –daemonize
启动时如果提示SDL库的问题,说明还需要安装SDL,yum search SDL,把相关的SDL都安装好  (这个库即使在安装好,如果qemu-kvm启动不带vnc这个参数照样还是会有SDL的错误提示,所以只需加上vnc这个参数即可)

qemu-kvm各参数的说明:

-m 1024 设置虚拟系统内存1024MB
-localtime 使虚拟系统与宿主系统时间一致
-M pc 虚拟系统类型为pc
-smp 1 1个CPU
-drive file=Windows7_x86.img,cache=writeback,boot=on
硬盘选项,虚拟磁盘是Windows7_x86.img,cache方式为writeback,可引导型磁盘。
-net nic,macaddr=52:54:00:12:34:80 网卡选项,手工指定mac地址。
-net tap tap类型网络,相当于“桥模式”
-cdrom Windows7.iso 光驱
-boot d 启动顺序。d代表光驱。
-name kvm-win7,process=kvm-win7 为虚拟机取名,便于识别
-vnc :2 这里是通过vnc连接控制窗口,这里是在5902端口。client可用IP:2连接。

################################完毕#####################

sync排除不同步的文件 –exclude-from=file

–exclude-from=file的简单说明
下面我把我整个过程简单的说一下:
1.在rsync服务器端,进入到相应的文件夹下。使用ls 〉file命令,把当前文件夹下的所有文件名都导入到file里。
2.vi file 。编辑file文件,把里面想要同步的文件名字删掉,留下的就是不需要同步的文件了。
3.touch file。
4.最后在rsync客户端,找个适当的位置,把这个file文件放在那就可以了。

假如那个file名字为filelist并,且放置在/home下。
/usr/local/bin/rsync -vzrtopg  –progress –delete   –exclude-from=/home/filelist  postfix@192.168.0.1::test  /usr/local/test/ –password-file=/etc/passwd.pwd

使用密钥来登录ssh-免密码输入

第一步:生成密匙对,我用的是rsa的密钥。使用命令 ”ssh-keygen -t rsa”

   [user1@rh user1]$ ssh-keygen -t rsa

   Generating public/private rsa key pair.

   Enter file in which to save the key (/home/user1/.ssh/id_rsa):

   Created directory '/home/user1/.ssh'.

   Enter passphrase (empty for no passphrase):

   Enter same passphrase again:

   Your identification has been saved in /home/user1/.ssh/id_rsa.

   Your public key has been saved in /home/user1/.ssh/id_rsa.pub.

   The key fingerprint is:

   e0:f0:3b:d3:0a:3d:da:42:01:6a:61:2f:6c:a0:c6:e7 user1@rh.test.com

   [user1@rh user1]$

生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。接着会提示输入一 

个不同于你的password的密码,直接回车,让它空着。当然,也可以输入一个
其中公共密钥保存在 ~/.ssh/id_rsa.pub
私有密钥保存在 ~/.ssh/id_rsa

之后把这个密钥对中的公共密钥复制到你要访问的机器上去,并保存为

~/.ssh/authorized_keys.

   [user1@rh user1]$ scp ~/.ssh/id_rsa.pub rh1:/home/user1/.ssh/authorized_keys

   user1@rh1's password:

   id_rsa.pub                                    100%  228     3.2MB/s   00:00

至此完成。登录不用密码了