04-05-2005, 17:43 | #1 |
蝌蚪-小毛驴
注册日期: Nov 2000
来自: 上海
帖子: 8,285
精华: 6
|
LinuxAid 网站配置实例
LinuxAid 网站配置实例<一>
http://Linuxaid.com.cn 01-07-03 20:14 5645p 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.0p2 #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 <levels>] <name> <on|off|reset>用于指定某个服务在指定的运行级别内是处于何种状态。 6、为ProFTPD创建PAM文件 使用 vi 在 /etc/pam.d 创建一个名为 ftp 的文件,其内容为: auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so 7、修改ftp用户的shell,并创建其主目录 # usermod –s /bin/bash ftp 检查/home/ftp 是否存在,如果不存在使用以下的命令创建 # mkdir /home/ftp # chown ftp.ftp /home/ftp # chmod 700 /home/ftp 如果您不希望匿名登录有效,本节可以不做 8、修改ProFTPD的启动参数 # vi /usr/local/servers/proftpd/etc/proftpd.conf 搜索 nogroup,并将其改为 nobody :%! sed "s/nogroup/nobody/g" 修改完成后存盘退出 9、启动ProFTPD # /etc/rc.d/init.d/proftpd start 如果出现 Starting proftpd daemon: [ OK ] 则证明ProFTPD已经正确的安装并已经在后台运行,如果出现其它的提示,请检查您的安装步骤是否正确。 10、测试ftp的联接是否正常 ftp localhost 使用我们先前创建的用户登录。 如果无法联接,则检查您的ProFTPD是否已经在运行(可以用 ps –ax | grep “proftpd” 查看是否有ProFTPD进程)。 如果无法登录,检查您的用户名及口令是否正确;如果确认所输入的用户及口令正确而又无法登录,请检查第9步是否有正确的进行。 3.3.关闭因特网超级服务器(inetd) 经过以上的步骤,我们已经实现了使用openssh代替telnetd实现远程登录,用proftpd代替in.ftpd提供匿名文件传输服务。Inetd提供的基础功能,我们都已经实现,现在可以将inetd彻底的关闭掉。使用以下的命令: # /etc/rc.d/init.d/inet stop # chkconfig 0123456 inet off 经过以上的命令之后就可以将inet关闭掉,并且在下次启动时系统也不会自动启动inetd服务。 4.数据库服务器的安装 经过第一部分的工作,我们已经成功的建立了一个比较安全的环境。可以开始做一些实质性的工作。首先做为Web服务器,必须提供数据库支持,我们就从数据库的安装与基本的维护开始。这里我们选择MySQL做为我们的数据库服务器。您可以从www.mysql.org下载到最新版本的MySQL。我们选择稳定版本的3.22.32做为我们说明的版本。 4.1.下载软件包 从www.mysql.org下载MySQL 3.22.32 并放置于/usr/local/src 4.2.将下载的软件包解压缩 # cd /usr/local/src # tar zxvf mysql-3.22.32.tar.gz 4.3.编译并安装MySQL # cd /usr/local/src/mysql-3.22.32 # ./configure --prefix=/usr/local/servers/mysql # make # make install # cd /usr/local/servers/mysql/bin # ./mysql_install_db 4.4.启动MySQL并设置管理员口令 # cd /usr/local/servers/mysql/bin # ./safe_mysqld& #启动MySQL服务器 # ./mysqladmin -u root password "password" #使用mysqladmin修改root的口令 #为"password" 4.5.MySQL常用命令简介 在MySQL数据库服务器的软件包中除了数据库服务器核心之外还有许多应用程序,这些应用程序负责管理、维护MySQL的方方面面。这些应用程序包括SQL语法分析器,数据库管理程序,数据备份程序等等。 MySQL的每一个应用程序都带上很多的参数,因为篇幅的问题我们这里也只能做一些简单的介绍。详细的内容您可以使用相应的程序带上 --help 参数查看。 MySQL的启动 在很多情况下我们需要手工的启动和关闭MySQL服务器(如初始化、测试、数据恢复等等)。这时就需要用到以下的命令来控制MySQL服务器的运行状态。 启动MySQL: /usr/local/servers/mysql/bin/safe_mysqld& 关闭MySQL: /usr/local/servers/mysql/bin/mysqladmin -u root -pyoupassword shutdown 注意,在缺省的情况下只有root才有权限启动和关闭MySQL服务器。同时,关闭MySQL时如果root有口令的话还需要通过提供-p参数告诉mysqladmin需要提供密码。 MySQL语法分析器mysql的使用简介 mysql是MySQL自带的一个数据库客户端语法分析器。这个分析器可以直接的与MySQL边接,执行用户输入的SQL指令,对数据库进行相关的操作。 下面介绍一下mysql常的参数,并对其使用进行一些简单的介绍: -h 指定要连接的主机名或IP地址 -u 指定连接时使用的用户名 -p 指定连接时使用的口令 使用mysql连接MySQL的例子: # /usr/local/servers/mysql/bin/mysql -h localhost -u root -p Enter password:******** 其中,星口所包括的内容是我们root所对应的密码,如果root的密码为空,您可以直接使用: # /usr/local/servers/mysql/bin/mysql -h localhost -u root 登录,成功登录后,mysql命令会提示与下面的信息相类似的提示: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 43 to server version:3.22.23 Type 'help' for help. mysql> 同时命令行出现"mysql>"提示符,您现在就可以开始输入SQL语句了,常用的语句如下: SHOW DATABASES 显示系统中所有数据库名 SHOW TABLES 显示当然数据库中所有的表名 USE DATABASE_NAME 使用指定数据库做为当然数据库 QUIT 退出mysql解释器 其中,DATABASE_NAME为数据库,使用SHOW TABLES前必须先使用USE命令指定数据库。 MySQL管理工具mysqladmin的使用简介 mysqladmin是MySQL数据库软件包中的一个数据库管理工具。缺省的情况下,只有MySQL的数据库管理员(缺省为:root)才可以使用。 mysqladmin 是一个功能强大的命令行工具,它的功能都可以通过一系列的命令行参数进行控制,下面列出一些常用的参数: --f 在执行操作时不做任何的确认提示 -h 指定要连接的主机名或IP地址 -p 指定连接用户的密码 -P 指定主机中MySQL监听的端口号(缺省为:3306) -u 指定连接时使用的用户名 除了这些参数之外,mysqladmin还有很多命令,同样我们将一些常用的命令列出来供您参考: create database dbname #创建新的数据库,其中dbname为数据库名 drop database dbname #删新数据库,其中dbname为数据库名 extended-status #显示服务器的当前状态,如同时连接的客户端数量 flush-privileges #刷新权限表,当我们修改用户信息,如口令时就需要 #使用到此命令刷新MySQL的权限表 password #修改指定用户的密码,前面已经用到了 shutdown #关闭服务器 接下来我们列一些简单而常用的例子: 这里例子在使用前,都必须先将当前路径设置为/usr/local/servers/mysql/bin,下面是设置路径的命令: # cd /usr/local/servers/mysql/bin (1)创建新的数据库 # ./mysqladmin -u root -p create database mytestdb #以root的身份创建数据库 (2)删除数据库 # ./mysqladmin -u root -p drop database mytestdb #以root的身份删除数据库 (3)修改用户密码 # ./mysqladmin -u root -p password 'password' #将root的密码改为password (4)刷新权限表 # ./mysqladmin -u root -p flush-privileges #刷新权限表 (5)关闭数据库服务器 # ./mysqladmin -u root -p shutdown #关闭数据库 MySQL数据导出工具mysqldump的使用简介 很多情况下我们都需要将数据库的数据导出到一个文件内进行备份或者到另外一个数据库进行导入操作。这时就需要使用到MySQL提供的数据导出工具mysqldump。 其基本的语法为: # mysqldump [OPTIONS] database [tables] 如果没有指定任何的选项和表名(tables),mysqldump会 将整个数据库的内容都导出来。下面是mysqldump一些常用的参数: --add-drop-table 在每个表格前加上DROP TABLE语句,用于在导入时删除原有的表格 -h 指定要连接的主机名或IP地址 -t 只备份数据,而不备份表结构 -d 只备份表结构,而不备份数据 --opt 允许同时多个附加的参数 -p 指定连接时的口令 -q 不使用缓冲区直接备份至硬盘,这对于要备份的数据库比较大时非常有用 -u 指定连接时使用的用户名 接下来我们以一个简单的例子来说明mysqldump的使用方法: (1)将test数据库中所有表格全部导出至/tmp/test.bak中,因为mysqldump导出数据时是接输出至控制台的,我们要将它所输出的数据转存至文件就需要使用重定向命令">"。注意,如果root用户已经设置了口令,则需要输入口令才可以导出。 # /usr/local/servers/mysql/bin/mysqldump -u root -p test > /tmp/test.bak 数据导出之后使用vi /tmp/test.bak或者less /tmp/test.bak就可以查看到导出的数据。 (2)将mysql数据库中的db表的结构导出至/tmp/mysql.db.str中 # /usr/local/servers/mysql/bin/mysqldump -d -u root -p mysql db > /tmp/mysql.db.str (3)将mysql数据库中所有表格的数据(不包括结构)都导出至/tmp/mysql.data中 # /usr/local/servers/mysql/bin/mysqldump -t -u root -p mysql > /tmp/mysql.data 注意,mysql数据库中存放在关于MySQL数据库服务器的权限信息,在做完试验之后应该立即将/tmp/test.bak、/tmp/mysql.db.str、/tmp/mysql.data删除,以免造成安全隐患 4.6.MySQL的权限控制及用户管理 MySQL使用了一个独立的数据库用于存储用户的权限信息,可以提供细至每个操作的权限控制。这为精确的控制用户的权限提供了便利,同时也给用户的管理增加了复繁性。由篇幅有限,这里我们只能简单的讲一些权限控制的技巧。 MySQL的权限主要由两部分构成,这两部分分别存放于两个表user和db里面。 user表主要用来存放用户名、密码、用户可以从那些主机上登录、权限是否有创建数据库的权限等 db 表主要用来存放用户对具体的某个数据库是否有读取、删除、添加、更新的权限等。 了解了这两个表对权限控制的作用之后要控制具体用户的权限就容易多了。下面我们以一些简单的例子来说明权限控制的方法: 说明:因为这些例子都涉及到权限的更改,所以在做完修改之后都必须使用 flush privileges 命令更新MySQL的权限表。所做的更改才会有以后,同样以后如果自行修改了MySQL的权限表也必须使用flush privileges命令进行更新。同时所有的命令都是以root的身份在mysql命令行工具中执行,启动mysql命令行工具的方法是进入mysql的安装路径/bin内运行./mysql,对于本书来说是 /usr/local/servers/mysql/bin/mysql 1.添加新用户,只允许在本地登录,没有任何权限 INSERT INTO user (Host,User,Password) VALUES ('localhost','mydbuser',PASSWORD('password')); 运行此命令之后,将会产品一个名为mydbuser的新用户,其口令为password,只允许在本地计算机中登录,没有任何的权限。 2.添加新用户,允许在任何地方登录,对数据库 test 拥有读取、添加的权限 INSERT INTO user (Host,User,Password) VALUES ('%','mydbuser1',PASSWORD('password')); INSERT INTO db (Host,Db,User,Select_priv,Insert_priv) VALUES ('%','test','mydbuser1','Y','Y'); 运行这两条命令之后,将会产品一个名为mydbuser1的用户,拥有对数据库test内所有表格读取与添加的权限。 5.Web服务器的安装与Web编程环境的建立 经过4部分的操作,我们的Web站点已经拥有了一个稳定的数据库。接下来就要安装Aache开始提供HTTP服务,同时还需要建议Web编程环境,提供JSP/PHP的支持,以进行动态网站的开发。 1、下载软件包 从http://www.apache.org 下载Apache 1.3.12 从http://www.caucho.com 下载 resin 1.1.4 从http://java.sun.com 下载 jdk1.2.2 从http://www.worldserver.com/mm.mysql 下载mm.mysql-2.0.2-bin.jar 下载的软件包放置于 /usr/local/src。 2、将下载的软件包解压缩 # cd /usr/local/src # tar zxvf apache_1.3.12.tar.gz # tar zxvf resin-1.1.3.tar.gz --directory=/usr/local/servers/ 5.1.安装Web服务器 以模块化方式编译并安装apache # cd /usr/local/src/apache_1.3.12 # ./configure --prefix=/usr/local/servers/apache --enable-shared=max # make # make install 生成 Apache 启动文件 # cd /etc/rc.d/init.d # sed 's/sbin\/atd/local\/servers\/apache\/bin\/httpd/g' atd > httpd # sed 's/atd/httpd/g' httpd > /tmp/txt # sed 's/at daemon/httpd daemon/g' /tmp/txt > httpd # rm /tmp/txt # chmod 755 httpd # chkconfig --level 345 httpd on # chkconfig --level 0126 httpd off 修改Apache配置文件 在缺省的情况下Apache不会设置ServerName这个参数,而需要我们手工设置,方法如下: # cd /usr/local/servers/apache/conf 使用vi打开httpd.conf,搜索ServerName变量,将其修改为 ServerName www.linuxaid.com.cn。其中www.linuxaid.com.cn是我们的WEB服务器的域名。 启动并测试Apache服务器 # /etc/rc.d/init.d/httpd start 如果出现: Starting httpd daemon: [ OK ] 则证明 httpd 已经正确的安装并已经在后台运行,如果出现其它的提示,请检查您的安装步骤是否正确。 使用 lynx localhost 查看Apache的缺省页面,正常情况下是可以查看到的。如果没有出现页面或者提示错误信息,请您检查Apache是否已经在运行,同时httpd.conf中的DocumentRoot参数指向的路径是否允许任何人读取与运行(权限为rx)。 到了这一步,我们已经成功的以DSO方式安装了Apache ,我们的Web服务器可以开始提供静态的页面了,下一步我们就要开始加入JSP、PHP的支持。以使我们的Web服务器可以提供动态页面的服务。 使Apache支持基于域名的虚拟主机 Apache的虚拟主机支持有两种方式,一是基于用户访问Apache主机时所使用的域名,另一种是通过指定IP地址来提供。这里我们只讲解如何通过不同的域名来实现虚拟主机的支持。 要实现基于域名的虚拟主机的前提条件是必须有两个域名同时指向Apache主机的IP地址,这里我们假设这两个域名分别是www.linxuaid.com.cn和www.linuxaid.net.cn这两个域名的文档都分别放置于 /home/linuxaid.com.cn 和 /home/linuxaid.net.cn这两个目录内,同时这两个目录已经设置好权限,对于目录让所有的人都可以读取、运行,对于文件,让所有的人都可以读取。 以下是具体的配置: NameVirtualHost 202.99.11.120 #告诉Apache,在202.99.11.120这个IP上处理 #基于域名的虚拟主机 <VirtualHost 202.99.11.120> ServerAdmin webmaster@linuxaid.com.cn #指定WEB管理员的邮箱 DocumentRoot /home/linxuaid.com.cn #指定本虚拟主机的文档目录 ServerName www.linxuaid.com.cn #指定本虚拟主机的域名 ErrorLog logs/linxuaid.com.cn.error.log #指定错误记录应该存放于那里 CustomLog logs/linxuaid.com.cn.log #指定常规记录应该存放于那里 </VirtualHost> <VirtualHost 202.99.11.120> ServerAdmin webmaster@linuxaid.net.cn #指定WEB管理员的邮箱 DocumentRoot /home/linuxaid.net.cn #指定本虚拟主机的文档目录 ServerName www.linuxaid.net.cn #指定本虚拟主机的域名 ErrorLog logs/linuxaid.net.cn.error.log #指定错误记录应该存放于那里 CustomLog logs/linuxaid.net.cn.log #指定常规记录应该存放于那里 </VirtualHost> 将以上的指令输入至httpd.conf之后,重新启动apache,使用www.linuxaid.com.cn访问时将可以得到 /home/linuxaid.com.cn中的内容,而使用www.linuxaid.net.cn访问时则可以得到/home/linuxaid.net.cn中的内容。如果www.linuxaid.net.cn的内容与www.linuxaid.com.cn的内容相同,只要将DocumentRoot后目录改为相当就可以了。如果也希望linuxaid.com.cn能访问,还需要再定义一次,这样写ServerName linuxaid.net.cn就可以了。 LinuxAid 网站配置实例<三> http://Linuxaid.com.cn 01-07-03 20:19 5486p floatboat -------------------------------------------------------------------------------- 5.2.安装Web编程环境 安装jdk1.2.2 # cd /usr/local/src # tar zxvf jdk1_2_2-linux-i386.tar.gz --directory=/usr/local/servers/ # cp mm.mysql-2.0.2-bin.jar /usr/local/servers/jdk1.2.2/lib 修改/etc/profile 添加: CLASSPATH="/usr/local/servers/jdk1.2.2/lib/tools.jar:/usr/ local/servers/jdk1.2.2/lib/rt.jar:/usr/local/servers /jdk1.2.2/lib/mm.mysql-2.0.2-bin.jar:." JAVA_HOME=/usr/local/servers/jdk1.2.2 export CLASSPATH JAVA_HOME 修改PATH变量,在最后添加 /usr/local/servers/jdk1.2.2/bin,以下是我的系统的PATH变量值: PATH="$PATH:/usr/local/X11R6/bin:/usr/local/servers/jdk1.2.2/bin" 存盘退出,并注销当前用户重新登录。 测试java是否安装正确 使用vi 在/tmp创建一个名为 Test.java 的文件,内容为: public class Test{ public static void main(String args[]){ System.out.println("Hello, World!"); } } 使用以下的命令进行编译和运行: # cd /tmp # javac Test.java # java Test 如果程序显示"Hello,World!"这行字符则说明jdk环境已经成功建立,如果出现其它的提示信息,请您仔细检查安装步骤是否正确。测试完毕之后,请使用以下的命令将测试数据删除: # rm /tmp/test.java # rm /tmp/test.class 测试jdbc联接是否正确 使用 vi 在/tmp创建一个名为testjdbc.java的文件,内容为: import java.sql.*; public class testjdbc{ public static void main(String args[]){ try { Class.forName("org.gjt.mm.mysql.Driver"); System.out.println("OK! JDBC Driver For MySQL Loaded."); try { Connection con=DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=&useUnicode=true&characterEncoding=ISO8859_1"); System.out.println("OK!Connect to MySQL DBMS."); } catch(SQLException e) { System.out.println("Error! Error Code:#1. Can't make connection to Mysql Server. "+e.getMessage()); } } catch (java.lang.ClassNotFoundException e) { System.out.println("Error! Error Code #2. Can't Load jdbc Driver. "+e.getMessage()); } } } 按照前面的步骤启动MySQL数据库服务器,然后使用以下的命令编译与运行testjdbc: # cd /tmp # javac testjdbc.java # java testjdbc 查看输出的结果,如果是连续两个OK则说明JDBC安装的正确的。如果出现错误则根据以下的信息进行查错。 Error Code=#1 MySQL没有启动或者是用户名/密码错误 Error Code=#2 MySQL的JDBC驱动程序没有正确的安装或者是MySQL的权限设置处没有允许指定用户登录,仔细对照JAVA安装那一节重新检查JDBC驱动安装是否正确,同时检查MySQL的权限控制是否允许用户在本地登录。 至此,JAVA的运行环境及JDBC for MySQL的驱动程序都已经正确的安装完成,下一步我们将开始安装JSP的解释器Resin。 安装JSP解释器Resin # cd /usr/local/servers/resin1.1.3 # ./configure --with-java-home=/usr/local/servers/jdk1.2.2 # --with-apxs=/usr/local/servers/apache/bin/apxs # make # make install 测试Resin安装结果 1、启动Resin # cd /usr/local/servers/resin1.1.3/bin # ./srun.sh start 如果显示的结果只有"start resin"同时使用 ps ax | grep "java" 可以得到类似于以下的结果则说明Resin已经在后台运行。 16842 pts/0 S 0:00 sh -c /usr/local/servers/jdk1.2.2/bin/java -Dresin. 如果出现其它的提示信息则可能是您的安装过程有误,请仔细检查。 2、查看Resin的运行状态 修改/usr/local/servers/apache/conf/httpd.conf,将其中的: #<Location /caucho-status> #SetHandler Caucho-status #</Location> 前的#号全部去掉。并用 /etc/rc.d/init.d/httpd restart 重新启动 Apache。使用Netscape或者是Ie打开http://202.99.11.120/caucho-status,当页面完全打开后,查看顶端表格中的Host项应该为绿色的 localhost:6802,否则请检查您的Resin是否有启动,以及安装过程是否正确。 3、测试Resin是否正常运行 在浏览器中打入http://202.99.11.120/servlet/Env ,如果您的配置正确的话,应该可以看到关于服务器与客户端的环境变量。如果没有正确的显示出来,请检查您的JAVA、Rsein安装是否正确。 设置相关的参数 通过前面的工作,我们已经建立起一个非常基本的JSP/Servlet解释环境,但在实际应用时还需要进行一些参数的定制。下面我们就要开始修改Resin的参数使其可以根据我们的实际要求进行工作。 在进行设置前,建议您先给resin.conf做个备份,免得在修改出错之后无法正常的使用时没有办法恢复。使用vi修改/usr/local/servers/resin1.1.3/conf/resin.conf。 1、修改缺省文档根目录 搜索<app-dir>doc</app-dir>将其中的doc修改 Apache的配置文件 httpd.conf 中的DocumentRoot 参数指定的路径。缺省的情况下应该是 /usr/local/servers/apache/htdocs,则修改后的结果应该是: <app-dir>/usr/local/servers/apache/htdocs</app-dir> 2、删除测试用参数 resin.conf包含一些测试时使用的参数,在实际应用中我们并不需要这些参数,所以要将其删掉。 将从: <!-- - The following entries configuration the examples. You may safely - delete anything from here down. --> 起至 </host> </http-server> </caucho.com> 之间的参数全部删,要注意,</host>起是不可以删除的哦。删完无关的参数之后,在 </host> </http-server> </caucho.com> 前添加一行: </web-app> 则修改之后的resin.conf应该为(为减少篇幅,我们将注释部分去掉了,主要内容应该是一样的): <caucho.com> <java compiler='internal' args=""/> <dbpool.sql id="test" driver="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost:3306/test" user="" password="" max-connections=20/> <jsp precompile='true' static-encoding='true'/> <http-server> <app-dir>/usr/local/servers/apache/htdocs</app-dir> <httpd-port>8080</httpd-port> <srun host='localhost' port='6802'/> <caucho-status>true</caucho-status> <class-update-interval id='2'/> <thread-min>5</thread-min> <thread-max>20</thread-max> <thread-keepalive id=10/> <cache dir='cache' size='1024' entries='1024'/> <host id=''> <error-log id='log/error.log'/> <web-app id='/'> <classpath id='WEB-INF/classes' source='WEB-INF/classes' compile='true'/> <cache-mapping url-pattern='/' expires='2s'/> <welcome-file-list>index.xtp, index.jsp, index.html</welcome-file-list> <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/> <servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/> <servlet-mapping url-pattern='*.jsp' servlet-name='com.caucho.jsp.JspServlet'/> <session-config> <session-max>4096</session-max> <session-timeout>30</session-timeout> <enable-cookies>true</enable-cookies> <enable-url-rewriting>true</enable-url-rewriting> <cookie-version>0</cookie-version> </session-config> </web-app> </host> </http-server> </caucho.com> 修改完成之后存盘退出,使用以下的命令启动Resin,同时重新启动Apache。 # /usr/local/servers/resin1.1.3/bin/srun.sh start # /etc/rc.d/init.d/httpd restart 这里要注意一点,必须启动Resin之后才可以重启Apache。如果启动Resin的过程中出现错误,请检查您修改resin.conf的过程是否正确。 重新启动完两个服务之后,我们再使用浏览器查看:http://202.99.11.120/caucho-status 其内容应该已经发生了改变。如果跟第一次测试时比较起来没有任何的改动,请检查您的修改过程是否正确。 测试Resin 通过前的步骤,我们已经成功的将Resin与Apache融合在一起,下面我们要对Resin进行一次完整的测试。测试的内容包括:JSP解释、Servlet解释、JDBC联接。 1、测试JSP解释器 使用vi在/usr/local/servers/apache/htdocs/创建一个名为test.jsp的文件,其内容包括: <% out.println("<H1>Hello, World!</H1>"); %> 存盘之后,使用浏览器查看 http://202.99.11.120/test.jsp 如果正确的话,可以看到"Hello, World!"字样。否则,请检查:Resin是否运行、Resin的参数修改是否正确、JAVA环境安装是否正确、Apche是否运行正常。 2、测试servlet解释器 使用以下的命令将Env.java 复制到Servlet目录: # cp /usr/local/servers/resin1.1.3/doc/WEB-INF/classes/Env.java # /usr/local/servers/apache/htdocs/WEB-INF/classes 然后使用浏览器查看 http://202.99.11.120/servlet/Env 如果正确的话,可以看到服务器端和客户端的环境参数。否则,请检查:Resin是否运行、Resin的参数修改是否正确、JAVA环境安装是否正确、Apache是否运行正常。 3、测试JSP与MySQL的JDBC联接 使用vi在/usr/local/servers/apache/htdocs/创建一个名为testjdbc.jsp的文件,其内容包括: <%@ page import="java.sql.*" %> <% try { Class.forName("org.gjt.mm.mysql.Driver.<br>"); out.println("OK! JDBC Driver For MySQL Loaded."); try { Connection con=DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=&useUnicode=true&characterEncoding=ISO8859_1"); out.println("OK!Connect to MySQL DBMS."); } catch(SQLException e) { out.println("Error! Error Code:#1. Can't make connection to Mysql Server. "+e.getMessage()); } } catch (java.lang.ClassNotFoundException e) { out.println("Error! Error Code #2. Can't Load jdbc Driver. "+e.getMessage()); } %> 使用浏览器查看 http://202.99.11.120/testjdbc.jsp 应该得到以下的结果: OK!JDBC Driver For MySQL Loaded. OK! Connect to MySQL DBMS. 如果出现错误,则请您检查:Resin是否运行、Resin的参数修改是否正确、JAVA环境安装是否正确、Apache是否运行正常。MySQL的权限设置是否允许root以无口令方式登录。 最后经过前面的步骤,我们已经成功的建立起了JSP/Servlet的编程环境。并且通过mm.mysql与MySQL成功的联接起来。 5.3.安装PHP编程环境 下载软件包 从http://www.php.net 下载tar zxvf php-4.0.2.tar.gz。 下载的软件包放置于/usr/local/src。 解压缩软件包 # cd /usr/local/src # tar zxvf php-4.0.2.tar.gz 编译并安装PHP # cd /usr/local/src/php-4.0.2 # ./configure --with-mysql=/usr/local/servers/mysql --with-apxs=/usr/local/servers/apache/bin/apxs --enable-track-vars --enable-sockets --enable-ftp # make # make install 更新动态链接表 因为php的解释模块需要使用到MySQL的动态链接库,而我们又将MySQL安装在非标准的目录下,我们就需要使用ldconfig配置工具配置动态链接库表,方法如下: 使用vi打开/etc/ld.so.conf,在其中添加一行: /usr/local/servers/mysql/lib/mysql 然后在命令行执行此命令: # ldconfig 修改Apache配置 使用vi打开httpd.conf搜索: AddType application/x-httpd-php 将: #AddType application/x-httpd-php .php #AddType application/x-httpd-php-source .phps 前的#号去掉,同时如果您想Apache对PHP3也进行解释,可以添加一行: AddType application/x-httpd-php .php3 则修改之后的httpd.conf部分为: AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php3 重新启动Apache以使修改生效 # /etc/rc.d/init.d/httpd restart 测试PHP 1、一般测试 使用vi在/usr/local/servers/apache/htdocs创建一个名为test.php的文件,内容包括: <? phpinfo(); ?> 使用浏览器查看http://202.99.11.120/test.php,如果操作正确的话可以看到PHP运行的环境参数。如果出现错误,则请检查:Apache是否运行、参数修改是否正确。 2、数据联接测试 使用vi在/usr/local/servers/apache/htdocs创建一个名为testdb.php的文件,内容包括: <? $connect=@mysql_connect('localhost','root','') or die ("Error! Unable connect to database server."); echo "$connect<br>"; ?> 如果显示的结果是: 1 则说明与MySQL连接是正确的,如果出现: Error! Unable connect to database server. 则有可以是以下的情况: MySQL没有启动 连接时所使用的用户名和密码错误 3、通过以上的操作PHP已经基本完成。 返回首页 业界资讯 源码世界 知识中心 技术论坛 在线培训 应用开发 解决方案 朗新产品专栏 您的位置:首页 > 解决方案 > 服务器架设 > 其他服务安装配置 > 查看文章内容 ==>操作提示<== 〖发表注释〗 〖常见问题〗 ==>搜索引擎<== 搜索 综合 业界资讯 源码世界 知识中心 在线培训 应用开发 解决方案 技巧提示 中的 LinuxAid 网站配置实例<四> http://Linuxaid.com.cn 01-07-03 20:21 4402p floatboat -------------------------------------------------------------------------------- 6.域名(DNS)服务器的安装与调试 说明我们将要配置的DNS服务器满足两个域名的要求,我们的IP地址为202.99.11.120由202.99.11.120服务器将域名linuxaid.com.cn和linuxaid.com.cn指向我们的服务器 下载域名服务器软件包 从http://www.isc.org 下载bind-8.2.2.p15-src.tar.gz。 下载的软件包放置于/usr/local/src。 解压缩软件包 # cd /usr/local/src #第1步 # mkdir bind #第2步 # tar zxvf bind-8.2.2p15-src.tar.gz --directory=/usr/local/src/bind #第3步 编译并安装Bind # cd /usr/local/src/bind/src #进入存放BIND源码的目录 # make stdlinks #第1步 # make clean #第2步 # make depend #第3步 # make all #第4步 # make install #第5步 配置Bind运行参数 1、使用vi创建/etc/named.conf,其内容为(#号后为注释可不输入): options{ directory "/var/named"; #设置DNS数据的目录,用于存放域名数据 }; zone "." { #提示用数据文件 type hint; file "root.cache"; }; zone "localhost" { #指定localhost解释文件 type master; #类型为"主要" file "localhost"; #对应的文件名为 localhost }; zone "0.0.127.in-addr.arpa" { #IP反向解释 type master; file "127.0.0"; #对应的文件名为127.0.0 }; zone "linuxaid.com.cn" { #指定linuxaid.com.cn的解释文件 type master; file "linuxaid.com.cn"; #对应的文件名为linuxaid.com.cn }; zone "linuxaid.net.cn" { type master; file "linuxaid.net.cn"; }; #说明,如果要添加其它的域,可以复制上面的数据修改而成 zone "11.99.202.in-addr.arpa" { #202.99.11.0段IP反向解释 type master; file "202.99.11"; }; 2、按照以下的步骤创建/var/named及其内容 # mkdir /var/named # cp /usr/local/src/bind/src/conf/workstation/root.cache /var/named 使用vi创建/var/named/localhost其内容为(;号后面为注释内容可不输入,下同): $TTL 3600 ;设置缺省存活时间为一小时,下同 @ IN SOA localhost. root.localhost. ( 2000092837 ;序号 10800 ;刷新时间,单位秒,下同 3600 ;重试时间 604800 ;过期时间 10800 ;生存时间 ) IN NS localhost. ;指定此域的域名服务器为 loadlhost IN A 127.0.0.1 ;指定定此域的IP地址为127.0.0.1 创建/var/named/127.0.0,内容为: $TTL 3600 @ IN SOA localhost. root.localhost. ( 2000092814 ;Serial number 10800 ;Refresh time 3600 ;Retry time 604800 ;Expire after a week 10800 ;Time to live ) IN NS localhost. ;指定此域的域名服务器为 localhost 1 IN PTR localhost. ;IP地址127.0.0.1的域名为 localhost 创建/var/named/linuxaid.com.cn,内容为: $TTL 3600 @ IN SOA ns.linuxaid.com.cn. root.ns.linuxaid.com.cn. ( 2000092854 ;Serial Number 10800 ;Refresh time 3600 ;Retry time 604800 ;Expire after a week 10800 ;Time to live ) IN NS ns.linuxaid.com. IN MX 9 202.99.11.120 ns IN A 202.99.11.120 www IN CNAME ns 创建/var/named/linuxaid.net.cn,内容为: $TTL 3600 @ IN SOA ns.linuxaid.com.cn. root.ns.linuxaid.com.cn. ( 2000092854 ;Serial Number 10800 ;Refresh time 3600 ;Retry time 604800 ;Expire after a week 10800 ;Time to live ) IN NS ns.linuxaid.com.cn. IN MX 9 202.99.11.120 www IN A 202.99.11.120 创建202.99.11,内容为: $TTL 3600 @ IN SOA ns.linuxaid.com.cn. root.ns.linuxaid.com.cn. ( 2000092858 ;Serial Number 10800 ;Refresh Time 3600 ;Retry time 604800 ;Expire after a week 10800 ;Time to live ) IN NS ns.linuxaid.com.cn. 8 IN PTR ns.linuxaid.com.cn 测试域名服务器 在确认所有的数据的正确输入之后,我们就要开始测试域名服务器了。 1、使用以下的命令启动域名服务器named: # ndc start 如果出现以下的提示,则证明域名服务器已经在后台运行。 # new pid is 23008 如果出现其它的提示,请您检查您所输入的数据是否正确。 2、修改系统域名参数 修改/etc/resolv.conf。 则添加一行 nameserver 127.0.0.1,指定本地计算机的缺省域名服务器为127.0.0.1 3、使用nslookup测试域名服务器 在命令行打入下面的命令,如果得到的提示信息不同,则请检查您的配置文件是否正确(其中#号后的部分为笔者添加的注释,正常情况下域名服务器不会返回这部分内容)。 # nslookup Default Server: localhost #缺省域名服务器的名称为 localhost 即本机 Address: 127.0.0.1 #缺省域名服务器的IP地址 #查询www.linuxaid.com.cn对应的IP地址 >www.linuxaid.com.cn #查询www.linuxaid.com.cn的IP地址 Server: localhost Address: 127.0.0.1 Name: ns.linuxaid.com.cn #域名服务器返回www.linuxaid.com.cn的真实 #名称为ns.linuxaid.com.cn Address: 202.99.11.120 #www.linuxaid.com.cn对应的IP地址 Aliases: www.linuxaid.com.cn #域名服务器返回www.linuxaid.com.cn是 #ns.linuxaid.com.cn 的别名(CNAME) >www.linuxaid.net.cn #查询www.linuxaid.net.cn Server: localhost Address: 127.0.0.1 Name: www.linuxaid.net.cn #域名服务器返回www.linuxaid.net.cn真实域名 Address: 202.99.11.120 #www.linuxaid.net.cn对应的IP地址 #进行反向测试,查询202.99.11.120对应的域名 >202.99.11.120 Server: localhost Address: 127.0.0.1 Name: ns.linuxaid.com.cn Address: 202.99.11.120 >exit # 如果测试的结果与显示的一致,说明您的域名服务器已经正确的安装。如果出现错误,您可以尝试使用 tail /var/log/messages 查看错误信息并进行相应的修改。 如果问题还不得以解决,请与我们的技术支持论坛联系。 7.邮件传递服务器(MTA)的安装 7.1.下载软件包 从www.postfix.org下载postfix-19991231-pl09并放置于/usr/local/src 7.2.将下载的软件包解压缩 # cd /usr/local/src # tar zxvf postfix-19991231-pl09.tar.gz 7.3. 编译并安装Postfix 首先,必须保证系统中没有安装sendmail。如果不能确定是否有安装的话,可以使用: # rpm -qa | grep "sendmail" 如果没有任何的输出证明系统中没有安装sendmail,如果有的话,请使用rpm -e将列出的软件包都删除了。例子: rpm -e sendmail-8.8.7-17 -nodeps 就可将sendmail软件包删除。 在删除完sendmail之后使用vi修改/etc/passwd将 daemon:*:2:2:daemon:/sbin: 改为: daemon:*:2:12:daemon:/sbin: 再使用 # mkdir /usr/local/servers(如果此目录已经存在就没有必要了) # useradd postfix -d /usr/local/servers/postfix 就可以开始安装Postfix了: # cd /usr/local/src/postfix-19991231-pl09 # make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/servers/mysql/include/mysql' 'AUXLIBS=/usr/local/servers/mysql/lib/mysql/libmysqlclient.a -lm' # make # sh INSTALL.sh 在install_root: [/]处打回车接受默认值 在tempdir: [/usr/local/src/postfix-19991231-pl09]处输入: /usr/local/servers/postfix/tmp 在config_directory: [/etc/postfix]处接受默认值/etc/postfix(此处不可修改) 在daemon_directory: [/usr/libexec/postfix]处输入 /usr/local/servers/postfix/libexec 在command_directory: [/usr/sbin]处输入 /usr/local/servers/postfix/sbin 在queue_directory: [/var/spool/postfix]处输入 /usr/local/servers/postfix/spool 在sendmail_path: [/usr/sbin/sendmail]处打回车接受默认值 在newaliases_path: [/usr/bin/newaliases]处打回车接受默认值 在mailq_path: [/usr/bin/mailq]处打回车接受默认值 在mail_owner: [postfix]处打回车接受默认值 在setgid: [no]处打回车接受默认值 在manpages: [/usr/local/man]处输入 /usr/local/servers/postfix/man 至此Postfix的安装程序会自动的将编译之后的代码安装至我们指定的目录中。 7.4.设置Postfix基本参数 使用 vi 打开 /etc/postfix/main.cf 并进行以下的修改: myhostname=www.linuxaid.com.cn mydomain=linuxaid.com.cn myorigin=$mydomain alias_maps=hash:/etc/postfix/aliases 7.5.初始化Postfix环境并启动Postfix # cd /etc/postfix # /usr/local/servers/postfix/sbin/postalias aliases # /usr/local/servers/postfix/sbin/postfix start 命令运行完毕之后,使用以下命令: # tail /var/log/maillog 得到的结果最后一行应该与以下的内容相类似: Nov 10 09:24:23 mailserver postfix/master[6255]: daemon started 如果出现其它的错误信息,请您检查安装的步骤是否正确。 8.POP3/IMAP服务器的安装 做为与Postfix搭配的POP3/IMAP服务器,我选择了CYRUS。 8.1.下载软件包 从http://asg.web.cmu.edu/cyrus/下载cyrus-imap-1.6.24和cyrus-sasl-1.5.24并放置于/usr/local/src 8.2.将下载的软件包解压缩 # cd /usr/local/src # tar zxvf cyrus-sasl-1.5.24.tar.gz # tar zxvf cyrus-imapd-1.6.24.tar.gz 8.3.编译并安装POP3/IMAP服务器(MDA) 添加一个新的用户cyrus,并设置其组为mail,并使用passwd设置其口令 # /usr/sbin/useradd cyrus -g mail # cd /usr/local/src/cyrus-sasl-1.5.24 # ./configure --with-pwcheck=pwcheck 修改/usr/local/src/cyrus-sasl-1.5.24/config.h 将PWCHECKDIR定义为 #define PWCHECKDIR "/var/pwcheck" 如果PWCHECKDIR已经是/var/pwcheck则无需修改。完成之后继续编译过程 # make # make install 修改/etc/ld.so.conf,添加以下一行: /usr/local/lib 存盘退出之后运行: # /sbin/ldconfig 如果/etc/ld.so.conf中已经存在则不需要添加 安装完sasl之后,可以开始安装imapd # cd /usr/local/src/cyrus-imapd-1.6.24 # ./configure --with-krb=no # make # make install 8.4.设置初始化环境和参数 # cd /var # mkdir imap # chown cyrus.mail imap # chmod 750 # cd /var/spool # mkdir imap # chown cyrus.mail imap # chmod 750 # mkdir /var/pwcheck # chown cyrus.mail /var/pwcheck # chmod 700 /var/pwcheck 使用vi创建/etc/imapd.conf内容为: configdirectory: /var/imap partition-default: /var/spool/imap admins: cyrus srvtab: /var/imap/srvtab sasl_pwcheck_method: pwcheck 存盘退出,使用以下的命令创建相应目录: # cd /usr/local/src/cyrus-sasl-1.5.24/tools # su cyrus $ ./mkimap $ exit 相应的工具会自动的创建cyrus邮件服务器所需的目录 修改/etc/inetd.conf使POP3/IMAP邮件服务器有效,使用vi打开/etc/inetd.conf添加: imap stream tcp nowait cyrus /usr/cyrus/bin/imapd imapd pop-3 stream tcp nowait cyrus /usr/cyrus/bin/pop3d pop3d 并使用 # killall -HUP inetd 重新启动inetd。 启动pwcheck服务器,为MDA提供身份验证 # /usr/local/sbin/pwcheck 使用以下的命令分别测试POP3和IMAP服务器 POP3服务器 #telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK mailserver Cyrus POP3 v1.6.24 server ready 如果显示的信息与上面的不全部相同,请检查安装过程是否有问题。 输入 QUIT(回车) 即可退出。 IMAP服务器 #telnet localhost 143 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK mailserver Cyrus IMAP4 v1.6.24 server ready 如果显示的信息与上面的不全部相同,请检查安装过程是否有问题。 输入 . logout(回车) 即可退出。 8.5.联接MTA与MDA 修改/etc/postfix/main.cf,添加以下的内容: mailbox_transport = cyrus 修改/etc/master.cf,将cyrus部分改为以下的内容(全部在一行内): cyrus unix -n n - - pipe flags=R user=cyrus:mail argv=/usr/cyrus/bin/deliver -a ${user} -e -q -m ${extension} ${user} 存盘退出之后,使用以下的命令刷新Postfix的数据,整个安装过程完成: # /usr/local/servers/postfix/sbin/postfix reload 用户管理 我们使用系统帐号来做为身份验证的依据,所以在添加用户时要分两步,一是添加系统帐号,另外就是添加用户的邮箱。以下的例子说明添加用户的步骤: # useradd newuser # /usr/local/bin/cyradm -u cyrus localhost (需要输入cyrus的密码) 先为cyrus创建一个邮箱,这是必须的 # cm user.cyrus(第一次时需要,以后不用) # cm user.newuser 即可。 |
友情连接 | ||||
摩托车.上海.中国 | ||||