<< Back to handbook

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目录服务器

Debian的服务器应用范围也是很广的,支持各种网络服务器,如DNSSabmaZope等。本章主要介绍在Debian系统下各种服务器的安装配置。

8.1. IBM X335服务器上安装Debian woody 3.0

硬件配置情况:一台IBM X335服务器,配置Intel Xeon 2.8G CPU1G内存,两个36G硬盘(RAID 1)BroadCom bcm5700千兆网卡。软件配置:Debian woody stable 3.0,采用bootbf2.4.iso进行网络安装,安装步骤如下:

1.    下载相关软件:

bootbf2_4_iso.zip,到这里下载http://people.debian.org/~blade/boot-floppies/netinst-full-pre/。解压密码是:“Yes, I know that this data may be harmful!”

LSI53C1030bcm5700驱程,到这里下载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软盘上。

[Note]

 

驱程需与Debian内核版本匹配才可驱动。

2.    准备好软件后,就可开始安装。在光盘启动,出现boot:提示符后直接按回车载入安装程序,首先选择键盘。

3.    接着安装程序提示检测不到硬盘,需加载驱动模块。这时插入驱程软盘,按回车,出现可加载模块列表,按顺序选择mptbase.omptscsih.o加载LSI53C1030驱动,注意,不能先加载mptscsih.o,否则加载不成功。接着可加载bcm5700.o网卡驱动模块,加载成功后退出。这时安装程序应该就可找到硬盘和网卡了。

4.    加载完驱程后,首先进行硬盘分区和格式化工作。

5.    配置网卡,因为需进行网络安装,所以网卡要在这里配置好。

6.    配置系统模块,如没特别的设备,按默认就可以了。

7.    开始安装基本系统,很快就完成,因为才安装几十兆的内容。

8.    安装完基本系统后,就可设置系统启动配置,使系统可直接从硬盘启动,选择把lilo安装到MBR中。这时你也可做一张开机盘,以备进行故障恢复。

9.    现在可重启服务器。如果启动成功,Debian会自动运行base-config进行系统始初配置。配置后,就可登录系统了。

由于默认安装的2.4.20内核不支持超线程技术和大内存,所以需重新编译内核。我以编译2.4.28内核为例说明,2.6内核的编译方法也是一样的。

1.    安装内核编译所需的一些工具:

2.           # apt-get install kernel-package ncurses-dev fakeroot

3.    到内核站点http://www.kernel.org下载最2.4.28内核原码包:

4.           # cd /usr/src
5.           # wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.28.tar.bz2

6.    下载完成后,就可解包和配置内核,配置内核前需了解清楚机器的硬件配置情况:

7.           # tar -xjf linux-2.4.28.tar.bz2
8.           # cd linux-2.4.28/
9.           # make menuconfig

配置内核时,我主要修改了三个内容

a.    修改Processor type and features里有关CPU和内存的内容,把CPU类型从P3改为P4,支持4CPU,支持4G内存;

b.    选择Fusion MPT device support,把Fusion MPT(base+ScsiHost)drivers编译进内核。

c.    选择Network device support,进入Ethernet(1000Mbit)类,把Broadcom Tigon3 support编译进内核。

我还把一些明确不需要的模块删除了,以精简内核,配置完成后存盘退出。你也可把配置的内核参数文件保存起来,以备以后重新编译内核时导入使用。

10.配置完内核后就可进行实质的编译工作了,按以下命令依次执行:

11.       # make dep
12.       # make-kpkg clean
13.       # fakeroot make-kpkg --revision=mykernel.1.0 kernel_image

如果在编译过程异常中止,我们需运行以下命令重新配置内核:

# make clean
# make menuconfig

14.内核编译完成后,就会在/usr/src目录下生成一个名为kernel-image-2.4.28_mykernel.1.0_i386.deb的内核安装包。我们用以下命令安装新内核:

15.       # dpkg -i kernel-image-2.4.28_mykernel.1.0_i386.deb

内核安装时,会把vmlinuz-2.4.28System.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

[Note]

 

其实一个-v选项就可以了,多几个-v选项只是可多显示一些信息。

16.到现在为止,新内核的编译配置已全部完成,重启服务器,选择新内核引导系统。

2.6内核的编译过程和上面的一样。主要是配置内核时菜单会有些不同。在2.6内核中,模块是用module-init-tools来管理的,所以如果需加载模块,就要安装该工具。

8.2. 系统性能管理工具

Linux是一个开放的、高可配置的操作系统,一个合格的Linux系统管理员应该可支持不同应用环境的要求。下面介绍一些管理工具,可帮助我们了解系统状态和优化系统。

1.    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 

