由 北南南北 在 08-06-2002 12:27 发表:
网站配置实例[转帖,来源于linuxAid]
LinuxAid 网站配置实例 floatboat
1.前言
本文将以LinuxAid网站基本配置过程为实例,讲解怎么用 Linux 做为OS,构架一个完整的Web服务器的过程。照着步骤,仔细实践,相信您可以在极短的时间内建筑起一个比较安全、稳健的Web服务器。
整个环境就是在实际Internet上做,LinuxAid的基本参数是,IP地址:202.99.11.120,域名是:linuxaid.com.cn,linuxaid.net.cn等。服务器所使用的OS为:Redhat Linux 6.2
缺省安装时选择定制安装,选择软件包时除了 Sendmail 之外,不选择任何的服务器软件,同时应该安装C、C++开发包。我们将要手工编译安装的软件包有:
Apache 1.3.12; #WEB服务器,提供HTTP服务
Resin 1.2.b1 #JSP解释器,提供JSP/SERVLET解释服务
PHP 4.0p #PHP解释器,提供PHP解释服务
Mysql 3.22.32 #数据库服务器,提供数据库存储服务
Proftpd 1.2.0rc2 #匿名FTP服务器,提供文件传输服务
Bind 8.2.2p5 #域名服务器(DNS),提供域名解析服务
Openssh-2.1.1.p4 #安全外壳,用于代替系统缺省的TELNET服务
Postfix-19991231-pl09 #邮件传递服务器(MTA),提供邮件发送服务
我们将把所有的自行编译的软件都放置于 /usr/local/servers ,也就是说配置是所使用的参数 --prefix 将指向 /usr/local/servers/packages(其中packages为软件包的名称,如Web服务器将使用 apache)。
本文将以安装手册的形式出现,力求简单明了,可以指导您迅速的将一台只有基本操作系统(Linux)的计算机安装成为一台可以提供邮件(MAIL)、域名(DNS)、文件传输(FTP)、Web、JSP编程环境、PHP编程环境及数据库支持的Web服务器。
在进行实际操作前,我们强烈的建议您在看完全部内容。因为服务器的安装过程中要注意的问题非常多。如果您只是看了一部分就开始实际操作,有可能会导致问题的出现。同时,Web服务器是一个比较复杂的系统,虽然我们尽力的将可能遇到的问题列出来并提供解决的方法,但仍然有可能出现一些无法遇见的问题。您可以自行尝试查出错误的原因,如果可能的话,将您得到的结果通过我们的网站(http://www.linuxaid.com.cn)与其他读者共同分享。如果您遇到无法解决的问题,您可以直接到我们的技术支持网站http://www.linuxaid.com.cn 技术支持论坛讨论,我们的在线支持工程师会给您详细的解释。
2.基础网络配置
2.1.网卡的安装与设置
使用 netconf 按照以下的步骤:
1.使用方向键↓选择Basic host information并按回车
2.填写 Host name,一般情况下是www,如果您是用来做Web服务器的话
3.使用方向键↓将光标移动至 Adaptor 1 的范围内
4.选择 Enabled 选项,使网卡有效
5.使用方向键将光标移动至Config Mode内,选择IP地址方式,对于Web服务器应该选择 Manual
6.我们的Web服务器的主域名是linuxaid.com.cn 所以在 Primary name+domain 这一项里面应该输入 linuxaid.com.cn,而别名(Aliases)可以不输入
7.IP地址(IP address)应该输入Web服务器的IP地址,这里我们输入202.99.11.120
8.因为我们假设Web服务器是安装在一个C类的子网内,所以子网掩码(Netmask)应该选择255.255.255.0(将光标放置于Netmask输入内,按ctrl+x键将会弹出一个列表框在其中选择即可。提示:在所有有v字样的列表框内都可以按ctrl+x键选择)
9.Linux里面每一个以太网设备都必须有一定设备名,将光标放置于Net device输入框内按键盘ctrl+x键选择设备名,在Linux里面第一个以太网设备的名称应该选择eth0。
10.在设备名选择完之后,应该为此设备选择一个驱动程序,使Linux的内核可以驱动它正常的工作。这里假设我们的网卡的ne2000兼容的10M网卡。使用ctrl+x选择ne即可。
11.在驱动选择完成之后,要看网卡的具体情况确定是否需要输入中断号和端口号。这里我们的网卡的NE2000 ISA的网卡,没有PNP功能我们只有自己手工的将中断号和端口号输进去。
12.至了这里,网卡的参数我们已经设置完成,用TAB键将键盘移动到Accept处按键盘的回车键保存设置。并退出netconf,重新启动Linux之后用以下的命令查看网卡工作是否正常
ifconfig eth0
正常情况下应该会显示关于网卡的相关信息,如果没有的话,检查您的设置步骤是否正确。
2.2.IP地址的修改
使用netconf按照以下的步骤:
1.Basic host information
2.填写 Host name,一般情况下是www,如果您是用来做Web服务器的话
3.使用方向键↓将光标移动至 Adaptor 1范围内的IP address输入框内,输入您想要更改的IP地址,输入完成之后用TAB键移动至Accept按钮处按回车即可。
4.使用手工的方式修改可以用以下的命令:
ifconfig eth0 202.99.11.120
其中eth0是设备的名称,202.99.11.120是IP地址。
2.3.缺省DNS服务器地址的设置
直接使用vi修改/etc/resolv.conf,查看其中是否存在nameserver的参数,如果没有手工添加进去,如果有的话直接修改其后的IP地址即可。其格式为
nameserver 127.0.0.1
其中127.0.0.1为DNS服务器的地址,由于本站配置了DNS服务器,所以可以用本地地址,也可写为202.99.11.120。
3.服务器安全
做为Web服务器,我们首先要考虑的一条就是安全。Linux在安装完成之后,缺省的情况下会打开一些端口以提供一些基础如Telnet、Finger等服务。
对于我们来说是没有任何用处的,说不定还会导致一些安全问题。为此,在服务器的建设初始,我们将就考虑将这些对我们日常工作没有起到作用的服务关闭掉。在这一部分,我们将会介绍如何使用 openssh 和 proftpd 代替 inetd 最常用的两个服务 telnetd 和 ftpd,从而实现最终将 inetd 从系统同删除掉。
在进行具体的操作前,强烈的建议您先为自己添加一个独立的用户,一般来说我是这样处理的。添加一个组名为 ftpusers,再添加一个用户 myuser 其组为 ftpusers。相应的命令为:
#groupadd ftpusers
#useradd myuser –g ftpusers
此用户将用于进行常规的维护,与测试,象Telnet、FTP这些工作的测试。
3.1.安装 openssh
1、下载软件包:
从 http://www.openssl.org 下载 openssl 0.9.5a
从 http://www.freessh.org 下载 openssh-2.1.1.p4
下载的软件包放置于 /usr/local/src。
2、将软件包解压缩
cd /usr/local/src
tar zxvf openssl-0.9.5.tar.gz
tar zxvf openssh-2.1.1.p4.tar.gz
3、编译并安装 openssl和openssh
cd /usr/local/src
cd openssl-0.9.5
./configure --prefix=/usr/local/servers/openssl #设置安装路径
make
make install
编译(make)过程所需的时间比较长,在我的PIII600+128MB SCSI硬盘的机器上编译的过程需要差不多五分钟。所以请耐心等候其编译完成。
在完成 openssl 的编译与安装之后,我们就可以开始编译与安装 openssh。步骤如下:
cd /usr/local/src
cd openssh-2.1.1.p4
./configure --prefix=/usr/local/servers/openssh --with-ssl-dir=/usr/local/servers/openssl
make
make install
cd /usr/local/src/openssh-2.1.1.p4/contrib/redhat
install -m 644 sshd.pam /etc/pam.d/sshd
sed ‘s//sbin///local/servers/openssh/sbin//g’ sshd.init > /etc/rc.d/init.d/sshd
chmod 755 /etc/rc.d/init.d/sshd
chkconfig --level 345 sshd on
chkconfig --level 0126 sshd off
4、测试sshd
启动 sshd:
/etc/rc.d/init.d/sshd start
如果出现:
Starting sshd: [ OK ]
则证明 sshd 已经正确的安装并已经在后台运行,如果出现其它的提示,请检查您的安装步骤是否正确。
sshd 正确启动之后,我们试试用其客户端看是否可以正确的联接至服务器:
cd /usr/local/servers/openssh/bin
./ssh 127.0.0.1 #连接本地的SSH服务器
使用此命令之后正常情况下会要求您输入root的密码,您输入之后如果可以成功的进入则证明 sshd 已经成功的安装完成了。
ssh的win32客户端可以从http://www.sorted.org/~chris/ssh/putty.exe 下载。方便您在Windows里面远程控制网站服务器。
3.2.安装ProFTPD
1、下载软件包
从 http://www.proftpd.net 下载proftpd-1.2.0rc2.tar.gz
下载的软件包放置于 /usr/local/src。
2、将下载的软件包解压缩
cd /usr/local/src
tar zxvf proftpd-1.2.0rc2.tar.gz
3、编译并安装proftpd
./configure --prefix=/usr/local/servers/proftpd
make
make install
4、修改 /etc/inetd.conf 将其中的 ftp 服务关闭掉
使用 vi /etc/inetd.conf 打开 inetd 配置文件,搜索 ftp,在
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
这一行的最前面插入一个 # 号,修改之后的结果如下:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
在vi环境下使用 :wq 存盘退出以后,使用 killall -HUP inetd 重新启动 inetd,使所做的修改生效。
5、生成ProFTPD启动文件
cd /etc/rc.d/init.d
sed ‘s/sbin/atd/local/servers/proftpd/sbin/proftpd/g’ atd > proftpd
sed ‘s/atd/proftpd/g’ proftpd > /tmp/txt
sed ‘s/at daemon/proftpd daemon/g’ /tmp/txt > proftpd
rm /tmp/txt
chmod 755 proftpd
chkconfig --level 345 proftpd on
chkconfig --level 0126 proftpd off
说明:chkconfig,是一个在Linux里面用于修改服务器(daemon)运行环境的小程序,其命令格式为 chkconfig [–level
1<levels>] <name> <on|off|reset>用于指定某个服务在指定的运行级别内是处于何种状态。
2
36、为ProFTPD创建PAM文件
4
5
6
7使用 vi 在 /etc/pam.d 创建一个名为 ftp 的文件,其内容为:
8
9
10
11auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
12
13auth required /lib/security/pam_pwdb.so shadow nullok
14
15account required /lib/security/pam_pwdb.so
16
17session required /lib/security/pam_pwdb.so
18
19
20
217、修改ftp用户的shell,并创建其主目录
22
23
24
25# usermod –s /bin/bash ftp
26
27检查/home/ftp 是否存在,如果不存在使用以下的命令创建
28
29
30
31# mkdir /home/ftp
32
33# chown ftp.ftp /home/ftp
34
35# chmod 700 /home/ftp
36
37
38
39如果您不希望匿名登录有效,本节可以不做
40
418、修改ProFTPD的启动参数
42
43
44
45# vi /usr/local/servers/proftpd/etc/proftpd.conf
46
47搜索 nogroup,并将其改为 nobody
48
49:%! sed ‘s/nogroup/nobody/g’
50
51修改完成后存盘退出
52
539、启动ProFTPD
54
55# /etc/rc.d/init.d/proftpd start
56
57如果出现
58
59Starting proftpd daemon: [ OK ]
60
61
62
63则证明ProFTPD已经正确的安装并已经在后台运行,如果出现其它的提示,请检查您的安装步骤是否正确。
64
6510、测试ftp的联接是否正常
66
67
68
69ftp localhost
70
71
72
73使用我们先前创建的用户登录。
74
75如果无法联接,则检查您的ProFTPD是否已经在运行(可以用 ps –ax | grep “proftpd” 查看是否有ProFTPD进程)。
76
77如果无法登录,检查您的用户名及口令是否正确;如果确认所输入的用户及口令正确而又无法登录,请检查第9步是否有正确的进行。
78
79
80
813.3.关闭因特网超级服务器(inetd)
82
83经过以上的步骤,我们已经实现了使用openssh代替telnetd实现远程登录,用proftpd代替in.ftpd提供匿名文件传输服务。Inetd提供的基础功能,我们都已经实现,现在可以将inetd彻底的关闭掉。使用以下的命令:
84
85
86
87# /etc/rc.d/init.d/inet stop
88
89# chkconfig 0123456 inet off
90
91
92
93经过以上的命令之后就可以将inet关闭掉,并且在下次启动时系统也不会自动启动inetd服务。
94
95
96
974.数据库服务器的安装
98
99经过第一部分的工作,我们已经成功的建立了一个比较安全的环境。可以开始做一些实质性的工作。首先做为Web服务器,必须提供数据库支持,我们就从数据库的安装与基本的维护开始。这里我们选择MySQL做为我们的数据库服务器。您可以从www.mysql.org下载到最新版本的MySQL。我们选择稳定版本的3.22.32做为我们说明的版本。
100
1014.1.下载软件包
102
103从www.mysql.org下载MySQL 3.22.32 并放置于/usr/local/src
104
1054.2.将下载的软件包解压缩
106
107
108
109# cd /usr/local/src
110
111# tar zxvf mysql-3.22.32.tar.gz
112
113
114
1154.3.编译并安装MySQL
116
117
118
119# cd /usr/local/src/mysql-3.22.32
120
121# ./configure --prefix=/usr/local/servers/mysql
122
123# make
124
125# make install
126
127# cd /usr/local/servers/mysql/bin
128
129# ./mysql_install_db
130
131
132
1334.4.启动MySQL并设置管理员口令
134
135
136
137# cd /usr/local/servers/mysql/bin
138
139# ./safe_mysqld& #启动MySQL服务器
140
141# ./mysqladmin -u root password ‘password’ #使用mysqladmin修改root的口令 #为’password’
142
143
144
1454.5.MySQL常用命令简介
146
147在MySQL数据库服务器的软件包中除了数据库服务器核心之外还有许多应用程序,这些应用程序负责管理、维护MySQL的方方面面。这些应用程序包括SQL语法分析器,数据库管理程序,数据备份程序等等。
148
149MySQL的每一个应用程序都带上很多的参数,因为篇幅的问题我们这里也只能做一些简单的介绍。详细的内容您可以使用相应的程序带上 --help 参数查看。
150
151MySQL的启动
152
153在很多情况下我们需要手工的启动和关闭MySQL服务器(如初始化、测试、数据恢复等等)。这时就需要用到以下的命令来控制MySQL服务器的运行状态。
154
155启动MySQL:
156
157/usr/local/servers/mysql/bin/safe_mysqld&
158
159关闭MySQL:
160
161/usr/local/servers/mysql/bin/mysqladmin -u root -pyoupassword shutdown
162
163注意,在缺省的情况下只有root才有权限启动和关闭MySQL服务器。同时,关闭MySQL时如果root有口令的话还需要通过提供-p参数告诉mysqladmin需要提供密码。
164
165
166
167MySQL语法分析器mysql的使用简介
168
169mysql是MySQL自带的一个数据库客户端语法分析器。这个分析器可以直接的与MySQL边接,执行用户输入的SQL指令,对数据库进行相关的操作。
170
171下面介绍一下mysql常的参数,并对其使用进行一些简单的介绍:
172
173-h 指定要连接的主机名或IP地址
174
175-u 指定连接时使用的用户名
176
177-p 指定连接时使用的口令
178
179使用mysql连接MySQL的例子:
180
181
182
183# /usr/local/servers/mysql/bin/mysql -h localhost -u root -p
184
185Enter password:********
186
187
188
189其中,星口所包括的内容是我们root所对应的密码,如果root的密码为空,您可以直接使用:
190
191
192
193# /usr/local/servers/mysql/bin/mysql -h localhost -u root
194
195
196
197登录,成功登录后,mysql命令会提示与下面的信息相类似的提示:
198
199Welcome to the MySQL monitor. Commands end with ; or g.
200
201Your MySQL connection id is 43 to server version:3.22.23
202
203
204
205Type help for help.
206
207
208
209mysql>
210
211同时命令行出现"mysql>"提示符,您现在就可以开始输入SQL语句了,常用的语句如下:
212
213SHOW DATABASES 显示系统中所有数据库名
214
215SHOW TABLES 显示当然数据库中所有的表名
216
217USE DATABASE_NAME 使用指定数据库做为当然数据库
218
219QUIT 退出mysql解释器
220
221其中,DATABASE_NAME为数据库,使用SHOW TABLES前必须先使用USE命令指定数据库。
222
223MySQL管理工具mysqladmin的使用简介
224
225mysqladmin是MySQL数据库软件包中的一个数据库管理工具。缺省的情况下,只有MySQL的数据库管理员(缺省为:root)才可以使用。
226
227mysqladmin 是一个功能强大的命令行工具,它的功能都可以通过一系列的命令行参数进行控制,下面列出一些常用的参数:
228
229
230
231\--f 在执行操作时不做任何的确认提示
232
233-h 指定要连接的主机名或IP地址
234
235-p 指定连接用户的密码
236
237-P 指定主机中MySQL监听的端口号(缺省为:3306)
238
239-u 指定连接时使用的用户名
240
241
242
243除了这些参数之外,mysqladmin还有很多命令,同样我们将一些常用的命令列出来供您参考:
244
245create database dbname #创建新的数据库,其中dbname为数据库名
246
247drop database dbname #删新数据库,其中dbname为数据库名
248
249extended-status #显示服务器的当前状态,如同时连接的客户端数量
250
251flush-privileges #刷新权限表,当我们修改用户信息,如口令时就需要
252
253#使用到此命令刷新MySQL的权限表
254
255password #修改指定用户的密码,前面已经用到了
256
257shutdown #关闭服务器
258
259接下来我们列一些简单而常用的例子:
260
261这里例子在使用前,都必须先将当前路径设置为/usr/local/servers/mysql/bin,下面是设置路径的命令:
262
263# cd /usr/local/servers/mysql/bin
264
265(1)创建新的数据库
266
267# ./mysqladmin -u root -p create database mytestdb #以root的身份创建数据库
268
269(2)删除数据库
270
271# ./mysqladmin -u root -p drop database mytestdb #以root的身份删除数据库
272
273(3)修改用户密码
274
275# ./mysqladmin -u root -p password password #将root的密码改为password
276
277(4)刷新权限表
278
279# ./mysqladmin -u root -p flush-privileges #刷新权限表
280
281(5)关闭数据库服务器
282
283# ./mysqladmin -u root -p shutdown #关闭数据库
284
285MySQL数据导出工具mysqldump的使用简介
286
287很多情况下我们都需要将数据库的数据导出到一个文件内进行备份或者到另外一个数据库进行导入操作。这时就需要使用到MySQL提供的数据导出工具mysqldump。
288
289其基本的语法为:
290
291# mysqldump [OPTIONS] database [tables]
292
293如果没有指定任何的选项和表名(tables),mysqldump会 将整个数据库的内容都导出来。下面是mysqldump一些常用的参数:
294
295\--add-drop-table 在每个表格前加上DROP TABLE语句,用于在导入时删除原有的表格
296
297-h 指定要连接的主机名或IP地址
298
299-t 只备份数据,而不备份表结构
300
301-d 只备份表结构,而不备份数据
302
303\--opt 允许同时多个附加的参数
304
305-p 指定连接时的口令
306
307-q 不使用缓冲区直接备份至硬盘,这对于要备份的数据库比较大时非常有用
308
309-u 指定连接时使用的用户名
310
311接下来我们以一个简单的例子来说明mysqldump的使用方法:
312
313(1)将test数据库中所有表格全部导出至/tmp/test.bak中,因为mysqldump导出数据时是接输出至控制台的,我们要将它所输出的数据转存至文件就需要使用重定向命令">"。注意,如果root用户已经设置了口令,则需要输入口令才可以导出。
314
315
316
317# /usr/local/servers/mysql/bin/mysqldump -u root -p test > /tmp/test.bak
318
319
320
321数据导出之后使用vi /tmp/test.bak或者less /tmp/test.bak就可以查看到导出的数据。
322
323(2)将mysql数据库中的db表的结构导出至/tmp/mysql.db.str中
324
325
326
327# /usr/local/servers/mysql/bin/mysqldump -d -u root -p mysql db > /tmp/mysql.db.str
328
329
330
331(3)将mysql数据库中所有表格的数据(不包括结构)都导出至/tmp/mysql.data中
332
333
334
335# /usr/local/servers/mysql/bin/mysqldump -t -u root -p mysql > /tmp/mysql.data
336
337
338
339注意,mysql数据库中存放在关于MySQL数据库服务器的权限信息,在做完试验之后应该立即将/tmp/test.bak、/tmp/mysql.db.str、/tmp/mysql.data删除,以免造成安全隐患
340
341
342
3434.6.MySQL的权限控制及用户管理
344
345MySQL使用了一个独立的数据库用于存储用户的权限信息,可以提供细至每个操</on|off|reset></name></levels>