- UID
- 8582
上士
- 积分
- 2604
- 经验
-
- 点数
-
- 油豆
-
- 荣誉
-
- 在线时间
- 小时
- 注册时间
- 2007-6-16
- 最后登录
- 1970-1-1
|
发表于 2010-5-29 15:11
|
显示全部楼层
来自:山东省
接着安装下载的libforms-java_1.0.5-2_all.deb软件包。
debian:~/inst# dpkg -i libforms-java_1.0.5-2_all.deb
最后安装freemind_0.8.0-1_all.deb软件包。
debian:~/inst# dpkg -i freemind_0.8.0-1_all.deb
(正在读取数据库 ... 系统当前总共安装有 58143 个文件和目录。)
正预备替换 freemind 0.8.0-1 (使用 freemind_0.8.0-1_all.deb) ...
正在解压缩将用于更替的包文件 freemind ...
正在设置 freemind (0.8.0-1) ...
用freemind命令即可进入程序,程序菜单已全部汉化,使用起来很方便。freemind创建的文件格式是以.mm为后缀的。它可导出多种文件格式,如XHTML、PNG和OpenOffice文档等。如果你想把你做的.mm文件放到网站使其他人访问,你可以处用freemind-browser软件包。该软件包在[url]http://sourceforge.net/projects/freemind/下载。解开后有两个文件,分别是freemindbrowser.html和freemindbrowser.jar。把它们和要显示的freemind文件拷贝到Web服务器上,最后修改freemindbrowser.html文件,如:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<!-- This launcher works fine with Explorer (with Javascript or without) as
well as with Mozilla on Windows -->
<head>
<title>2006年工作计划</title> #改这里
<!-- ^ Put the name of your mind map here -->
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<APPLET CODE="freemind.main.FreeMindApplet.class"
ARCHIVE="freemindbrowser.jar" WIDTH="100%" HEIGHT="100%">
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.4">
<PARAM NAME="scriptable" VALUE="false">
<PARAM NAME="modes" VALUE="freemind.modes.browsemode.BrowseMode">
<PARAM NAME="browsemode_initial_map"
VALUE="http://localhost/freemind/2006.mm"> #改这里,指向你要显示的freemind文件名
<!-- ^ Put the path to your map here -->
<param NAME="initial_mode" VALUE="Browse">
<param NAME="selection_method" VALUE="selection_method_direct">
</applet>
</body>
</html>
在浏览器上打上http://localhost/freemiad/freemindbrowser.html即可访问你的2006.mm文件了。通过这种方式访问freemind文件,你可在浏览器中通过点击来打开和关闭层次。你也可把导出的HTML文档全部拷贝到Web服务器上,在浏览器上直接访问。
freemind通过Plugin扩展freemind的功能。下面分别介绍:
安装freemind-plugins-svg_0.8.0+01-4_all.deb包
debian:~/inst# dpkg -i freemind-plugins-svg_0.8.0+01-4_all.deb
选中了曾被取消选择的软件包 freemind-plugins-svg。
(正在读取数据库 ... 系统当前总共安装有 67956 个文件和目录。)
正在解压缩 freemind-plugins-svg (从 freemind-plugins-svg_0.8.0+01-4_all.deb) ...
dpkg:依赖关系问题使得 freemind-plugins-svg 的配置工作不能继续:
freemind-plugins-svg 依赖于 libbatik-java (>= 1.6);然而:
软件包 libbatik-java还没有被安装。
freemind-plugins-svg 依赖于 rhino;然而:
软件包 rhino还没有被安装。
dpkg:处理 freemind-plugins-svg (--install)时出错:
依赖关系问题 - 仍未被配置
在处理时有错误发生:
freemind-plugins-svg
debian:~/inst# apt-get install libbatik-java rhino
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
您可能需要运行“apt-get -f install”来纠正下列错误:
下列的软件包有不能满足的依赖关系:
libbatik-java: 依赖: libbsf-java 但是它将不会被安装
依赖: libavalon-framework-java (>= 4.2.0-1) 但是它将不会被安装
依赖: libcommons-io-java 但是它将不会被安装
依赖: libcommons-logging-java 但是它将不会被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt-get -f install”(也可以指定一个解决办法)。
debian:~/inst# apt-get -f install
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在更正依赖关系... 完成
将会安装下列的额外的软件包:
libavalon-framework-java libbatik-java libbsf-java libcommons-io-java
libcommons-logging-java rhino
建议安装的软件包:
libavalon-framework-java-doc jython liblog4j1.2-java liblogkit-java
rhino-doc
下列【新】软件包将被安装:
libavalon-framework-java libbatik-java libbsf-java libcommons-io-java
libcommons-logging-java rhino
共升级了 0 个软件包,新安装了 6 个软件包,要卸载 0 个软件包,有 5 个软件未被升级。
有 1 个软件包没有被完全安装或卸载。
需要下载 5798kB 的软件包。
解压缩后会消耗掉 9257kB 的额外空间。
您希望继续执行吗?[Y/n]
获取:1 [url]http://ftp.us.debian.org unstable/main libbsf-java 1:2.3.0+cvs20050308-5 [195kB]
获取:2 [url]http://ftp.us.debian.org unstable/main libavalon-framework-java 4.2.0-1 [72.3kB]
获取:3 [url]http://ftp.us.debian.org unstable/main libcommons-io-java 1.0-2 [43.5kB]
获取:4 [url]http://ftp.us.debian.org unstable/main libcommons-logging-java 1.0.4-3 [126kB]
获取:5 [url]http://ftp.us.debian.org unstable/contrib libbatik-java 1.6-2 [4841kB]
获取:6 [url]http://ftp.us.debian.org unstable/main rhino 1.5.R5-4 [520kB]
下载 5798kB,耗时 26s (217kB/s)
选中了曾被取消选择的软件包 libbsf-java。
(正在读取数据库 ... 系统当前总共安装有 67962 个文件和目录。)
正在解压缩 libbsf-java (从 .../libbsf-java_1%3a2.3.0+cvs20050308-5_all.deb)
...选中了曾被取消选择的软件包 libavalon-framework-java。
正在解压缩 libavalon-framework-java (从 .../libavalon-framework-java_4.2.0-1_all.deb)
...选中了曾被取消选择的软件包 libcommons-io-java。
正在解压缩 libcommons-io-java (从 .../libcommons-io-java_1.0-2_all.deb)
...选中了曾被取消选择的软件包 libcommons-logging-java。
正在解压缩 libcommons-logging-java (从 .../libcommons-logging-java_1.0.4-3_all.deb) ...
选中了曾被取消选择的软件包 libbatik-java。
正在解压缩 libbatik-java (从 .../libbatik-java_1.6-2_all.deb) ...
选中了曾被取消选择的软件包 rhino。
正在解压缩 rhino (从 .../rhino_1.5.R5-4_all.deb) ...
正在设置 libbsf-java (2.3.0+cvs20050308-5) ...
正在设置 libavalon-framework-java (4.2.0-1) ...
正在设置 libcommons-io-java (1.0-2) ...
正在设置 libcommons-logging-java (1.0.4-3) ...
正在设置 libbatik-java (1.6-2) ...
正在设置 rhino (1.5.R5-4) ...
正在设置 freemind-plugins-svg (0.8.0+01-4) ...
debian:~/inst#
7.36. 安装Emacs
Emacs无疑是编辑器的王者,历史悠久,功能强大,我这篇笔记就是使用emacs加psgml-mode完成的。现在Emacs对中文的支持已很好了,完全可以用于中文的生产环境。本章主要介绍Emacs在Debian下的安装和配置过程。具体的使用可参考我的Emacs学习笔记。
安装软件包:
debian:~# apt-get install emacs21 mule-ucs
mule-ucs是emacs的编码包,现在已支持UTF-8编码和多种中文编码。如果要在emacs中正确处理中文信息就要安装该软件包。
安装完成后,用emacs启动编辑器,默认启动的是X环境的emacs,如果不想进入X环境的emacs,则用emacs -nw启动即可。如果你不想用X环境的emacs,可以直接安装不包含X环境的软件包emacs21-nox。
全局的配置文件位于/etc/emacs/site-start.d目录下,该目录有多个文件,当emacs启动时会读取每个文件的配置信息,文件的命名格式与/etc/rc*.d目录的文件类似,作用也类似。如40mule-ucs.el就是启用多国语言编码的配置文件,它的载入顺序是40。
本地配置文件在用户主目录下,叫.emacs。默认没有创建,你可手动自已创建。
Chapter 8. Debian服务器篇
Table of Contents
8.1. 在IBM X335服务器上安装Debian woody 3.0
8.2. 系统性能管理工具
8.3. 安装Zope
8.4. 安装Zope 3.1.0b1
8.5. 安装MySQL数据库
8.6. 安装Samba服务器
8.7. 设置磁盘配额
8.8. 安装OpenLDAP目录服务器
8.9. 安装HylaFAX传真服务器
8.10. 安装Jabberd服务器
8.11. 安装Jabberd2服务器
8.12. 安装MoinMoin服务器
8.13. 安装Trac服务器
8.14. 安装Subversion服务器
Debian的服务器应用范围也是很广的,支持各种网络服务器,如DNS、Sabma和Zope等。本章主要介绍在Debian系统下各种服务器的安装配置。
8.1. 在IBM X335服务器上安装Debian woody 3.0
硬件配置情况:一台IBM X335服务器,配置Intel Xeon 2.8G CPU,1G内存,两个36G硬盘(RAID 1),BroadCom bcm5700千兆网卡。软件配置:Debian woody stable 3.0,采用bootbf2.4.iso进行网络安装,安装步骤如下:
下载相关软件:
bootbf2_4_iso.zip,到这里下载[url]http://people.debian.org/~blade/boot-floppies/netinst-full-pre/。解压密码是:“Yes, I know that this data may be harmful!”。
LSI53C1030和bcm5700驱程,到这里下载2_4_20-modules_bin.zip。解压密码是:“Yes, I know that this data may be harmful!”。
把解压出来iso刻录成启动光盘,驱程用dd if=2_4_20-modules.bin of=/dev/fd0写到1.44M软盘上。
驱程需与Debian内核版本匹配才可驱动。
准备好软件后,就可开始安装。在光盘启动,出现boot:提示符后直接按回车载入安装程序,首先选择键盘。
接着安装程序提示检测不到硬盘,需加载驱动模块。这时插入驱程软盘,按回车,出现可加载模块列表,按顺序选择mptbase.o,mptscsih.o加载LSI53C1030驱动,注意,不能先加载mptscsih.o,否则加载不成功。接着可加载bcm5700.o网卡驱动模块,加载成功后退出。这时安装程序应该就可找到硬盘和网卡了。
加载完驱程后,首先进行硬盘分区和格式化工作。
配置网卡,因为需进行网络安装,所以网卡要在这里配置好。
配置系统模块,如没特别的设备,按默认就可以了。
开始安装基本系统,很快就完成,因为才安装几十兆的内容。
安装完基本系统后,就可设置系统启动配置,使系统可直接从硬盘启动,选择把lilo安装到MBR中。这时你也可做一张开机盘,以备进行故障恢复。
现在可重启服务器。如果启动成功,Debian会自动运行base-config进行系统始初配置。配置后,就可登录系统了。
由于默认安装的2.4.20内核不支持超线程技术和大内存,所以需重新编译内核。我以编译2.4.28内核为例说明,2.6内核的编译方法也是一样的。
安装内核编译所需的一些工具:
# apt-get install kernel-package ncurses-dev fakeroot
到内核站点[url]http://www.kernel.org下载最2.4.28内核原码包:
# cd /usr/src
# wget [url]http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.28.tar.bz2
下载完成后,就可解包和配置内核,配置内核前需了解清楚机器的硬件配置情况:
# tar -xjf linux-2.4.28.tar.bz2
# cd linux-2.4.28/
# make menuconfig
配置内核时,我主要修改了三个内容
修改Processor type and features里有关CPU和内存的内容,把CPU类型从P3改为P4,支持4个CPU,支持4G内存;
选择Fusion MPT device support,把Fusion MPT(base+ScsiHost)drivers编译进内核。
选择Network device support,进入Ethernet(1000Mbit)类,把Broadcom Tigon3 support编译进内核。
我还把一些明确不需要的模块删除了,以精简内核,配置完成后存盘退出。你也可把配置的内核参数文件保存起来,以备以后重新编译内核时导入使用。
配置完内核后就可进行实质的编译工作了,按以下命令依次执行:
# make dep
# make-kpkg clean
# fakeroot make-kpkg --revision=mykernel.1.0 kernel_image
如果在编译过程异常中止,我们需运行以下命令重新配置内核:
# make clean
# make menuconfig
内核编译完成后,就会在/usr/src目录下生成一个名为kernel-image-2.4.28_mykernel.1.0_i386.deb的内核安装包。我们用以下命令安装新内核:
# dpkg -i kernel-image-2.4.28_mykernel.1.0_i386.deb
内核安装时,会把vmlinuz-2.4.28和System.map-2.4.20拷贝到/boot目录下。并有一些自动配置过程,包括制作启动盘和配置lilo启动信息。启动盘可做可不做,但lilo启动信息配置就不要做,我试过几次,如果做了系统就起不来了。我们可手动配置/etc/lilo.conf来实现多重内核启动。把以下信息添加到/etc/lilo.conf中:
prompt #这句可使系统启动时出现内核选择菜单。
timeout=100 #提供10秒的选择时延。
...
image=/boot/vmlinuz-2.4.28
label=Linux-2.4.28
...
最后运行以下命令把引导信息写入MBR。
# lilo -v -v -v
其实一个-v选项就可以了,多几个-v选项只是可多显示一些信息。
到现在为止,新内核的编译配置已全部完成,重启服务器,选择新内核引导系统。
2.6内核的编译过程和上面的一样。主要是配置内核时菜单会有些不同。在2.6内核中,模块是用module-init-tools来管理的,所以如果需加载模块,就要安装该工具。
8.2. 系统性能管理工具
Linux是一个开放的、高可配置的操作系统,一个合格的Linux系统管理员应该可支持不同应用环境的要求。下面介绍一些管理工具,可帮助我们了解系统状态和优化系统。
top
top命令可实时地显示Linux系统的进程、CPU、内存、负载等的信息。它是我们了解系统整体状态最好的工具。
top - 10:06:09 up 31 days, 2:14, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 47 total, 1 running, 46 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
Cpu1 : 0.3% us, 0.0% sy, 0.0% ni, 99.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 1034732k total, 472336k used, 562396k free, 16460k buffers
Swap: 1052248k total, 0k used, 1052248k free, 357940k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 1504 480 1352 S 0.0 0.0 0:00.59 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.06 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.04 migration/1
5 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
6 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/0
7 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 events/1
8 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 khelper
9 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
10 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/1
11 root 17 0 0 0 0 S 0.0 0.0 0:00.00 khubd
38 root 15 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
37 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kirqd
41 root 6 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0
40 root 16 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
42 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 aio/1
top命令的运行状态是一个实时的显示过程,我们可在这个界面监控系统运行情况。我们可通过几个按键来控制top命令,如按q可退出top命令状态,按s可输入信息的更新频率等。这些命令可按h帮助键查询。如:
Help for Interactive Commands - procps version 3.2.1
Window 1:Def: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off.
Z,B Global: 'Z' change color mappings; 'B' disable/enable bold
l,t,m Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem info
1,I Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris mode
f,o . Fields/Columns: 'f' add or remove; 'o' change display order
F or O . Select sort field
<,> . Move sort field: '<' next col left; '>' next col right
R . Toggle normal/reverse sort
c,i,S . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u . Show specific user only
n or # . Set maximum tasks displayed
k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W Write configuration file
q Quit
( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,
any other key to continue
ps
ps命令可查询系统的进程状态,常用的命令参数是ps -aux,该命令可显示所有用户的进程,如果进程的命令太长,则显示的进程信息会不全。我们可用ps -auxw命令来加长显示,w参数可多加几个,最多可加三个,以显示更长的进程信息。
debian:~# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1416 448 ? S May24 0:06 init [3]
root 2 0.0 0.0 0 0 ? SW May24 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SW May24 0:00 [keventd]
root 4 0.0 0.0 0 0 ? SW May24 0:00 [keventd]
root 5 0.0 0.0 0 0 ? SW May24 0:00 [keventd]
root 6 0.0 0.0 0 0 ? SWN May24 0:11 [ksoftirqd_CPU0]
root 7 0.0 0.0 0 0 ? SWN May24 0:11 [ksoftirqd_CPU1]
root 8 0.0 0.0 0 0 ? SWN May24 0:10 [ksoftirqd_CPU2]
root 9 0.0 0.0 0 0 ? SWN May24 0:10 [ksoftirqd_CPU3]
root 10 0.0 0.0 0 0 ? SW May24 17:29 [kswapd]
root 11 0.0 0.0 0 0 ? SW May24 0:00 [kreclaimd]
root 12 0.0 0.0 0 0 ? SW May24 15:47 [bdflush]
root 13 0.0 0.0 0 0 ? SW May24 0:00 [kupdated]
root 14 0.0 0.0 0 0 ? SW May24 0:00 [mdrecoveryd]
root 21 0.0 0.0 0 0 ? SW May24 0:00 [scsi_eh_2]
root 24 0.0 0.0 0 0 ? SW May24 0:47 [kjournald]
root 84 0.0 0.0 0 0 ? SW May24 0:00 [khubd]
root 177 0.0 0.0 0 0 ? SW May24 0:59 [kjournald]
root 178 0.0 0.0 0 0 ? SW May24 0:00 [kjournald]
root 514 0.0 0.0 1476 600 ? S May24 0:06 syslogd -m 0
ps命令的参数有以下几个:
-a 显示所有终端下所执行的程序
a 显示在当前终端下所执行的程序
-A 显示所有的程序,包含所有的服务
-f 显示UID,PPIP,C,STIME栏位
-H 以树状格式显示,可表达进程间的相互关系
S 列出包含已死亡的子进程信息
u 以用户为单位列出进程信息
v 显示进程的虚拟内存信息
V 显示ps的版本信息
x 显示所有进程
kill
kill命令可终止进程,后接进程号即可。如我们可用上面的ps命令查出你想终止的进程的进程号为299,用kill 299则可把该进程终止。
free
free可显示系统的内存使用情况。-b、-k、-m三个参数表示以bytes,kilobytes和megabytes为单位显示内存的使用情况。
debian:~# free -m
total used free shared buffers cached
Mem: 2010 2005 5 456 146 1150
-/+ buffers/cache: 708 1301
Swap: 2000 127 1872
vmstat
使用vmstat 2 命令可每隔2秒显示一行系统信息,这些信息包括CPU占用效、内存使用情况和磁盘IO等。通过它我们可实时监控系统的资源使用情况,进行系统优化。
debian:~# vmstat 2
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
0 0 0 130804 6000 149744 1179340 0 0 0 1 1 2 0 0 2
0 0 0 130804 6000 149744 1179396 0 0 28 162 266 387 0 0 100
0 0 0 130804 6000 149744 1179472 0 0 30 110 222 280 0 0 99
1 0 0 130804 6000 149744 1179516 0 0 22 122 235 306 9 2 89
0 0 0 130804 6000 149748 1179580 0 0 24 148 373 469 10 1 90
1 0 0 130804 6000 149748 1179628 0 0 24 90 271 356 13 1 85
1 0 0 130804 6000 149748 1179700 0 0 28 118 263 322 23 2 76
0 0 0 130804 6000 149748 1179760 0 0 30 148 279 409 14 1 85
sar
sar工具可帮我们收集动态的系统信息,它的参数很丰富,功能强大。sar工具的特点是可通过计数器和计数间隔来定期、定量地输出系统状态信息。如:
debian:~# sar -b 2 10
09时47分48 tps rtps wtps bread/s bwrtn/s
09时47分50 23.50 3.50 20.00 28.00 176.00
09时47分52 47.50 6.50 41.00 52.00 424.00
09时47分54 28.50 4.50 24.00 36.00 204.00
09时47分56 52.00 9.50 42.50 76.00 352.00
09时47分58 30.50 5.00 25.50 40.00 216.00
09时48分00 28.50 4.50 24.00 36.00 204.00
09时48分02 32.00 3.50 28.50 28.00 412.00
09时48分04 46.00 5.50 40.50 44.00 388.00
09时48分06 26.00 5.00 21.00 40.00 196.00
09时48分06 tps rtps wtps bread/s bwrtn/s
09时48分08 35.00 5.00 30.00 40.00 264.00
Average: 34.95 5.25 29.70 42.00 283.60
上面的命令表示隔2秒输出一条磁盘I/O信息,共输出10条。-b表示输出磁盘I/O信息,如果是-B则可输出paging信息,参数还很多,请用man sar查看。
watch
watch命令可重复执行某个命令,监控命令的执行状态。下面这个命令可让我们监控Z2.log文件的大小变化。
debian:~# watch -n 3 du /home/Jims/zope/log/Z2.log
-n 3表示每隔3秒执行一次du /home/Jims/zope/log/Z2.log。
sysctl
使用sysctl -a可显示所有运行中的内核参数,用sysctl -w fs.file-max=10240 命令可修改fs.file-max内核参数的值,并使参数马上生效。但重启系统后,参数设置会失效,因为命令行只能修改运行中的内核参数。如果我们要把参数设置固定下来,可把内核参数写入/etc/sysctl.conf文件。该文件的格式如下:
# /etc/sysctl.conf - Configuration file for setting system variables
# See sysctl.conf (5) for information.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
ulimit
使用ulimit -a可显示系统的资源限制情况。
netstat
netstat -nal可显示所有的网络连接。
pppstats
使用pppstats可得到ppp连接的状态信息。
8.3. 安装Zope
Zope是一个开源的、面向对象的Web服务器,主要用Python语言编写。在Debian平台上也有相应的软件包,安装方式也比其它平台简单很多。下面介绍一下Zope2.7的安装步骤:
# apt-get install zope2.7
配置时会要回答几个问题,直接按回车选默认方式即可。软件会安装在/usr/lib/zope2.7目录下,实例目录是/var/lib/zope2.7/instance,实例目录开始为空,也就是说没有安装默认实例,需手动用mkzope2.7instanc程序安装。
用下面命令创建实例
debian:~# mkzope2.7instance
Quick reminder:
To run zope on an instance of type >=2.7 , use
/var/lib/zope2.7/instance/<instance>/bin/runzope
To start the server on the instance, use
' /var/lib/zope2.7/instance/<instance>/bin/zopectl start '
No instances were found in /var/lib/zope2.7/instance
You may create one now
Hit any key to go on, ctrl-c to stop #直接回车创建一个新实例
Please choose a directory in which you'd like to install
Zope "instance home" files such as database files, configuration
files, etc.
Directory:/var/lib/zope2.7/instance/test # 指定test实例目录
Please choose a username and password for the initial user.
These will be the credentials you use to initially manage
your new Zope instance.
Username: admin #创建zope初始用户
Password:
Verify password:
You may want to customize /var/lib/zope2.7/instance/<instance>/etc/zope.conf
debian:~/instance# #test实例创建完成
启动实例
debian:~#cd /var/lib/zope2.7/instance/test/bin
debian:/var/lib/zope2.7/instance/test/bin#./zopectl start
. daemon process started, pid=7811 #实例成功启动
实例启动后,就可用浏览器访问了,地址是http://localhost:9673。用创建实例时创建的始初用户和密码就可登录进管理界面进行系统管理。
8.4. 安装Zope 3.1.0b1
Zope 3.1.0b1是Zope 3第一个正式发布的版本,它取消了X代号,表示Zope 3已逐渐成熟,可用于产品开发。Debian的Sarge版软件包还没有包含Zope 3,所以只能从源码安装。具体的安装步骤如下:
首先,让我们来看一下Zope 3.1.0b1的系统要求。它要求Python 2.3.5或以上版本支持,并要安装有python-dev,该软件包提供编译Python模块所需的静态库、头文件和distutils工具。Debian默认是没有安装该软件包的,用apt-get install python-dev安装即可。如果没有python-dev软件包,在编译Zope 3时会出错,出错信息如下:
error: invalid Python installation: unable to open /usr/lib/python2.3/config/Mak efile (No such file or directory)
make: *** [build] 错误 1
我下载的打包源码文件名为Zope-3.1.0b1.tgz,用以下命令安装:
debian:~/inst# tar zxvf Zope-3.1.0b1.tgz
debian:~/inst# cd Zope-3.1.0b1
debian:~/inst/Zope-3.1.0b1# ./configure
Configuring Zope 3 installation
Testing for an acceptable Python interpreter...
Python version 2.3.5 found at /usr/bin/python
The optimum Python version (2.3.5) was found at /usr/bin/python.
debian:~/inst/Zope-3.1.0b1# make
/usr/bin/python install.py -q build
debian:~/inst/Zope-3.1.0b1# make test #测试会出错,但也可安装
/usr/bin/python install.py -q build
/usr/bin/python test.py -v
Running UNIT tests at level 1
Running UNIT tests from /root/inst/Zope-3.1.0b1/build/lib.linux-i686-2.3
...............................................................................
debian:~/inst/Zope-3.1.0b1# make install #默认安装到/usr/local/Zope-<version>目录
/usr/bin/python install.py -q build
/usr/bin/python install.py -q install --skip-build --home "/usr/local/Zope-3.1.0b1"
安装完成后,就要创建Zope实例。
debian:/usr/local/Zope-3.1.0b1/bin# ./mkzopeinstance
Please choose a directory in which you'd like to install Zope
'instance home' files such as database files, configuration files,
etc.
Directory: /var/lib/zope3.1.0b1 #输入实例的路径
Please choose a username for the initial administrator account.
This is required to allow Zope's management interface to be used.
Username: admin #创建管理员
Please provide a password for the initial administrator account.
Password: #设置管理员密码
Verify password:
debian:/usr/local/Zope-3.1.0b1/bin# ./runzope&
------
2005-06-21T00:29:03 WARNING ZODB.FileStorage Ignoring index for /var/lib/zope3.1.0b1/var/Data.fs
------
2005-06-21T00:29:03 INFO PublisherHTTPServer zope.server.http (HTTP) started.
Hostname: debian
Port: 8080
------
2005-06-21T00:29:03 INFO PublisherFTPServer zope.server.ftp started.
Hostname: debian
Port: 8021
------
2005-06-21T00:29:03 INFO root Startup time: 17.049 sec real, 16.400 sec CPU
用浏览器访问http://localhost:8080/即可进入Zope 3,用刚才创建实例时设置的用户和密码即可以管理员身份登录ZMI。
Zope 3的安装已完成,Zope 3与Zope 2在设计思路上有很大的不同,我们需花时间熟悉一下Zope 3的管理界面和开发方法。
Zope3.1已发布,从源码编译安装的方法和上面介绍的一样。在Debian的Sid系统中已可用apt-get命令安装Zope3包了,大大简化了安装过程。
8.5. 安装MySQL数据库
MySQL是最著名的开源数据库,现在正在开发的5.0版将具有大量的新特性,如存储过程和事务处理等。MySQL的性能正一步步地迫近Oracle、DB2等商业大型数据库,给这些产品造成了很大的压力。
在Debian中安装MySQL服务器是很方便的,使用apt-get命令即可完成。
debian:~# apt-get install mysql-server mysql-client
mysql-server是服务器程序,mysql-client是客户端程序。我们可通过客户端程序来管理服务器,也可通过一些开源的GUI程序来维护服务器,如phpmyadmin,mysqlcc等。推荐使用phpmyadmin这个B/S的管理程序,通过浏览器就可方便高效地管理网络上的数据库。
有关MySQL数据库的管理的操作请参考本站的MySQL学习笔记。
8.6. 安装Samba服务器
Samba服务器是Linux平台上的Windows文件服务器和打印服务器,可供Windows用户或Linux用户共同使用,是Linux与Windows之间信息沟通的桥梁。安装命令如下:
debian~:# apt-get install samba smbclient
samba是服务器软件包,smbclient是客户端软件包,可选安装。Samba服务器的配置文件叫smb.conf,位于/etc/samba/目录下。在/usr/share/samba/目录下也有一个smb.conf文件备份,如果你在配置服务器时把/etc/samba/smb.conf改乱了,就可以用该文件来恢复到初始状态。启动脚本位于/etc/init.d/目录下,叫samba,如果修改了smb.conf配置文件,可用samba restart命令重启Samba服务器。
/etc/default/samba文件可设置samba服务器的启动方式,是daemons还是inetd,默认的设置是采用daemons方式的:
# Defaults for samba initscript
# sourced by /etc/init.d/samba
# installed at /etc/default/samba by the maintainer scripts
#
#
# This is a POSIX shell fragment
#
# How should Samba (smbd) run? Possible values are "daemons"
# or "inetd".
RUN_MODE="daemons"
关闭服务器可用smbcontrol这个程序。命令格式如下:
debian:~# smbcontrol smbd shutdown
为使Samba服务器正常使用,还需作一些设置。
在系统中创建test用户
debian~:# useradd -m test
增加samba用户
debian~:# smbpasswd -a test
samba的用户名必须与Linux系统的用户名一致,但密码可以不同。用户登录Sabma服务器时的密码是使用sabpasswd程序设置的密码。
修改/etc/samba/smb.conf文件,把安全级别设置成用户级。这样,连接Samba服务器的每个用户都需提供用户名和密码。
security = user
这样,最基本的Samba服务器就设置好了,在Windows上就可用test用户名访问Samba服务器上的/home/test目录了。
Samba服务器的功能是很强大的,有关Samba服务器的详细配置和使用介绍请参考网站上的Samba学习笔记。
8.7. 设置磁盘配额
我们可通过quota来设置磁盘的配额,限定某个用户只能使用有限的硬盘空间,这在文件服务器和邮件服务器上是很常用的。Linux通过quota程序支持磁盘配额,它以分区(partition)为单位进行设置的。设置步骤如下:
确定内核支持quota功能,然后下载安装quota程序。
debian:~# apt-get install quota
修改/etc/fstab文件,在分区上启用quota功能。我的home目录是放到一个单独的分区中的,我现在要在该分区中启用quota,则需把fstab中的:
LABEL=/home /home ext3 defaults 1 2
改成:
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
usrquota和grpquota是新增的内容,表示在该分区内启用用户配额(usrquota)和组配额(grpquota)。用户配额可限制某个用户可使用的磁盘空间,组配额可限制某个组所有成员总共可使用的磁盘空间。
重新启动系统或重新安装分区,使fstab里的配置生效,我们可查看/etc/mtab文件以确定我们的修改是否生效,下面是一个生效后mtab文件。
debian:~#mount -a -o remount #重新安装分区
debian:~# vi /etc/mtab
/dev/sda1 / ext3 rw 0 0
none /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
none /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/sda2 /home ext3 rw,usrquota,grpquota 0 0 #启用了quota
none /dev/shm tmpfs rw 0 0
/dev/sda3 /usr ext3 rw 0 0
/dev/sda6 /data ext3 rw 0 0
运行quotacheck程序收集磁盘资料,并在/home目录下生成aquota.group和aquota.user文件。
debian:~# quotacheck -avug
如果出现# quotacheck: Cannot get quotafile name for /dev/sda1的情况,请先手工在/home目录下创建这两个文件,然后再运行上面这个命令。
debian:/home#touch aquota.group;touch aquota.user
这是quota的一个Bug,但不影响正常使用。
现在我们可以启动quota了,执行以下命令即可。
debian:~# quotaon -av
接下来要针对用户设置配额了,我们可使用edquota命令来做。
debian:~# edquota -u test
Disk quotas for user test (uid 513):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 28 0 0 6 0 0
这是test用户还没设置配额时的情况,soft表示软限制,当我们使用磁盘时可以超过该值,但要在指定的期间内将磁盘的容量降到soft以下;hard表示硬限制,用户使用磁盘是绝对不能超过该值的。所以soft的值是要低于hard值的,相当于给用户一个缓冲的区间。这里有两对soft和hard,前一对以blocks为单位设置,后一对以inodes为单位设置,一般使用blocks为单位。设置完成后的情况如下。
Disk quotas for user test (uid 513):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 28 20480 30720 6 0 0
设置的容量是以K为单位的,这里的软限制设置了20M,硬限制设置了30M。
设置soft的宽限期间用edquota -t命令,该设置是针对分区设置的,不能细化到用户。
quotaoff命令用来关闭quotaoff,在关机或重启机器时,请先用该命令关闭quota。
quotastats命令可显示quota的状态信息。
repquota命令可用来显示分区中各用户的配额使用情况。
8.8. 安装OpenLDAP目录服务器
在Debian系统中安装openldap是很简单的,它有一个配置向导可帮我们快速建立一个目录服务。安装命令如下:
debian:~# apt-get install slapd ldap-utils
与目录服务相关的软件包系统会自动安装。安装完成后,系统会自动运行一个配置向导,依次回答以下问题即可:
Domain name #目录的根
Organization name #根下的组织
Admin password #目录服务器的管理员密码
Verify password #验证密码
Allow LDAPv2 protocol #是否允许LDAPv2
配置完成后,可用以下命令测试目录服务器:
debian:~# ldapsearch -x -b 'cn=admin,dc=com'
# extended LDIF
#
# LDAPv3
# base <cn=admin,dc=com> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#
# admin, com
dn: cn=admin,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
dc=com是我的目录服务器的根,cn=admin,dc=com是我的目录服务器的根管理员。这个管理员在我的目录服务器中拥有像Linux系统中root一样的权限。
推荐使用phpldapadmin这Web管理程序来管理ldap服务器。有关openldap的详细配置说明和使用请参考网站上的openldap学习笔记。
8.9. 安装HylaFAX传真服务器
HylaFAX是一个开放源码的传真服务器,它可为企业提供一个强大而可靠的传真服务。HylaFAX基于C/S架构,在局域网内只要有一台连接FAX Modem的HylaFAX传真服务器,就可为局域网内所有的用户提供传真功能。作为企业应用,高负载能力是必须具备的,HylaFAX可连接多台Modem,为企业提高优异的传真性能。
在Debian系统中提供一个HylaFAX-server软件包,用以安装HylaFAX服务器。在安装该软件包前,请用上文介绍的工具和方法确定Modem在你的Debian系统中能正常工作。下面是具体的安装步骤:
安装服务器软件包:
debian:~# apt-get install hylafax-server
安装完软件包后,hylafax还不能运行,还要运行faxsetup命令配置你的传真服务器。该配置过程会检测Modem的传真功能并要求输入传真机的一些参数,如国家码、地区码和本机号码等。最后faxsetup还会生成一个faxmaster的用户,该用户负责管理传真服务器。配置完成后,HylaFAX服务应该已启动了。
现在,我们可用faxstat命令来查询服务器状态,该命令需用到faxmaster用户的密码,所以我们需设置faxmaster用户的密码:
debian:~# passwd faxmaster
用faxstat命令查询服务器状态:
debian:~# faxstat
Password:
HylaFAX scheduler on debian: Not running
Modem ttyS0 (85789877): Running and idle
出现以上信息说明服务器已正常运行,我们可用sendfax命令来测试一下发送传真。
debian:~# sendfax -n -d 88886666 test.txt
test.txt文档就通过我们的HylaFAX传真服务器发送到88886666传真机上了。我们可到/var/spool/hylafax/log查看发送的日志。
接收的传真会自动保存在/var/spool/hylafax/recvq目录下,文件格式是tif的。
传真服务器已安装完成,但要在企业中投入正常使用,还需进一步的配置。
待续...
8.10. 安装Jabberd服务器
Jabber是一个IM(即时通信)服务器,使用开放的XMPP协议,它的信息流是XML格式的,可实现跨平台通信。通过Jabber转换器,Japper还可与MSN,Yahoo等即时通信服务器连接。一举打破现时IM平台互不兼容的格局。Google talk就是使用Jabber/XMPP来实现的。
Jabber服务器软件有很多种,具体可到这个网址查询:[url]http://www.jabber.org/software/servers.shtml。其中jabberd是用C写的一个Jabber服务器,在Debian中有一个jabber软件包可安装jabberd1.4.3服务器。现在最新的jabberd是2.x版本的,包含了jabber的最新功能,但支持的组件较少,jabberd1.4.x版本中没有包含最新的功能,如不支持SASL。但它的支持组件很多,而且很稳定。所以这里我以jabberd1.4.3版的jabberd服务器进行介绍。
用Debian标准的软件安装方法即可完成软件包的下载和安装。
debian:~# apt-get install jabber
安装完软件后,jabberd服务就会自动启动。我们可用telnet程序与服务器连接测试一下服务器是否能正常工作。
debian:~# telnet localhost 5222 #5222是jabberd服务的默认端口号
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
在上面的状态下输入以下xml文本内容:
<stream:stream
to='localhost'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
按回车,jabber服务器会显示如下信息:
<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='431E92B1' xmlns='jabber:client' from='localhost'>
如果出现如下的信息,则说明jabberd服务器已正常运行。我们可用</stream:stream>语句关闭信息流,退同telnet状态。。
下面我们可以开始配置jabber服务器。jabber的配置文件在/etc/jabber目录下,叫jabber.xml。首先,我们需配置主机名,上面我们是用localhost主机名来测试的。正式使用的话需要有一个唯一的名称来标识该服务器。用vi程序打开该文件,找到这句:
<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline></host>
把localhost改成你的主机名,我的主机名是debian,存盘退出。现在我们就可用主机名来访问jabberd服务了,如:
debian:~# telnet debian 5222
Trying 127.0.0.1...
Connected to debian. #主机名已改变
Escape character is '^]'.
现在我们可以添加一个jabber帐号了,我们可以通过gaim之类的jabber客户端软件自动添加,也可手动方法添加。下面介绍用telnet手动添加的方法,这种方法可让我们详细了解jabberd服务的添加用户的处理过程。
debian:~# telnet debian 5222
Trying 127.0.0.1...
Connected to debian.
Escape character is '^]'.
<stream:stream
to="debian"
xmlns="jabber:client"
xmlns:stream="http://etherx.jabber.org/streams">
系统显示以下信息:
<?xml version='1.0'?><stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='431E9B0B' xmlns='jabber:client' from='debian'>
使用以下XML查询注册需提供些什么信息:
<iq id='reg1' type='get'>
<query xmlns='jabber:iq:register'/>
</iq>
查询的结果如下:
<iq id='reg1' type='result'>
<query xmlns='jabber:iq:register'><password/><password/>
<instructions>Choose a username and password to register with this server.</instructions>
<name/>
<email/>
<username/></query>
</iq>
这里显示注册需提供password,username,email和name四项信息。下面我把按要求把注册信息发给服务器:
<iq id="reg2" type="set">
<query xmlns="jabber:iq:register">
<username>test</username>
<password>12345</password>
<name>test</name>
<email>test@debian</email>
</query>
</iq> #在这里按回车,如果出现以下信息,则说明注册成功。
<iq id='reg2' type='result'/>
每个注册用户的信息保存在/var/lib/jabber/目录下。现在我们可以用刚注册的帐号登录jabber服务器了,在登录之前,我们可用以下XML命令查询服务器登录需要些什么信息:
<iq id="auth1" type="get">
<query xmlns="jabber:iq:auth">
<username>test</username>
</query>
</iq>
返回的信息如下:
<iq id='auth1' type='result'>
<query xmlns='jabber:iq:auth'>
<username>test</username>
<digest/><password/><resource/></query>
</iq>
<digest/>和<password/>分别表示加密格式的密码和纯文本格式的密码,只需选其中一种即可。<resource>是必须填的,表示连接服务的资源,如我们现在采用的telnet。登录的XML命令如下,我们采用的是不加密的密码方式:
<iq id="auth2" type="set">
<query xmlns="jabber:iq:auth">
<username>test</username>
<password>12345</password>
<resource>telnet</resource>
</query>
</iq> #这里按回车,如果出现以下信息,则说明登录成功。
<iq id='auth2' type='result'/>
最后,我们要把test用户切换到在线状态。
<presence/> #按回车后会显示以下的欢迎信息
<message from='debian' to='test@debian'>
<subject>Welcome!</subject>
<body>Welcome to the Jabber server -- we hope you enjoy this service! For information about how to us
e Jabber, visit the Jabber User's Guide at [url]http://jabbermanual.jabberstudio.org/</body>
<x xmlns='jabber:x:delay' from='test@debian' stamp='20050907T08:01:29'>Offline Storage</x></message>
现在,我们就可发送和接收信息了。发送信息的XML命令格式如下:
<message to="jims@debian">
<body>hello jims</body>
</message>
如果jims用户已在gaim中登录,则会显示“hello jims”的信息。如果在gaim中发一条叫“hello test,this m essage form gaim.”给test@debian,则会在telnet里收到如下格式的信息:
<message type='chat' to='test@debian/telnet' from='yangjing@debian/Gaim'><x xmlns='jabber:x:event'><composing
/></x><body>hello test,this message form gaim.</body><html xmlns='http://jabber.org/protocol/xhtml-im'><body
xmlns='http://www.w3.org/1999/xhtml'>hello test,this message form gaim.</body></html></message>
用以下命令可退出会话:
</stream:stream>
从上面的信息可以看到,在jabber传送的信息流是XML格式的。这为jabber服务的扩展提供了很好的发展空间。
8.11. 安装Jabberd2服务器
jabberd2服务器还没正式进入Debian的软件包,但我们可从源码开始安装。下面介绍如何在Debian平台中如何从源码安装jabberd-2.0s10。这里的2.0s10表示jabberd2.0的第十个stable发行版。
到jabberd的官方网站下载最新的软件包jabberd-2.0s10.tar.gz。用tar -zxvf jabberd-2.0s10.tar.gz命令解压后会在当前目录下生成jabberd-2.0s10目录。
进入源码目录,我们就可以用configure工具配置软件包。但在配置前,先要安装一些支持软件包,分别是libssl-dev和libidn11-dev,还有libmysqlclient14-dev,该软件包用于支持Mysql数据库作为后台数据存储和用户验证,如果你想通过ldap目录服务器来进行用户认证,则还需安装libldap2-dev软件包。准备好后,运行以下命令配置jabberd2:
debian:~/inst/jabberd-2.0s10# ./configure --prefix=/usr/local/jabberd2 --enable-ldap --enable-debug
配置成功后,运行make和make install即可把软件安装到/usr/local/jabberd2目录中。
现在可以配置服务器了,jabberd2的配置文件位于/usr/local/jabberd2/etc/jabberd目录下,配置文件的文本是XML格式的。现在我们要修改sm.xml和c2s.xml这两个配置文件,把真实的服务器名写到这两个配置文件中:
修改sm.xml文件,把id标签内的localhost改成真实服务器名
<!-- Session manager configuration -->
<sm>
<!-- Our ID on the network. Users will have this as the domain part of
their JID. If you want your server to be accessible from other
Jabber servers, this ID must be resolvable by DNS.s
(default: localhost) -->
<id>localhost</id>
...
修改c2s.xml文件,也是把id标签内的localhost改成真实服务器名
...
<!-- Local network configuration -->
<local>
<!-- Who we identify ourselves as. This should correspond to the
ID (host) that the session manager thinks it is. You can
specify more than one to support virtual hosts, as long as you
have additional session manager instances on the network to
handle those hosts. The realm attribute specifies the auth/reg
or SASL authentication realm for the host. If the attribute is
not specified, the realm will be selected by the SASL
mechanism, or will be the same as the ID itself. Be aware that
users are assigned to a realm, not a host, so two hosts in the
same realm will have the same users.
If no realm is specified, it will be set to be the same as the
ID. -->
<id>localhost</id>
...
jabberd2默认使用MySQL来存放数据和进行用户认证。所以我们还要配置MySQL数据库,为jabberd2增加相应的数据库和表。jabberd2软件包已为我们提供了一个MySQL脚本自动完成数据库和表的创建。这个脚本位于源码目录下的tools目录中,文件名是db-setup.mysql。该目录还有针对不同数据库(Oracle、PostgreSQL)的脚本可用。我们以管理员身份登录MySQL服务器,用以下命令运行db-setup.mysql脚本。在运行脚本前,请确保该脚本在当前目录下。
debian:~/inst/jabberd-2.0s10/tools# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 68 to server version: 4.0.24_Debian-10sarge1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> \. db-setup.mysql
Query OK, 1 row affected (0.00 sec)
Database changed
Query OK, 0 rows affected (0.13 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.02 sec)
...
创建完数据库和表后,我们还要配置该数据库的访问权限,很简单,运行以下命令即可:
mysql> grant select,insert,delete,update on jabberd2.* to jabberd2@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)
现在我们就在MySQL数据库创建一个jabberd2用户,密码是123456。该用户可以在jabberd2数据库中做select,insert,delete,update操作。为了使jabberd2服务器能登录该数据库,我们还需用"jabberd2"和"123456"这两个参数更新sm.xml和c2s.xml两个配置文件的相关内容。
修改sm.xml文件
...
<!-- Storage database configuration -->
<storage>
<!-- By default, we use the MySQL driver for all storage -->
<driver>mysql</driver>
<!-- Its also possible to explicitly list alternate drivers for
specific data types. -->
<!-- Store vcards in a PostgreSQL database instead -->
<!--
<driver type='vcard'>pgsql</driver>
-->
<!-- MySQL driver configuration -->
<mysql>
<!-- Database server host and port -->
<host>localhost</host>
<port>3306</port>
<!-- Database name -->
<dbname>jabberd2</dbname>
<!-- Database username and password -->
<user>jabberd2</user>
<pass>123456</pass>
...
修改c2s.xml
...
<!-- MySQL module configuration -->
<mysql>
<!-- Database server host and port -->
<host>localhost</host>
<port>3306</port>
<!-- Database name -->
<dbname>jabberd2</dbname>
<!-- Database username and password -->
<user>jabberd2</user>
<pass>123456</pass>
</mysql>
...
最后一步,根据sm.xml或c2s.xml中pidfile标签的内容创建进程ID目录。在我的机器上sm.xml配置文件中pidfile标签的内容如下:
<pidfile>/usr/local/jabberd2/var/jabberd/pid/sm.pid</pidfile>
创建pid目录的命令如下:
debian:/usr/local/jabberd2# mkdir -p var/jabberd/pid/
是否创建该目录对服务器的正常运行没有影响,只是有了该目录后,当服务器运行时,在该目录下会生成jabberd2服务进程Id文件,我们可跟踪jabberd2服务器的进程Id号。
启动服务器
debian:/usr/local/jabberd2/bin# ./jabberd
如果启动不成功,可查询系统日志或用-D选项启动服务器。
服务器启动后,我们就可用Gaim等客户端连接它。具体操作和上一节内容一样,这里就不再讲了。
除了上面介绍的使用MySQL数据库作为用户认证数据库外,我们还可使用LDAP目录服务进行用户认证。下面介绍具体的配置过程,我选用的LDAP服务器是OpenLDAP,版本号是2.2.23-8。
要使jabberd2使用LDAP目录服务,需在源码配置时加--enable-ldap选项,并安装libldap2-dev软件包。
配置c2s.xml文件以支持ldap认证:
...
<!-- Authentication/registration database configuration -->
<authreg>
<!-- Backend module to use -->
<module>ldap</module> #启用ldap认证模块,默认是MySQL
<!-- Registration configuration -->
<register>
<!-- Account registration is enabled by default (provided the
auth/reg module in use supports it). Comment this out to
disable. -->
<!-- <enable/> --> #注释该行,禁止用户自由注册,启用ldap认证后,该功能失效。jabberd2暂时还不支持在LDAP服务器上创建用户信息。
...
<!-- LDAP module configuration --> #开始配置LDAP服务参数
<ldap>
<!-- LDAP server host and port (default: 389) -->
<host>Ldap_server</host> #配置LDAP服务器主机名
<port>389</port> #配置LDAP服务器端口
<!-- Use LDAP v3 if possible. If disabled, v2 will be used.
Encryption options are only available if v3 is enabled. -->
<!--
<v3/>
-->
<!-- Encryption. If enabled, this will create an encrypted channel
to the LDAP server using the LDAP STARTTLS mechanism. -->
<!--
<starttls/>
-->
<!-- Encryption. If enabled, this will create an encrypted channel
to the server using the old-style "ldaps://" mechanism. It is
recommended that you use <starttls/> instead of this. -->
<!--
<ssl/>
-->
<!-- DN to bind as for searches. If unspecified, the searches
will be done anonymously. -->
<binddn>cn=admin,dc=com</binddn> #配置登录LDAP服务器的DN
<bindpw>123456</bindpw> #配置登录密码
<!-- LDAP attribute that holds the user ID (default: uid) -->
<uidattr>uid</uidattr> #配置用户认证属性
<!-- base DN of the tree. You should specify a DN for each
authentication realm declared in the <local/> section above,
by using the realm attribute. -->
<basedn realm=''>dc=user,dc=company,dc=com</basedn> #配置搜索路径起点
<!-- <basedn>o=Example Corp.</basedn> -->
</ldap>
...
配置sm.xml文件,启用auto-create功能,自动始初化会话。
...
<!-- User options -->
<user>
<!-- By default, users must explicitly created before they can start
a session. The creation process is usually triggered by a c2s
component in response to a client registering a new user.
Enableing this option will make it so that a user create will be
triggered the first time a non-existant user attempts to start
a session. This is useful if you already have users in an
external authentication database (eg LDAP) and you don't want
them to have to register. -->
<auto-create/>
#该功能只在禁用公开注册,采用外部验证数据库时启用,开启该功能后,当用户第一次登录时,jabberd2会自动把用户信息插入到active表。
#如果开启公开注册功能,则应该禁用该功能,用户信息会在注册时自动插入到active表。
...
配置完成后,重启Jabberd2服务器,如果配置正确,可在系统日志/var/log/message文件看到以下信息:
...
Nov 24 11:33:17 t03 jabberd/sm[29600]: initialised storage driver 'mysql' #成功连接MySQL数据库
Nov 24 11:33:17 t03 jabberd/sm[29600]: version: jabberd sm 2.0s10
...
Nov 24 11:33:17 t03 jabberd/c2s[29602]: starting up
Nov 24 11:33:17 t03 jabberd/c2s[29602]: process id is 29602, written to /usr/local/jabberd2/var/jabberd/pid/c2s.pid
Nov 24 11:33:17 t03 jabberd/c2s[29602]: ldap: configured 1 realms
Nov 24 11:33:17 t03 jabberd/c2s[29602]: initialised auth module 'ldap' #成功连接LDAP服务器
Nov 24 11:33:17 t03 jabberd/c2s[29602]: [t03.tigerhead] configured; realm=(null)
在jabberd2中,我们可以设置默认的好友列表模板,当用户第一次登录系统时就会自动获得该列表,不用手动一个用户一个用户地添加。要启用该功能,首先要在sm.xml配置文件的内进行配置。jabberd2默认是没有打开该功能的,我们只要在sm.xml文件中把template内的roster标签前的注释符删除即可。如:
...
<!-- Templates. If defined, the contents of these files will be
stored in the users data store when they are created. -->
<template>
<roster>/usr/local/jabberd2/etc/jabberd/templates/roster.xml</roster>
</template>
...
从上面的配置可以看以,默认的模块是存放在/usr/local/jabberd2/etc/jabberd/templates/roster.xml目录下的。我们编辑roster.xml文件,按以下格式添加用户列表。
<!-- This is the roster template. If enabled in sm.xml, new users will
get this roster by default. -->
<query xmlns='jabber:iq:roster'>
<!--
<item name='Helpdesk' jid='helpdesk@localhost' subscription='both'><group>Support</group></item>
-->
<item name='ringkee' jid='ringkee@company.com' subscription='both'><group>IT</group></item>
<item name='diu167' jid='diu167@company.com' subscription='both'><group>IT</group></item>
<item name='dongrui' jid='dongrui@company.com' subscription='both'><group>IT</group></item>
<item name='sally' jid='sally@company.com' subscription='both'><group>IT</group></item>
<item name='xmr' jid='xmr@company.com' subscription='both'><group>IT</group></item>
</query>
上面设置了一个IT组,里面有5个用户。修改roster.xml文件后,不用重启服务器就可使修改生效。当用户首次登录时,这5个用户列表会自动下载到客户端。这种下载动作只会在用户首次登录系统时发生。当用户第一次登录时,jabberd2会在active表中插入一条记录,记录登录的用户帐号名和登录时间等信息。jabberd2以此判断用户是否第一次登录。同时把模板中的用户列表信息按登录用户的不同保存在roster-items和roster-groups两个表中。当用户第二次登录时,jabberd2在active中可以查询到用户帐号信息,就不会再把模板中的用户列表信息保存到roster-items和roster-groups表中。而是直接下载roster-items和roster-groups表中的用户列表信息来使用。当用户在客户端手工删除用户列表后,jabberd2会直接删除roster-items和roster-groups表中的用户列表信息。这样,下次用户登录时就找不到用户列表了,所以我们不要随便删除用户列表信息。为了使删除后的用户列表能重新下载或更新,我们可在active表中删除该用户的帐号记录。下次用户登录系统时,系统还会把你当成是首次登录,又会自动下载模板中的用户列表。
jabberd2系统的所有信息都保存在MySQL数据库的jabberd2数据库中。一面介绍jabberd2数据库各个表的作用。
active表,存放用户名和用户第一次登录的时间。表中的记录在用户第一次登录系统时插入,以后用户登录系统不影响该记录的内容。
authreg表,当选择MySQL数据库作为jabberd2的用户验证数据库时,该 表才有意义。它用以存放用户的验证信息,如用户名、密码和范围。
disco-items表,记录离线信息。
logout表,记录用户最近的登出信息,包括jid和时间戳。
motd-message表,记录XML格式的MOTD(Message Of The Day)信息。
motd-message表,记录接收的MOTD信息内容,包括jid和时间戳。
privacy-default表,
privacy-items表,
private表,以XML格式存放用户的私人信息,如收藏夹、爱好等。
queue表,存放排序信息。
roster-groups表,保存已分组的用户列表信息。
roster-items表,保存用户列表信息,包含验证状态信息。
vacation-setting表,
vcard表,保存用户帐号信息,包含用户名、住址、URL和职务等。
jabberd2服务器由一系列的进程组成,各进程互相依赖。如果要手动杀死jabberd2进程,则要按一定的顺序。如:
#!/bin/bash
killall router
killall resolver
killall c2s
killall s2s
killall sm
由于Jabber协议的开放性,造就了众多的开源的Jabber客户端,在[url]http://www.jabber.org上有一个Jabber Client软件的列表可供参考。我试过几种,从功能和中文支持上推荐Psi和Gaim两种。还有一个基于Web的Jabber客户端jwchat,它利用punjab这个HTTP jabber client接口和Ajax技术,可在浏览器上登录jabber服务器进行即时通信。jwchat网站上有一个Demo,大家可以去看看,很不错的。但我没安装成功,有谁成功安装,请指点一二。 |
|