2.    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     显示UIDPPIPCSTIME栏位
-H     以树状格式显示,可表达进程间的相互关系
S      列出包含已死亡的子进程信息
u      以用户为单位列出进程信息
v      显示进程的虚拟内存信息
V      显示ps的版本信息
x      显示所有进程

3.    kill

kill命令可终止进程,后接进程号即可。如我们可用上面的ps命令查出你想终止的进程的进程号为299,用kill 299则可把该进程终止。

4.    free

free可显示系统的内存使用情况。-b-k-m三个参数表示以byteskilobytesmegabytes为单位显示内存的使用情况。

debian:~# free -m
             total       used       free     shared    buffers     cached
Mem:          2010       2005          5        456        146       1150
-/+ buffers/cache:        708       1301
Swap:         2000        127       1872

5.    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

6.    sar

sar工具可帮我们收集动态的系统信息,它的参数很丰富,功能强大。sar工具的特点是可通过计数器和计数间隔来定期、定量地输出系统状态信息。如:

debian:~# sar -b 2 10
 
094748    tps      rtps      wtps   bread/s   bwrtn/s
094750    23.50      3.50     20.00     28.00    176.00
094752    47.50      6.50     41.00     52.00    424.00
094754    28.50      4.50     24.00     36.00    204.00
094756    52.00      9.50     42.50     76.00    352.00
094758    30.50      5.00     25.50     40.00    216.00
094800    28.50      4.50     24.00     36.00    204.00
094802    32.00      3.50     28.50     28.00    412.00
094804    46.00      5.50     40.50     44.00    388.00
094806    26.00      5.00     21.00     40.00    196.00
 
094806      tps      rtps      wtps   bread/s   bwrtn/s
094808    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查看。

7.    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

8.    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

9.    ulimit

使用ulimit -a可显示系统的资源限制情况。

10.netstat

netstat -nal可显示所有的网络连接。

11.pppstats

使用pppstats可得到ppp连接的状态信息。

8.3. 安装Zope

Zope是一个开源的、面向对象的Web服务器,主要用Python语言编写。在Debian平台上也有相应的软件包,安装方式也比其它平台简单很多。下面介绍一下Zope2.7的安装步骤:

1.    # apt-get install zope2.7

2.    配置时会要回答几个问题,直接按回车选默认方式即可。软件会安装在/usr/lib/zope2.7目录下,实例目录是/var/lib/zope2.7/instance,实例目录开始为空,也就是说没有安装默认实例,需手动用mkzope2.7instanc程序安装。

3.    用下面命令创建实例

4.           debian:~# mkzope2.7instance
5.            
6.           Quick reminder:
7.           To run zope on an instance of type >=2.7 , use
8.             /var/lib/zope2.7/instance/<instance>/bin/runzope
9.           To start the server on the instance, use
10.        ' /var/lib/zope2.7/instance/<instance>/bin/zopectl start '
11.        
12.       No instances were found in /var/lib/zope2.7/instance
13.       You may create one now
14.       Hit any key to go on, ctrl-c to stop      #直接回车创建一个新实例
15.        
16.       Please choose a directory in which you'd like to install
17.       Zope "instance home" files such as database files, configuration
18.       files, etc.
19.        
20.       Directory:/var/lib/zope2.7/instance/test  # 指定test实例目录
21.       Please choose a username and password for the initial user.
22.       These will be the credentials you use to initially manage
23.       your new Zope instance.
24.        
25.       Username: admin                           #创建zope初始用户  
26.       Password:
27.       Verify password:
28.        
29.       You may want to customize /var/lib/zope2.7/instance/<instance>/etc/zope.conf
30.       debian:~/instance#                        #test实例创建完成

31.启动实例

32.       debian:~#cd /var/lib/zope2.7/instance/test/bin
33.       debian:/var/lib/zope2.7/instance/test/bin#./zopectl start
34.       . daemon process started, pid=7811        #实例成功启动

35.实例启动后,就可用浏览器访问了,地址是http://localhost:9673。用创建实例时创建的始初用户和密码就可登录进管理界面进行系统管理。

8.4. 安装Zope 3.1.0b1

Zope 3.1.0b1Zope 3第一个正式发布的版本,它取消了X代号,表示Zope 3已逐渐成熟,可用于产品开发。DebianSarge版软件包还没有包含Zope 3,所以只能从源码安装。具体的安装步骤如下:

·         首先,让我们来看一下Zope 3.1.0b1的系统要求。它要求Python 2.3.5或以上版本支持,并要安装有python-dev,该软件包提供编译Python模块所需的静态库、头文件和distutils工具。Debian默认是没有安装该软件包的,用apt-get install python-dev安装即可。如果没有python-dev软件包,在编译Zope 3时会出错,出错信息如下: