@jackwong 我安装4.5.1一直有未知错误 建议更换,能给些建议么

上周 CentOS 7.0 正式版发布了,Xen4CentOS 项目还没来得及更新支持 CentOS 7.0,所以目前要在 CentOS 7.0 上玩 Xen 的唯一办法只有编译源代码了。貌似这次 CentOS 没有发布 Minimal 安装版,下面的编译安装步骤在 LiveCD 安装版(CentOS-7.0--livecd.iso)上完成。
安装需要的软件包
安装完 CentOS 7.0 后第一件事就是启动 SSH 以便能从另外一台机器访问,新版本的 CentOS 引入了有争议的 systemd 进程管理器替代了 Unix 传统的 init 系统。开启服务使用 systemctl 命令:
# systemctl start sshd
# systemctl enable sshd
更新系统,并且安装编译 Xen 所需要的编译器、工具、软件库等:
# yum update
# yum groupinstall "Development Tools"
# yum install -y gcc gcc-c++ git patch texinfo
# yum install -y python-devel acpica-tools libuuid-devel ncurses-devel glib2 glib2-devel libaio-devel openssl-devel yajl-devel glibc-devel glibc-devel.i686 pixman-devel
# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/dev86-0.16.17-15.1.el6.x86_64.rpm
# rpm -ivh dev86-0.16.17-15.1.el6.x86_64.rpm
下载最新的 xen 源代码、编译、安装,目前最新的代码是 xen 4.5-unstable:
# git clone git://xenbits.xen.org/xen.git
# ./configure
# make dist
# make install
安装 dom0 内核
下载最新的 Linux 内核源代码,配置 dom0 内核、编译、安装,注意 dom0 内核需要选择下面一些内核选项:
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.4.tar.xz
# tar xf linux-3.15.4.tar.xz
# cd linux-3.15.4/
# make menuconfig
# vi .config
CONFIG_X86_IO_APIC=y
CONFIG_ACPI=y
CONFIG_ACPI_PROCFS=y (optional)
CONFIG_XEN_DOM0=y
CONFIG_PCI_XEN=y
CONFIG_XEN_DEV_EVTCHN=y
CONFIG_XENFS=y
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_BACKEND=y
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_BALLOON=y
CONFIG_XEN_SCRUB_PAGES=y
# make modules
# make modules_install
# make install
配置 grub2,加上带 Xen 的 Linux dom0 内核:
# grub2-mkconfig -o /etc/grub2.cfg
# vi /etc/grub2.cfg
# vi /etc/grub.d/40_custom
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.
Simply type the
# menu entries you want to add after this comment.
Be careful not to change
# the 'exec tail' line above.
menuentry 'CentOS Linux, with Linux 3.15.4 Xen' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.15.4-advanced-aa64a6a3-518e-4a7c-9e88-2f3f33c8c700' {
load_video
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'
6bc61a5c-12e3-dc
search --no-floppy --fs-uuid --set=root 6bc61a5c-12e3-dc
multiboot /xen.gz
module /vmlinuz-3.15.4 root=UUID=aa64a6a3-518e-4a7c-9e88-2f3f33c8c700 ro rd.lvm.lv=cl/root vconsole.font=latarcyrheb-sun16 crashkernel=auto
vconsole.keymap=us rd.lvm.lv=cl/swap rhgb quiet
module /initramfs-3.15.4.img
# grub2-mkconfig -o /etc/grub2.cfg
可能出现的错误和解决办法
重启后,选择 CentOS Linux, with Linux 3.15.4 Xen 进入 Xen 系统,使用 xl info 命令发现有错,这是因为 Xen 相关的软件库被安装到了 /usr/local/lib 目录,系统找不到。所以做一些链接就可以了:
xl: error while loading shared libraries: libxlutil.so.4.3: cannot open shared object file: No such file or directory
# cd /usr/lib/
# ln -s /usr/local/lib/libxlutil.so.4.3.0 libxlutil.so.4.3
# ln -s /usr/local/lib/libxlutil.so.4.3.0 libxlutil.so
# ln -s /usr/local/lib/libxenlight.so.4.5.0 libxenlight.so.4.5
# ln -s /usr/local/lib/libxenlight.so.4.5.0 libxenlight.so
# ln -s /usr/local/lib/libxenctrl.so.4.5.0 libxenctrl.so.4.5
# ln -s /usr/local/lib/libxenguest.so.4.5.0 libxenguest.so.4.5
# ln -s /usr/local/lib/libxenguest.so.4.5.0 libxenguest.so
# ln -s /usr/local/lib/libxenstat.so.0.0 libxenstat.so.0
# ln -s /usr/local/lib/libxenstat.so.0.0 libxenstat.so
# ln -s /usr/local/lib/libxenstore.so.3.0.3 libxenstore.so.3.0
# ln -s /usr/local/lib/libxenstore.so.3.0.3 libxenstore.so
# ln -s /usr/local/lib/libxenvchan.so.1.0.0 libxenvchan.so.1.0
# ln -s /usr/local/lib/libxenvchan.so.1.0.0 libxenvchan.so
# ln -s /usr/local/lib/libblktapctl.so.1.0.0 libblktapctl.so.1.0
# ln -s /usr/local/lib/libblktapctl.so.1.0.0 libblktapctl.so
# ldconfig
再次运行 xl info 发现如下问题:
xc: error: Could not obtain handle on privileged command interface (2 = No such file or directory): Internal error
libxl: error: libxl.c:99:libxl_ctx_alloc: cannot open libxc handle: No such file or directory
cannot init xl context
是因为没有挂载 xenfs 的缘故,挂载一下就可以了:
# modprobe xenfs
# mount -t xenfs xenfs /proc/xen
# ls /proc/xen/
capabilities
: localhost.localdomain
: #1 SMP Fri Jul 11 09:37:12 SAST 2014
max_cpu_id
cores_per_socket
threads_per_core
: bfebfbff:f00:15bae3bf:00
total_memory
free_memory
sharing_freed_memory
sharing_used_memory
outstanding_claims
: -unstable
xen_version
: 4.5-unstable
: xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler
xen_pagesize
platform_params
: virt_start=0xffff
xen_changeset
: Wed Jul 9 13:30:54
git:7579169-dirty
xen_commandline
cc_compiler
: gcc (GCC) 4.8.2
(Red Hat 4.8.2-16)
cc_compile_by
cc_compile_domain
: localdomain
cc_compile_date
: Fri Jul 11 08:49:06 SAST 2014
xend_config_format
记得启动 xencommons 哦,以前旧版本的 xend 已经被 xencommons 替代了:
# /etc/init.d/xencommons start
Starting C xenstored...
Setting domain 0 name and domid...
Starting xenconsoled...
Starting QEMU as disk backend for dom0
Mem VCPUs State Time(s)
Xen 从 4.1 版本开始引入了新版工具集 xl/libxl,并在后续的版本中逐步替代旧的 xm/xend,在 4.5 版本中已经完全删除了 xm/xend.
以前的版本可参考:
(31 Comments) 分类:现在大家基本都在用智能手机,加上我们的工作区已经被 Wifi 覆盖,如果能让每个手机连上 Wifi,通过一个 Asterisk 服务器(网关)给内线打电话的话就会很方便,比如我在周围散步、或者和朋友聊天的话还可以收到办公桌上的内线电话。如何用智能手机(这里主要使用 Nokia E 系列)免费打内线电话呢?首先手机必须通过 Wifi 连上内部网络,然后通过内部网络的一台 Asterisk 服务器和电话线连上内部电话网络(PSTN),Asterisk 在这里相当于一个网关,用来连接 IP 网络和 PSTN 网络,这样我们就可以通过 IP 网上的电话(手机或者软电话)打内部电话(俗称座机)了,如果内部电话使用 IP 电话就更好了,就不用这么麻烦了。
上个星期在自己的 PC 上安装了一个 Digium 电话卡,并且 ,测了测效果,电话语音效果还不错。这个星期打算安装在服务器上,SUN 服务器没有 PCI 插槽,找了一台很老的 HP ProLiant ML110,配置是:Intel P4 3GHz CPU, 4GB ECC RAM,足够我们小组的人用了。按照 Asterisk 和 Digium 官方网站的推荐,VPSee 还是决定使用 CentOS 5.4 作为这台 Asterisk 服务器的操作系统。
安装和配置 Asterisk 和 Digium 卡
首先,然后加上
Asterisk 的 Repositories:
# vi /etc/yum.repos.d/CentOS-Asterisk.repo
[asterisk-tested]
name=CentOS-$releasever - Asterisk - Tested
baseurl=http://packages.asterisk.org/centos/$releasever/tested/$basearch/
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium
[asterisk-current]
name=CentOS-$releasever - Asterisk - Current
baseurl=http://packages.asterisk.org/centos/$releasever/current/$basearch/
gpgcheck=0
#gpgkey=http://packages.asterisk.org/RPM-GPG-KEY-Digium
再加上 Digium 的 Repositories:
# vi /etc/yum.repos.d/CentOS-Digium.repo
[digium-tested]
name=CentOS-$releasever - Digium - Tested
baseurl=/centos/$releasever/tested/$basearch/
gpgcheck=0
#gpgkey=/RPM-GPG-KEY-Digium
[digium-current]
name=CentOS-$releasever - Digium - Current
baseurl=/centos/$releasever/current/$basearch/
gpgcheck=0
#gpgkey=/RPM-GPG-KEY-Digium
安装 Asterisk 1.6 和 DAHDI:
# yum install asterisk16 asterisk16-configs asterisk16-voicemail \
dahdi-linux dahd
把 Asterisk 加到启动文件中以便开机就启动 Asterisk:
# /sbin/chkconfig asterisk on
安装完毕,启动和停止 Asterisk:
# /etc/init.d/asterisk start
# /etc/init.d/asterisk stop
插上电话线和电话
Digium 驱动安装成功并重启系统后,Digium 卡上的闪烁灯应该会被点亮,注意在拆机箱、安装 Digium PCI 卡时要把卡接上主机内的电源,这样电话才会听见拨号音。左边黑线连接电话机,右边白线连接电话线(PSTN):
配置 Digium
先运行 dahdi_genconf 自动生成配置文件,这样会在 /etc/dahdi/ 下面产生一个 system.conf,在 /etc/asterisk/ 下产生一个 dahdi-channels.conf,注意 Zaptel 项目被重新命名为 DAHDI,所以目录和配置文件名也有变化:
# /usr/sbin/dahdi_genconf
# vi /etc/dahdi/system.conf
vi /etc/asterisk/dahdi-channels.conf
配置 Asterisk
给系统分配电话号码,简单说明一下,1)如果要打外线需要先拨 9;2)如果从电话上(连在 Asterisk 服务器上的那个电话)接电话的话,Dial(dahdi/g1,20,rt);3)想把 incoming 电话转接到手机上(电话号码是 9252)的话,Dial(SIP/9252,20):
# vi /etc/asterisk/extensions.conf
[internal]
exten => 9250,1,Dial(SIP/9250,20)
exten => 9250,2,Hangup
exten => 9251,1,Dial(SIP/9251,20)
exten => 9251,2,Hangup
exten => 9252,1,Dial(SIP/9252,20)
exten => 9252,2,Hangup
exten => 92461,1,Dial(dahdi/g1,20,rt)
exten => 92461,2,Hangup
exten => _9.,1,Dial(dahdi/g2/${EXTEN:1})
[incoming]
exten => s,1,Answer()
exten => s,2,Dial(dahdi/g1,20,rt)
; exten => s,1,Dial(SIP/9252,20)
给手机或 SIP 软电话分配电话号码
# vi /etc/asterisk/sip.conf
type=friend
context=internal
username=9250
host=dynamic This device needs to register
canreinvite= Typically set to NO if behind NAT
dtfmode=rfc2833
X-Lite is behind a NAT router
disallow=all
allow=ulaw
subscribecontext=internal
mailbox=9250@interna Subscribe to status of multiple mailboxes
type=friend
context=internal
username=9251
host=dynamic This device needs to register
canreinvite= Typically set to NO if behind NAT
dtfmode=rfc2833
X-Lite is behind a NAT router
disallow=all
allow=ulaw
subscribecontext=internal
mailbox=9251@ Subscribe to status of multiple mailboxes
;Nokia Cellphone
type=friend
context=internal
username=9252
host=dynamic This device needs to register
qualify=no
notransfer=yes
disallow=all
allow=alaw
修改完配置文件后需要 Asterisk 重新导入配置文件:
# /usr/sbin/asterisk -vvvvvvvr
localhost*CLI> reload
手机必须是支持 Wifi,SIP 的智能手机,VPSee 在 Nokia E51/E60/E61/E70/E71/N82 上都测试过没有问题,如果没有手机的话也可以用任何 SIP 软电话(比如 X-Lite 等)客户端测试。测试具体配置可以看
的后半部分。
在 64位版本的 CentOS 5.4 上使用 yum 安装软件包的时候如果不小心的话会同时安装 i386 和 x86_64 版本的软件,如下面安装的 httpd-devel 就有 i386 和 x86_64 两个版本:
# yum install httpd-devel
Dependencies Resolved
================================================================================
Repository
================================================================================
Installing:
httpd-devel
2.2.3-31.el5.centos.2
httpd-devel
2.2.3-31.el5.centos.2
Installing for dependencies:
同时安装32位和64位版本的软件虽然不是什么错,也不会对系统造成什么问题,但是这样会浪费硬盘空间,而且显得系统臃肿、不干净。如果想要保持一个纯的64位系统、在64位 CentOS 上避免安装32位软件包的话很容易,只需要在 yum.conf 加上一行过滤掉 i386, i686 的软件包就可以了:
# vi /etc/yum.conf
exclude=*.i?86
然后删除系统上已经安装的 i386/i686 包:
# yum remove \*.i\?86
接着昨天的来,昨天 VPSee 简单的,发现 Redmine 的界面很简单清新、使用也很方便,需要的功能都有。今天打算部署到稍微专业一点的环境,Ruby on Rails 的部署方案主要有以下几种:
Lighttpd + FastCGI
Nginx + Mongrel
Nginx + Thin
Nginx + Phusion Passenger
Apache2 + Thin
Apache2 + Phusion Passenger (Mod_Rails)
目前用的比较多、比较成熟的要算 Nginx + Mongrel 和 Apache2 + Passenger 了,Apache2 + Passenger 配置很简单,非常适合多 ruby app 的部署。考虑到成熟、稳定、而且 VPSee 对 Nginx 比较熟悉,所以选定 Nginx + Mongrel 组合作为 Redmine 环境的部署方案。以下的内容虽然以 Redmine 为例来描述如何部署 Nginx + Mongrel,其配置方法也适用与一般 Rails 程序部署的情况。
安装和配置 Ruby on Rails
详细参考 “” 中的 “安装必要的软件包” 和 “安装和配置 Ruby on Rails”.
安装和配置 Mongrel
拷贝 mongrel_cluster 启动文件到 /etc/init.d/,在 /etc 下创建一个目录 mongrel_cluster 用来存放 mongrel 程序的配置文件,配置文件必须以 yml 扩展名结尾,不能是 yaml,最后修改 yml 配置文件,注意 user/group 要和的对上,否则 mongrel_cluster 启动不了:
# gem install mongrel
# gem install mongrel_cluster
# cp /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources \
/mongrel_cluster /etc/init.d/
# chmod +x /etc/init.d/mongrel_cluster
# /sbin/chkconfig --level 345 mongrel_cluster on
# mkdir /etc/mongrel_cluster
cp /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/defaults.yaml /etc/mongrel_cluster/redmine.yml
# vi /etc/mongrel_cluster/redmine.yml
cwd: /home/redmine/
port: "9000"
environment: production
address: 127.0.0.1
pid_file: log/mongrel.pid
servers: 4
group: redmine
user: redmine
启动 mongrel:
# /etc/init.d/mongrel_cluster start
安装配置 Nginx
安装完 nginx 后需要修改配置文件,nginx 支持模块化配置,为了更清晰最好把全局配置文件和 virtal host 配置文件分开,先是修改 nginx 的全局配置文件:
# yum install nginx
# vi /etc/nginx/nginx.conf
worker_processes
/var/log/nginx/error.
/var/run/nginx.
worker_connections
/etc/nginx/mime.
default_type
application/octet-
log_format
'$remote_addr - $remote_user [$time_local] $request'
'"$status" $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log
/var/log/nginx/access.
keepalive_timeout
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain text/html text/css application/x-javascript
text/xml application/xml application/xml+rss text/
include /etc/nginx/conf.d/*.
include /etc/nginx/vhosts/*;
接着在 /etc/nginx/ 下面创建一个文件夹 vhosts 用来存放多个 virtual host 局部配置文件:
# mkdir /etc/nginx/vhosts
# vi /etc/nginx/.conf
upstream mongrel_server {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
client_max_body_size 10M;
access_log
/var/www/.
location / {
proxy_set_header X-Real-IP $remote_
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_
proxy_set_header Host $http_
proxy_max_temp_file_size 0;
if (-f $request_filename) {
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.
if (-f $request_filename.html) {
rewrite (.*) $1.
if (!-f $request_filename) {
proxy_pass http://mongrel_
error_page
500 502 503 504
location = /50x.html {
/usr/share/nginx/
启动 nginx:
# /etc/init.d/nginx start
打开浏览器应该就可以访问了。
现在我们用 Trac + Git 来管理所有的项目,早些时候是由 Trac + Subversion 管理的,和 Git 比较起来 Subversion 简直就是龟速。虽然我们前段时间换成了 ,但是 web 管理界面还主要是在用 Trac 来管理,现在随着项目增多,人员变多,管理 Trac 也变得越来越麻烦。在 Trac 里改个小地方就需要动代码,比如还需要改代码,太多需要 hack 的地方。Trac 不直接支持多项目管理(可以通过插件支持),不能很方便的分配权限给不同的项目,不适合多项目管理。现在我们需要一个能象 Github、Google Code 那样能自己注册,自己管理的多用户版本控制和项目管理工具。Redmine 是一个用 Ruby on Rails 写的类似 Trac 的工具,功能比 Trac 丰富一些,内置常用的 SCM,比如:Subversion, Git 和 Mercurial,更重要的是支持多项目多人管理、自己管理自己的项目、界面简单清晰、装上就可以用没有太多需要 hack 的地方,先用一段时间如果感觉好就打算替代 Trac.
安装必要的软件包
首先安装必要的库和软件包:
# yum install zlib-devel curl-devel expat-devel gettext-devel
# yum install mysql-server mysql-devel openssl-devel gcc make
安装和配置 Ruby on Rails
下载 ruby 和 rubygems:
# wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
# wget http://rubyforge.vm.bytemark.co.uk/files/rubygems/rubygems-1.3.5.tgz
编译和安装 ruby:
# tar zxvf ruby-1.8.7.tar.gz
# cd ruby-1.8.7
# ./configure
# make install
# cd ext/zlib
# ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
# cd ../../
# make install
编译和安装 rubygems,安装 ruby mysql 支持:
# tar zxvf rubygems-1.3.5.tgz
# cd rubygems-1.3.5
# ruby setup.rb
# gem sources -r http://gems.rubyforge.org/
# gem sources -a http://gems.tron.name/gems.rubyforge.org/
# gem install mysql
安装 ruby on rails,指定版本号因为 redmine 需要这个版本:
# gem install rails -v=2.1.2
安装完以后检查一下是否都正确装上:
# gem list
*** LOCAL GEMS ***
actionmailer (2.1.2)
actionpack (2.1.2)
activerecord (2.1.2)
activeresource (2.1.2)
activesupport (2.1.2)
mysql (2.8.1)
rails (2.1.2)
rake (0.8.7)
安装和配置 Redmine
下载 redmine 并增加一个 redmine 用户:
# wget http://rubyforge.org/frs/download.php/66633/redmine-0.8.6.tar.gz
# /usr/sbin/adduser redmine
创建 redmine 需要的数据库:
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Your MySQL connection id is 50
Server version: 5.1.40 MySQL Community Server (GPL) by Remi
Type '' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database redmine character set utf8;
mysql> grant all on redmine.* to 'redmine'@'localhost' identified by 'yourpassword';
配制 redmine 环境和数据库:
# rm -rf /home/redmine
# mv redmine-0.8.6 /home/redmine
# cd /home/redmine/config
# cp database.yml.example database.yml
# vi database.yml
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: yourpassword
encoding: utf8
# cd /home/redmine
# rake db:migrate RAILS_ENV="production"
# chown -R redmine:redmine /home/redmine
# chmod -R o-rwx,g-rwx /home/redmine
启动 redmine:
# su - redmine -c "ruby script/server webrick -e production"
访问 redmine,打开浏览器访问 http://your-server-ip-address:3000,输入默认用户名密码登陆:admin/admin
安装和配置 Git
安装 Git,默认 respository 没有 git,需要先安装额外的源:
# rpm -Uvh http://download./pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
# yum update
# yum install git
配置和使用 Git,注意这里要修改 git_repositories 的权限,以便以 su – redmine 用户启动 redmine server 的时候有权限访问到 git_repositories 目录,所以最好把 git_repositories 建在 redmine 的下面:
# git config --global user.name "vpsee"
# git config --global user.email ""
# mkdir -p /home/redmine/git_repositories/project1
# cd /home/redmine/git_repositories/project1
# git init
# git add .
# git commit
# chown -R redmine:redmine /home/redmine/git_repositories
Git 的基本使用和配置可以看 ““。
集成 Git 到 Redmine
安装完 Git 和 Redmine 后,需要集成 Git 到 Redmine,登陆 redmine 后,新建一个 project,在 “settings->respository->SCM” 选择 git,在 “Path to .git directory” 加上 git 路径就可以了,而且还需要让 redmine 知道有 git repository 加进来。
# su - redmine -c "ruby script/runner "Repository.fetch_changesets" -e production"
几年前 Sun Microsystems 给我们捐了一个实验室,大概100多台 SunRay 瘦客户端/显示器 + 几台 SUN 服务器、鼠标、键盘,全套 Sun 的设备,上面一直跑的是 Solaris. SunRay 瘦客户端无 CPU 无 RAM,开机自动找 SunRay Server 然后进入服务器的登录界面,标准的 ”网络就是计算机“。VPSee 最近计划把 Solaris 改成 CentOS,正在做测试。
首先确认安装了 GNOME:
# yum groupinstall "X Window System" "GNOME Desktop Environment"
解压 srss_4.2_linux.zip 后,必要的 jre,tomcat 和 pdksh 软件包都在 srss_4.2/Supplemental 下,所以不必单独去下载:
srss_4.2/Supplemental/Java_Runtime_Environment/Linux/jre-6u13-linux-i586.bin
srss_4.2/Supplemental/Apache_Tomcat/apache-tomcat-5.5.20.tar.gz
srss_4.2/Supplemental/RHEL/i386/pdksh-5.2.14-30.3.i386.rpm
srss_4.2/GDM_2.16.7/Linux/Packages/gdm-2.16.7-2.1_01.sunray.i386.rpm
安装一些必要包
# yum install glib dhcp openldap-clients openldap tftp-server libXp \
openmotif22 openssl compat-libstdc++-33 libusb-devel compat-openldap
# yum groupinstall "Development Tools"
# yum install kernel-devel
除了上面必要包以外,SUN Ray 需要用到 pdksh(替代 ksh)以及特别版本的 gdm:
# rpm -ivh --force --nodeps pdksh-5.2.14-30.3.i386.rpm
# rpm -ivh --force --nodeps gdm-2.16.7-2.1_01.sunray.i386.rpm
Sun Ray Software 需要 SUN 版本的 JDK,所以如果是其他版本的 JDK,比如:OpenJDK,IBM JDK 等什么的需要先删除后再安装 SUN JDK,其实 Java 运行环境安装 JRE 就可以了,不一定需要 JDK:
# chmod +x jre-6u13-linux-i586.bin
# ./jre-6u13-linux-i586.bin
# mkdir /usr/java
# mv jre1.6.0_13 /usr/java/
# ln -sf /usr/java/jre1.6.0_13/bin/java /usr/bin/java
安装 Tomcat
不要用 yum install tomcat5 安装 Tomcat,会安装一堆不必要的包。用 srss_4.2_linux.zip 里面那个,省得再去单独下载:
# tar xvzf apache-tomcat-5.5.20.tar.gz
# mv apache-tomcat-5.5.20 / cd /opt
# ln -sf apache-tomcat-5.5.20 apache-tomcat
在 /etc/init.d/ 增加新建一个 Tomcat 启动配置文件:
# vi /etc/init.d/tomcat
#!/bin/bash
# Tomcat Server
# chkconfig: 345 96 30
# description: Java servlet container
JAVA_HOME=/usr/java/jre1.6.0_13/
PATH=${JAVA_HOME}/bin:${PATH}
TOMCAT_START=/opt/apache-tomcat/bin/startup.sh
TOMCAT_STOP=/opt/apache-tomcat/bin/shutdown.sh
export JAVA_HOME PATH
if [ -x ${TOMCAT_START} ]; then
echo "Starting tomcat server..."
${TOMCAT_START} &
echo "Cannot start tomcat server"
if [ -x ${TOMCAT_STOP} ]; then
echo "Stopping tomcat server..."
${TOMCAT_STOP} &
echo "Cannot stop tomcat server"
restart() {
status() {
echo "No status available for tomcat server"
case "$1" in
'restart')
echo "Please supply an argument [start|stop|restart]"
启动 Tomcat:
# chmod +x /etc/init.d/tomcat
# /sbin/chkconfig tomcat on
# /sbin/service tomcat start
安装 Sun Ray Software
# unzip srss_4.2_linux.zip
# cd srss_4.2
# ./utinstall
# /sbin/shutdown -r now
也可以不用 Sun Ray 硬件设备,下载一个 Sun Desktop Access Client 1.0 可以在 Windows 上连接 Sun Ray 服务器。
配置 Sun Ray Server
运行 utconfig 报错:
# cd /opt/SUNWut/sbin
# ./utconfig
Enter Sun Ray admin password:
Re-enter Sun Ray admin password:
/opt/SUNWut/sbin/utpw: error while loading shared libraries: libldap.so.199: cannot open shared object file: No such file or directory
解决办法:
# ln -sf /usr/lib/libexpat.so /usr/lib/libexpat.so.1
# ln -sf /usr/lib/libldap-2.3.so.0.2.31 /usr/lib/libldap.so.199
# ln -sf /usr/lib/libgdbm.so.2.0.0 /usr/lib/libgdbm.so.3
# ln -sf /usr/lib/liblber-2.3.so.0.2.31 /usr/lib/liblber.so.199
修改 GDM 配置文件后,启动 GDM:
# vi /etc/X11/gdm/custom.conf
# These are for the SunRay Services
DefaultPath=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/opt/SUNWut/bin
PostLoginScriptDir=/etc/X11/gdm/SunRayPostLogin/
PreSessionScriptDir=/etc/X11/gdm/SunRayPreSession/
PostSessionScriptDir=/etc/X11/gdm/SunRayPostSession/
DisplayInitDir=/etc/X11/gdm/SunRayInit
#Allow the SRSS to Dynamicly Allcoate XServers
VTAllocation=false
DynamicXServers=true
# Do not allow users to Reboot/Halt/Suspend System
RebootCommand=
HaltCommand=
SuspendCommand=
HibernateCommand=
Greeter=/usr/libexec/gdmgreeter
[security]
# /usr/sbin/gdm-binary
配置 DHCP 服务器
安装完 Sun Ray Server 软件后,会增加1个文件 SunRay-interface-eth1 文件,重启 dhcpd 服务的时候会报错,说 SunRay-interface-eth1 这个配置文件格式不对,用以下格式替换:
# vi /etc/opt/SUNWut/net/dhcp/SunRay-interface-eth1
option space SunR
option SunRay.AuthSrvr
code 21 = ip-
option SunRay.AuthSrvr
192.168.128.1;
option SunRay.FWSrvr
code 31 = ip-
option SunRay.FWSrvr
192.168.128.1;
option SunRay.NewTVer
option SunRay.NewTVer
"4.1_50,REV=.12.37";
option SunRay.Intf
option SunRay.Intf
option SunRay.LogHost
code 24 = ip-
option SunRay.LogHost
192.168.128.1;
option SunRay.LogKern
code 25 = integer 8;
option SunRay.LogKern
option SunRay.LogNet
code 26 = integer 8;
option SunRay.LogNet
option SunRay.LogUSB
code 27 = integer 8;
option SunRay.LogUSB
option SunRay.LogVid
code 28 = integer 8;
option SunRay.LogVid
option SunRay.LogAppl
code 29 = integer 8;
option SunRay.LogAppl
vendor-option-space SunR
subnet 192.168.128.0 netmask 255.255.255.0 {
default-lease-time 720000;
max-lease-time 1440000;
option routers 192.168.128.1;
range 192.168.128.100 192.168.128.199;
# /etc/init.d/dhcpd restart
关闭防火墙和 SELinux
# /usr/bin/system-config-securitylevel
重启系统后,Sun Ray 就应该自动运行了,需要一些配置才能让 Sun Ray 瘦客户端连上 CentOS 上的 Sun Ray 服务器。Sun Ray 支持两种常见的网络配置方式:dedicated interconnect 和 directly-connected shared subnet,如图所示:
dedicated interconnect 是建立一个私有内部网络,Sun Ray Server 的一个网络接口连着外部局域网,另一个网络接口连着由众多 Sun Ray 瘦客户端组成的私有网络。这时需要在服务器上配置 DHCP Server 来给每个瘦客户端分配 IP 地址。(假设 eth0 连着外部网,eth1 连着内部网)
# /opt/SUNWut/sbin/utadm -a eth1
# /opt/SUNWut/sbin/utrestart
directly-connected shared subnet 是直接连在外部网上,Sun Ray Server 和
Sun Ray 瘦客户端都在同一个子网络上,由第三方 DHCP 服务器提供 IP 地址。
# /opt/SUNWut/sbin/utadm -L on
# /opt/SUNWut/sbin/utrestart
这种方式通常会使用第三方的 DHCP 服务,Sun Ray Server 和 Client 都从第三方得到 IP 地址,这里就会有一个问题,第三方 DHCP Server 没有专门对 Sun Ray 设置必要的参数,导致 Sun Ray 瘦客户端得不到足够多的信息连接上 Sun Ray Server,这时需要把 Sun Ray 瘦客户端用 dedicated interconnect 的方式连上 Sun Ray Server,从服务器那里下载并更新 firmware 后才能正确在 directly-connected shared subnet 的网络上运行,一旦更新 firmware 后就可以脱离 dedicated interconnect 在
directly-connected shared subnet 上运行。
如果不使用第三方 DHCP 服务,由 Sun Ray Server 自己提供 DHCP 服务的话,可以用以下命令把 172.16.38.0 网段加入到 Sun Ray Server 管理:
# /opt/SUNWut/sbin/utadm -A 172.16.38.0
# /opt/SUNWut/sbin/utrestart
Trouble Shooting
经过几天的战斗终于让 Sun Ray Server 运行在了 Linux 上,期间遇到很多问题,很多都和没有正确 link 对应的库有关,做几个连接就好了。主要问题还是在 gdm,如果 Sun Ray 瘦客户端的屏幕上出现 26D/27D 的错误多半和 gdm 有关,要确定装了 GNOME 桌面系统和正确启动了 gdm,记下几个命令以便以后排错:
# /opt/SUNWut/sbin/utrestart
# /opt/SUNWut/sbin/utdesktop -l
# /opt/SUNWut/sbin/utdesktop -lc
# /opt/SUNWut/sbin/utsession -p
# /opt/SUNWut/lib/Xnewt
# /usr/sbin/gdm-binary
# /usr/libexec/gdmgreeter
# /usr/sbin/dhcpd
如果有任何错误,检查一下有没有需要安装的包没有安装,我的这个系统缺少 glitz:
# rpm -ivh glitz-0.5.6-5.i386.rpm
# rpm -ivh glitz-devel-0.5.6-5.i386.rpm
VPSee 自己和其他人的项目,甚至文档和资料也是通过 Subversion 来管理的。最近大家对 Subversion 抱怨变多,主要是因为慢,特别是 merge 速度很慢,checkout 也很慢,从本地局域网 checkout 有时候不到 20K 每秒,一直想找个机会换掉 Subversion。版本控制软件可选的不多,有名的就这么几个:CVS、Subversion、Arch、Bazaar、BitKeeper、Git。Git 是 Linus Torvalds 开发的一套版本控制系统,其初衷是用来替代 BitKeeper。经过一段时间的沉淀,现在 Git 终于开始步入主流,在开源项目里很受欢迎,Linux Kernel、Perl、Gnome、Ruby on Rails、Android、Fedora、Debian、X.org 等都是用 Git 来做版本控制的,。Git 是分布式版本控制,与 Subversion 集中式控制不同,刚开始接触 Git 可能有点不适应,一旦熟悉以后就会发现 Git 特别方便,简单实用,而且速度超快。Trac 和 Subversion 组合起来很强大,通过 Git Plugin for Trac 插件 也可以把 Trac 和 Git 组合起来,而且还不需要额外的类似 Apache + mod_svn 的支持。
安装和使用 Git
安装过程很简单:
# yum install git
增加 Git 用户:
$ git config --global user.name "vpsee"
$ git config --global user.email ""
创建一个项目目录,把所有想被版本控制的文件、目录拷贝进来:
$ mkdir myproject
$ cd myproject/
现在实验室 Masters 都配有1台 PC 和 1台笔记本,但是 Honours 只配有1台 PC,1台机器做项目很不方便,开发经常会用到多系统,比如有的人做的是手机 VoIP 的相关项目,手机客户端界面要在 Windows 平台上做,VoIP 服务器端要用到 Linux,所以要用虚拟机虚拟一个 Linux 出来,如果这些都跑在一台物理机器上会很慢。现在给 Honours 配置的 PC 只有 1G 的内存,如果运行 Windows + 手机模拟器 + Elipse IDE(需要 Java)+ VMware(VMware 上再跑个 Linux + Asterisk + MySQL),然后开个客户端收邮件、开几个浏览器看资料就会很困难。
所以 VPSee 打算把自己在用的1台 SUN 服务器捐出来做成 Xen 服务器,给每个 Honours 分一个虚拟系统,省下他们自己装虚拟机的时间和资源,VPSee 成了免费的 Xen VPS provider 了:)。SUN 服务器上同时运行16个 Xen 虚拟系统实例,每个配 256 MB 内存,4GB 硬盘,不开 GUI。下面的安装步骤和配置过程是基于 CentOS 5.3 版本,Ubuntu 版本可以参看:,Debian 版本参看:,OpenSolaris 版本参看:,NetBSD 版本参看:. 对 OpenVZ 和 KVM 感兴趣的童鞋可以看: 和 .
安装支持 Xen 的 Linux 内核 和 Xen:
# yum install kernel-xen xen
安装成功后,可以看到 xen.gz-2.6.18-128.2.1.el5 内核已经装好,修改 default 的值默认启动 Xen 内核。
# vi /etc/grub.conf
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.2.1.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-128.2.1.el5
module /vmlinuz-2.6.18-128.2.1.el5xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.18-128.2.1.el5xen.img
title CentOS (2.6.18-128.1.16.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.1.16.el5 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-128.1.16.el5.img
这是一篇很久以前做项目的时候写的笔记,以前很多笔记都是记在一个一个 txt 里或者干脆不记用到了就去 google 搜,现在有了一个记笔记的好地方:),嗯,就是这个博客。关于 trac 和 subversion 的介绍可以 google 一大堆出来,这里就不赘述了,个人认为 trac 和 subversion 非常适合小型团队或者创业小公司用来管理源代码,追踪 bug,trac 还集成了一个 wiki,可以用来管理文档,发布网页,功能很强大,全 web based 的。很多 open source 项目以及一些欧美小公司都是用 trac + subversin 这个组合来管理项目的。
这里有个问题,为什么装了 lighttpd 后还需要 apache 呢? 原因是 lighttpd 现在还没有 svn-dav 模块,只有 apache 有,所以如果要集成 subversion 的话还需要 apache 的支持,当然只配置 apache 来同时处理 web 和 svn 也是可以的。不过这里用 lighttpd 来处理 web,apache 的 svn-dav module 来处理 svn 部分。
安装必要的软件包
首先下载并且安装必要的软件包
yum install mysql mysql-server MySQL-python
yum install subversion
yum install httpd mod_dav_svn
rpm -ivh lighttpd-1.4.13-3.fc5.i386.rpm lighttpd-fastcgi-1.4.13-3.fc5.i386.rpm
rpm -ivh clearsilver-0.10.4-2.el5.rf.i386.rpm
rpm -ivh python-clearsilver-0.10.4-2.el5.rf.i386.rpm
tar zxvf trac-0.10.4.tar. cd trac-0.10.4; python ./setup.py install
CentOS 是一个构建在 Red Hat Enterprise Linux (RHEL) 源代码上的 Linux 发行版,并且从二进制的角度100%兼容 RHEL 软件包,简单的说 RHEL上 可以运行的软件包在 CentOS 上不需要编译就可以直接安装运行。除了少量的版权信息外,CentOS 和 RHEL 基本上一样。CentOS 是免费的,并且有着 RHEL 的稳定,因此深受各大 hosting 服务商支持,几乎所有 Linux VPS 都支持 CentOS。
一般来说如果 VPS 配置较高我会选 CentOS,配置低的话就选 Debian,当然这是个人偏好,大多数 Linux VPS 服务商也会提供 Gentoo,不过每次安装程序,升级都要编译会消耗很多资源,耗时,而且性能没有明显提高,不推荐给配置低的 VPS。
VPS 服务商一般给的操作系统版本都是最小安装版本,或者优化过的版本。每个 VPS 服务商提供的版本都可能不同,安装 CentOS 的系统最低要求至少 64MB 内存(纯文字界面),1GB 硬盘空间。
安装和升级系统
1、登录 VPS 安装 CentOS 5。
标题真拗口,详细一点应该是,在一个文本文件里有一个主机名(和 IP 地址)列表,通过 vi/vim 的上下键选择某个主机名(IP 地址)后,点击回车键就可以完成相应的 SSH 登陆。
不管 多么智能,我们总有需要登陆到单台服务器上找问题的时候。总不能每次去翻 doc/txt 文档找相应的 IP 地址和用户名吧,找到 IP 地址和用户名后、copy 出来、切换窗口、再 ssh?有点累~~
机械的工作总是能找到替代的工具来完成, 就是这样一个小工具,确切的说是一个小 bash 脚本,warp 从 .warp 文本文件里读取主机名(IP 地址)信息,然后自动连上 ssh.
$ wget /jpalardy/warp/master/warp
$ chmod +x warp
我们可以看到这个 .warp 文件格式很自由,只要保证第一列是主机名和 IP 地址(执行 ssh 命令格式的后半部分)就可以了,还可以用 — 和 # 当作注释方便我们区分和归类不同的服务器:
$ vi ~/.warp
# VIRTUAL MACHINE HOSTS
-- production servers
-- xen host
root@ -- kvm host
-- development servers
172.20.2.101
172.20.2.102
root@172.20.2.103
user@172.20.2.104
# SUN GRID ENGINE HOSTS
192.168.2.15 -- local datacenter
执行 warp 后会自动打开 vi/vim,然后使用 kj 键选择某行后回车即可:
如果选择多行,warp 还支持 csshx 哦~

我要回帖

更多关于 wong jack man 的文章

 

随机推荐