1、最好是干净的系统,并且是官方支持的系统,为了追时髦,我在这上面浪费了不少时间
2、Zimbra需要用到22端口的SSH端口,若系统的SSH端口已经修改为其他,需要执行以下命令:
su su - zimbra zmprov ms server.domain.com zimbraRemoteManagementPort 2222
3、Ubuntu 10.04 默认缺少的包:
sudo apt-get install libperl5.10 sysstat sqlite3
4、服务器的hostname最好设置成你想要设置的域名,不然设置DNS的时候容易出错
5、一般服务器hostname会设置成mail.yourdomain.com,而Zimbra装好后通常使用@yourdomain.com作为后缀,所以在安装的时候,即使你DNS都是按照官方文档一步步做的,还是会提示MX记录错误。需要在安装的时候将域名改为yourdomain.com,这个修改不会对系统造成你预期外的问题
6、如果服务器在路由器或者防火墙后面,需要做split DNS,参考官方文档
7、Zimbra需要用到的端口:22 25 80 110 143 443 465 587 993 995 7071
8、Zimbra截止7.1.4版本似乎还无法直接在后台限制用户给某个域名发送邮件,实现该功能的方法是直接修改postfix的设置,参考官方wiki中搜索restrict,有好几篇说这个问题,找篇时间最近的照做就行了
如果被删除的文件还有进程在访问,那么rm删掉后是不会自动释放磁盘空间的。
lsof | grep deleted kill掉找到的进程
不用rm清理文件的方法:
1、alert.log listerner.log等,用”>文件”的方式
2、归档日志用backup … delete input的方式
1、基于LVM snapshot方式进行备份:LVM的snapshot默认是CoW的,不是立即备份,研究与实验了数个小时后放弃
2、KVM的虚拟机可以使用LVM作为存储,也可以使用文件方式存储,默认就是文件形式。只不过文件形式效率不高而已。所以可以将LVM逻辑卷转为文件:
qemu-img convert -O qcow2 /dev/vg_name/lv_name/ /var/lib/libvirt/images/image_name.qcow2
以上命令是不压缩的,如果想要压缩转换,在convert后加-c参数
3、基于文件的虚拟机有一个很cool的特性:支持基于一个已有的image文件创建虚拟机,并将所有改动部分写入另一个文件。例如:我装好了一台虚拟机,基本配置都完成了。我以后就可以根据这个文件创建n个虚拟机,所有虚拟机都不会影响到那个万能文件。
qemu-img create -b original_image.qcow2 -f qcow2 clone_image01.qcow2 qemu-img create -b original_image.qcow2 -f qcow2 clone_image02.qcow2
我还能创建一个文件的快照,用来快速恢复备份到创建快照的那一时刻
qemu-img snapshot -c snapshot_name vm_image_name.qcow2
1、/etc/hostname
2、/etc/hosts:127.0.1.1
cd /etc/apt/ sudo mv sources.list sources.list.us sudo wget http://mirrors.163.com/.help/sources.list.oneiric sudo mv sources.list.oneiric sources.list.163 sudo cp sources.list.163 sources.list
以上11.10下测试有效
sudo vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.99
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 68.100.16.25 68.100.16.30 68.105.28.12
sudo vim /etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4
sudo /etc/init.d/networking restart
1、
sudo vim /etc/rc.local
exit 0前添加:
route add default gw IP地址
2、
sudo vim /etc/network/interfaces
末尾添加:
up route add default gw IP地址 #以下是路由信息 up route add -net 172.20.11.0/16 gw 172.20.10.254 dev eth1
1、修改/etc/default/ufw中DEFAULT_FORWARD_POLICY 为 “ACCEPT”
DEFAULT_FORWARD_POLICY="ACCEPT"
2、修改/etc/ufw/sysctl.conf,注释掉以下两行:
#net/ipv4/ip_forward=1 #net/ipv6/conf/default/forwarding=1
3、修改/etc/ufw/before.rules,在最后添加
*natREROUTING - [0:0]
OSTROUTING - [0:0] #实现将通过eth0进来的所有针对2222端口的请求转发到192.168.122.100的22端口上 -A PREROUTING -i eth0 -p tcp --dport 2222 -j DNAT --to-destination 192.168.122.100:22 #实现将所有192.168.122.X网段的请求通过eth0转发出去 -A POSTROUTING -s 192.168.122.0/24 -o eth0 -j MASQUERADE #实现将所有来自192.168.122.100:22的请求通过eth0的2222端口转发出去 #待完成 COMMIT
4、
sudo iptables -F -t nat
执行以上命令时注意,如果有其他iptables规则,比如virsh默认的转发规则,会一起被清掉,如果没有手动添加相应的转发规则,则需要执行以下命令(存在虚拟机时):
sudo virsh shutdown 虚拟机名称 sudo virsh net-destroy default sudo virsh net-start default
5、
sudo ufw disable sudo ufw enable 或者 sudo ufw reload
6、查看规则是否生效
sudo iptables -L -t nat
sudo vmbuilder kvm ubuntu --suite lucid --flavour virtual --arch amd64 -o --libvirt qemu:///system --hostname zimbra --mem 2048 --user your-username --pass your-password --dest /var/lib/libvirt/images/zimbra --addpkg openssh-server --mirror http://mirrors.163.com/ubuntu/ --ip 192.168.122.2 --bridge virbr0
其中网桥virbr0,在安装ubuntu的时候如果选择了virtual host,互自动配置好
2012-03-03 05:15:26,507 INFO : Calling hook: preflight_check 2012-03-03 05:15:26,511 INFO : Calling hook: set_defaults 2012-03-03 05:15:26,512 INFO : Calling hook: bootstrap
等待……等待……等待……
估计是在下10.04的文件呢,网速还是比较给力的,从下面的输出来看,安装命令里面还是别带着装软件了,装好后再装吧
2012-03-03 08:30:59,689 INFO : Calling hook: configure_os 2012-03-03 08:31:15,751 INFO : update-alternatives: error: no alternatives for rsh. 2012-03-03 08:31:15,826 INFO : update-alternatives: error: no alternatives for rlogin. 2012-03-03 08:31:15,901 INFO : update-alternatives: error: no alternatives for rcp. 2012-03-03 08:31:16,811 INFO : Creating SSH2 RSA key; this may take some time ... 2012-03-03 08:31:17,040 INFO : Creating SSH2 DSA key; this may take some time ... 2012-03-03 08:31:17,315 INFO : 2012-03-03 08:31:17,315 INFO : Warning: Fake initctl called, doing nothing 2012-03-03 08:31:17,315 INFO : 2012-03-03 08:31:17,316 INFO : Warning: Fake initctl called, doing nothing 2012-03-03 08:31:19,727 INFO : 2012-03-03 08:31:19,728 INFO : Current default time zone: 'Etc/UTC' 2012-03-03 08:31:19,731 INFO : Local time is now: Sat Mar 3 00:31:19 UTC 2012. 2012-03-03 08:31:19,732 INFO : Universal Time is now: Sat Mar 3 00:31:19 UTC 2012. 2012-03-03 08:31:19,732 INFO : Extracting templates from packages: 100% 2012-03-03 08:32:03,290 INFO : 2012-03-03 08:32:03,290 INFO : Current default time zone: 'Etc/UTC' 2012-03-03 08:32:03,292 INFO : Local time is now: Sat Mar 3 00:32:03 UTC 2012. 2012-03-03 08:32:03,293 INFO : Universal Time is now: Sat Mar 3 00:32:03 UTC 2012. 2012-03-03 08:32:03,293 INFO : Run 'dpkg-reconfigure tzdata' if you wish to change it. 2012-03-03 08:32:03,293 INFO : 2012-03-03 08:32:35,754 INFO : Updating certificates in /etc/ssl/certs... WARNING: Skipping duplicate certificate ca-certificat es.crt 2012-03-03 08:32:35,928 INFO : 0 added, 1 removed; done. 2012-03-03 08:32:35,929 INFO : Running hooks in /etc/ca-certificates/update.d....done. 2012-03-03 08:32:39,074 INFO : restart: Unknown instance: 2012-03-03 08:32:39,435 INFO : start: Unknown parameter: JOB 2012-03-03 08:32:41,535 INFO : Cleaning up 2012-03-03 08:32:41,536 INFO : Calling hook: preflight_check 2012-03-03 08:32:42,317 INFO : Calling hook: configure_networking 2012-03-03 08:32:42,333 INFO : Calling hook: configure_mounting 2012-03-03 08:32:42,340 INFO : Calling hook: mount_partitions 2012-03-03 08:32:42,341 INFO : Mounting target filesystems 2012-03-03 08:32:42,341 INFO : Creating disk image: "/tmp/tmpVZ8uGc" of size: 5120MB 2012-03-03 08:32:42,346 INFO : Adding partition table to disk image: /tmp/tmpVZ8uGc 2012-03-03 08:32:42,696 INFO : Adding type 4 partition to disk image: /tmp/tmpVZ8uGc 2012-03-03 08:32:42,697 INFO : Partition at beginning of disk - reserving first cylinder 2012-03-03 08:32:43,120 INFO : Adding type 3 partition to disk image: /tmp/tmpVZ8uGc 2012-03-03 08:32:43,127 INFO : [0] ../../libparted/filesys.c:148 (ped_file_system_type_get): File system alias linux-swap(new) is deprecated 2012-03-03 08:32:43,548 INFO : Creating loop devices corresponding to the created partitions 2012-03-03 08:32:43,557 INFO : Creating file systems 2012-03-03 08:32:43,560 INFO : mke2fs 1.41.14 (22-Dec-2010) 2012-03-03 08:32:44,481 INFO : mkswap: /dev/mapper/loop0p2: warning: don't erase bootbits sectors 2012-03-03 08:32:44,482 INFO : on whole disk. Use -f to force. 2012-03-03 08:32:46,973 INFO : Calling hook: install_bootloader 2012-03-03 08:32:56,670 INFO : Searching for GRUB installation directory ... found: /boot/grub 2012-03-03 08:32:56,721 INFO : Searching for default file ... Generating /boot/grub/default file and setting the default boot e ntry to 0 2012-03-03 08:32:56,722 INFO : Searching for GRUB installation directory ... found: /boot/grub 2012-03-03 08:32:56,726 INFO : Testing for an existing GRUB menu.lst file ... 2012-03-03 08:32:56,726 INFO : 2012-03-03 08:32:56,727 INFO : Could not find /boot/grub/menu.lst file. 2012-03-03 08:32:56,727 INFO : Generating /boot/grub/menu.lst 2012-03-03 08:32:56,810 INFO : Searching for splash image ... none found, skipping ... 2012-03-03 08:32:56,986 INFO : grep: /boot/config*: No such file or directory 2012-03-03 08:32:57,085 INFO : Updating /boot/grub/menu.lst ... done 2012-03-03 08:32:57,085 INFO : 2012-03-03 08:32:57,358 INFO : Searching for GRUB installation directory ... found: /boot/grub 2012-03-03 08:32:57,411 INFO : Searching for default file ... found: /boot/grub/default 2012-03-03 08:32:57,417 INFO : Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst 2012-03-03 08:32:57,557 INFO : Searching for splash image ... none found, skipping ... 2012-03-03 08:32:57,591 INFO : grep: /boot/config*: No such file or directory 2012-03-03 08:32:57,694 INFO : Updating /boot/grub/menu.lst ... done 2012-03-03 08:32:57,694 INFO : 2012-03-03 08:32:57,804 INFO : Searching for GRUB installation directory ... found: /boot/grub 2012-03-03 08:32:57,813 INFO : Calling hook: install_kernel 2012-03-03 08:33:09,096 INFO : Done. 2012-03-03 08:33:11,734 INFO : Running depmod. 2012-03-03 08:33:11,798 INFO : update-initramfs: Generating /boot/initrd.img-2.6.32-38-server 2012-03-03 08:33:13,760 INFO : Running postinst hook script /usr/sbin/update-grub. 2012-03-03 08:33:13,861 INFO : Searching for GRUB installation directory ... found: /boot/grub 2012-03-03 08:33:13,896 INFO : Searching for default file ... found: /boot/grub/default 2012-03-03 08:33:13,900 INFO : Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst 2012-03-03 08:33:13,987 INFO : Searching for splash image ... none found, skipping ... 2012-03-03 08:33:14,022 INFO : Found kernel: /boot/vmlinuz-2.6.32-38-server 2012-03-03 08:33:14,102 INFO : Replacing config file /var/run/grub/menu.lst with new version 2012-03-03 08:33:14,121 INFO : Updating /boot/grub/menu.lst ... done 2012-03-03 08:33:14,121 INFO : 2012-03-03 08:33:14,595 INFO : Calling hook: post_install 2012-03-03 08:33:14,596 INFO : Calling hook: unmount_partitions 2012-03-03 08:33:14,597 INFO : Unmounting target filesystem 2012-03-03 08:33:17,993 INFO : Calling hook: convert 2012-03-03 08:33:17,994 INFO : Converting /tmp/tmpVZ8uGc to qcow2, format /var/lib/libvirt/images/zimbra/tmpVZ8uGc.qcow2 2012-03-03 08:33:23,323 INFO : Calling hook: fix_ownership 2012-03-03 08:33:23,332 INFO : Calling hook: deploy
安装选线始终没配对,装了三次,终于算是能够启动并且ssh登录了,不过到此为止只能实现在host上ssh登录guest,如何实现外网能直接登录guest,待续
几乎寻遍整个互联网,没找到正确的方法,很多人说是Network Manager的问题,可是我搜了,根本没装network-manager,修改/etc/dhcp/dhclient.conf方法无效。
实在没办法了,暂时将这个文件设置成只读,等以后看能不能无意间找到原因了
edit:
设成只读都没用,都已经是444了,照样被改掉。找到系统日志/var/log/syslog,有如下记录:
dnsmasq[1088]: reading /etc/resolv.conf
dnsmasq[1088]: using nameserver 192.168.1.1#53
继续寻找解决办法
edit:
我用pgrep -l dns找到了dnsmasq 1088进程,kill掉了,也算是个不是办法的办法,同时pkill掉的还有dhclient3,反正用的都是static IP
ubuntu下让play framework的应用开机自动启动
注意:因为上传文件必须有后缀名,所以加了.sh的后缀,下载之后去掉后缀
注意### BEGIN INIT INFO 和 ### END INIT INFO 部分 不能删除,不是单纯注释,是系统识启动时识别用到的。
脚本中的 myapp 和java home等目录替换成你的应用即可
rm *****.pid 语句应该可以删除,留在那里是为了防止play非法关闭,还留有pid文件,start命令不能正常启动的情况。
touch语句是为了测试看是否执行,可删除。
———————————————————————————-
update-rc.d -f myapp remove
是删除/etc/init.d/myapp 的所有符号链接,删除之后就不会自动启动了。
update-rc.d myapp defaults 98 8
的意思是 把 myapp这个启动脚本的启动顺序设置成 98. 关闭顺序(ubuntu系统关闭时的顺序)为8
根据各系统不同可以修改值。 查看/etc/rc0.d 到 /etc/rc6.d
看里面的 SnnXXXX 和 KnnXXX 这样的文件,合理安排启动顺序。顺序值越大,越靠后。
因为我的系统中 mysql的启动顺序位85, lighttpd的启动顺序为91,关闭顺序为09,
我要保证play在mysql和lighttpd后启动, 在 lighttpd前关闭,
所以设置 98 8
执行这个脚本,重启,则play能自动启动。
要测试 myapp 脚本是否可用,
运行 /etc/init.d/myapp start
/etc/init.d/myapp restart
/etc/init.d/myapp stop
myapp.sh:
#! /bin/sh
# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides: myapp
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop myappservice
# Description: myappservice is myapp server
### END INIT INFO
JAVA_HOME=/myappsys/jdk/jdk1.6.0_24
JRE_HOME=/myappsys/jdk/jdk1.6.0_24/jre
CLASSPATH=".:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH"
PATH="$JAVA_HOME/bin:$JRE_HOME/bin:/myappsys/mysql/mysql/bin:$PATH"
. /lib/lsb/init-functions
case "$1" in
start)
rm /myappsys/myappservice/myapp/server.pid
/myappsys/play/play-1.1.1/play start /myappsys/myappservice/myapp
touch /myappsys/play/myapp_start_2222222
;;
stop)
/myappsys/play/play-1.1.1/play stop /myappsys/myappservice/myapp
rm /myappsys/myappservice/myapp/server.pid
touch /myappsys/play/myapp_stop_2222222
;;
restart|force-reload)
/myappsys/play/play-1.1.1/play stop /myappsys/myappservice/myapp
rm /myappsys/myappservice/myapp/server.pid
/myappsys/play/play-1.1.1/play start /myappsys/myappservice/myapp
touch /myappsys/play/myapp_restart_22222
;;
*)
echo "Usage: /etc/init.d/myapp {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
install_myapp.sh:
update-rc.d -f myapp remove cp myapp /etc/init.d/ chmod +x /etc/init.d/myapp update-rc.d myapp defaults 98 8 sleep 100