当前位置:Linux教程 - RedHat - RedHat Linux 网络服务器构架实务(一)

RedHat Linux 网络服务器构架实务(一)



         几点说明:
    1、应大家的要求,现在使用简体中文发布,并添加了几个非常有用的例子,也增加了许多注释,具体修改内容详见附录中的Revision Log。
    2、同时,我声明上次发布的《最新RedHat 7.2 WEB开发服务器配置文档》一文用现在的三篇代替。
    3、本版本也已经做成PDF文档,较WEB页面可读性很强,如果你需要,请Email到yesgo.gledecity.com告知。
    4、本文档较长,分为三篇,不便之处,敬请谅解。
    5、最后,感谢您阅读本文档,谢谢!


    正文如下:




    RedHat Linux
    网络服务器构架实务


    A compendious Configure Guide for RedHat Linux 7.2
    Tell you how to use RedHat 7.2 build your web develop server step by step










    作者 :赵凤君(叶三耿)
    邮件 : yesgo@gledecity.com
    版本 :Chs_ 0.0.1
    最后修改:Decmber 22,2001
    Copyleft ( 2001 ) with GNU Public License.


    Copyleft ( 2001 ) with GNU Public License.

    本文档由赵凤君(叶三耿)原创于2001年12月18日。遵循GNU Public License(GPL)规范,特声明如下:在不用于商业目的的前提下,任何人均可自由使用、复制、传播和修改本文档。但是,如果您修改了本文档,您应当保留本版权说明,并书写您的修改记录在文档的修改日志中,同时将修改后的结果发布到网络上。


    Author : Fengjun zhao (yesgo)
    Mail : yesgo@gledecity.com
    Site: http://yesgo.gledecity.com
    Qq; 27565476
    Version : chs_0.0.2
    Last revised : Decmber 22,2001
    Copyleft ( 2001 ) with GNU Public License.







    目录
    Copyleft ( 2001 ) with GNU Public License. 2
    目录 3
    告诉我您的看法 6
    前言 7
    软件列表 9
    配置步骤 10
    Step 1 RedHat 7.2 install 10
    Step 2 X setup 10
    Step 3 Services setup 11
    Step 4 Dns setup 11
    1 创建标准区域 11
    2 创建域名库文件 11
    3 重新启动DNS服务 12
    4 域名查询 12
    Step 5 KDE setup 12
    Step 6 Ftp setup 12
    Step 7 MySQL、Apache and php Unistall 13
    Step 8 MySQL install 13
    1 准备用户 13
    2 安装MySQL 13
    3 修改文件夹权限 13
    4 重新加载动态库 14
    5 测试MySQL 14
    6 创建启动脚本 14
    Step 9 Apache configure 15
    Step 10 Php install 15
    Step 11 Apache install 16
    1 安装Apache 16
    2 建立符号连接 16
    3 编辑配置文件 16
    4 测试Apache 16
    5 创建启动脚本 16
    Step 12 Jvm setup 17
    Step 13 Classes Install 17
    Step 14 Edit /etc/profile 18
    Step 15 Resin Install 19
    1 安装Resin 19
    2 建立符号连接 19
    3 修改配置文件 19
    4 测试Resin 21
    5 创建启动脚本 21
    Step 16 PhpMyAdmin install 23
    1 安装phpMyAdmin 23
    2 添加身份验证 23
    3 添加虚拟主机 23
    4 测试phpMyAdmin 24
    Step 17 Server Test 24
    例一:使用连接串连接数据库 24
    例二:用连接池连接数据库 27
    例三:用处理层连接数据库 28
    例四:测试PHP 34
    Step 18 Configuration debug 35
    常见错误一:You don have permission 35
    常见错误二:404 Not Found 35
    常见错误三:java.lang.ClassNotFoundException 36
    常见错误四:Invalid authorization specification 37
    常见错误五:Invalid authorization specification 37
    常见错误六:中文乱码 38
    Appendix 40
    Appendix I : Thanks 40
    Appendix II : Todo List 40
    Appendix III: Revision log 40






    告诉我您的看法

    在LINUX的路上,我只是一个初学者。这本来是我最近配置服务器的一份笔记,然后我将其整理成一篇配置文档,后来我把它发布到网络上,希望能够对初学者有所帮助并能够得到大家的建议,使其更加严谨和完善。
    我想,开放源代码的好处之一就是将自己的东西拿出来与大家分享,让大家去剖析自己、批判自己,从而使其更加严谨和完善。所以,虽然深知自己的浅薄,做的也只是一些很粗浅的东西,但我还是将它拿出来,接受大家的检验。所以,我非常希望能够得到您的反馈,包括意见和建议等等。
    如果您发现如下情况,请不吝告知:
    2 文档当中是否有错误?
    2 语言表述是否清晰和完善?
    2 您是否需要其他内容?如果是,您需要什么内容?
    2 文中举例是否正确?是否需要更多的例子?
    2 文档排版是否舒适?如果不舒适?您的建议是什么?
    2 您最欣赏的是文档的哪些方面?哪些章节?
    如果您有任何意见建议,请注明文档名称、问题、错误的章节、页码等信息告知与我。
    您可以通过如下方式与我联系:
    2 电子邮件: yesgo@gledecity.com fjzhao@msn.com (前者优先)
    2 个人主页: http://yesgo.gledecity.com (当前不可用)
    2 QQ :27565476
    2 地址: 中国 . 深圳

    非常感谢您阅读本文档,如果您按照本文档配置成功,祝贺您!如果遇到问题,告诉我。






    前言

    这里我将说明本文档的书写动机、配置目标、主要内容、遵循原则和使用说明。
    我主要的从事领域是网络开发,主要采用的技术方案是
    FreeBSD/Linux+MySQL/Oracle+JavaBean/EJB+Jsp,也就是所说的四层结构(也有人认为是三层结构,但在J2EE中添加了界面层的概念)。项目开发过程中,常常需要进行服务器的构架,每次配置完毕我都会写一份简单的配置文档作为项目技术文档的一部分。这份文档是我一次次配置的结晶,我将构建网路服务器常用的部分写进了本文档,其一可以作为初学者的安装向导,其二也可以听取大家的意见和建议,使之更加严谨和完善。
    本文档的目标是构架一个比较规范的RedHat开发服务器作为项目的开发环境。本文档共十八个步骤,简明而全面的介绍了DNS、FTP、 MySQL、Apache 、JVM、 Resin、 PHP等服务器的配置办法。
    下面是我书写本文档所遵循的几个原则:
    1、 力求简明:去除任何多余的步骤;让命令说话,只加必要的注释,这样方便大家作为配置清单使用。本文档主要告诉读者如何去做,很少说明为什么那样做(这一点在本版本中有所改善),但需要注意的是,如果您忽略了其中的任何一步都可能导致后面出错;
    2、 系统全面:步骤贯穿从安装操作系统到配置完成的全过程,初学者一步一步照做即可;服务器的配置是一个系统的过程,很多说明文档只是说明某几个软件的配置方法,没有统筹兼顾,所以照搬往往失败;
    3、 力求严谨:这是我的一个目标,也是我发布原因之一,当然这需要大家的检验才能实现;
    4、 保持最新:包括操作系统在内,所有的软件都是截止到12/22/2001的最新版本,如果有新的软件版本出现,我也会努力做到及时更新;
    5、 精选软件:文中提及的软件都是大家所熟悉的,只有两个需要说明。其一:为什么不选择FreeBSD而用Redhat?FreeBSD可谓是Intel平台上最好的网络操作系统,但它对JAVA(尤其是新版本的JDK)的支持很差,我曾在较长一段时间内采用FreeBSD作为JAVA开发平台,然而由于SUN并没有发布FreeBSD上的JDK,所以经常造成系统崩溃,已经是多次的经历了;为什么不用Tomcat而使用Resin?虽然Tomcat是Apache组织的一个项目,虽然它也在不断完善起来,但较之Resin还是有一定的差距;Resin在中文支持、执行效率、可定制性、升级速度、支持J2EE等方面都有不俗的表现,也是我个人已经体会到的;虽然我怀疑它在高端应用、系统负载等方面的性能,但应付中小型的Web项目方面应该是绰绰有余的;
    6、 侧重JSP:以搭建JSP开发环境为主,可以作为JSP初学者的服务器配置手册:其一:RH7.2增强了多语言的支持,如果你在安装的过程中选择语言时选择了i18n的简体中文包,加上Resin对中文的良好支持,你无需声明Content-Type(任何方式的声明都不需要),中文将自动支持,这一点文档中也已说明;其二:提供了Resin连接池的配置方法和调用方法,并提供了一个用于数据库连接和处理的组件;其三:提供了添加一个JSP虚拟主机的详细方法,从DNS FTP APACHE到Resin全面讲述;其四:指出了JDBC2.0的支持办法,并提供代码进行测试;
    7、 编译安装:软件全部编译安装,有益于系统可定制性和系统稳定性;
    8、 目标读者:linux初学者的配置向导和中高级读者的参考;
    9、 配置目标:本文档当前最适合作为企业内部开发服务器的配置手册,如果作为Internet服务器,需要考虑的安全因素还很多,最起码不能全部安装,也不需要安装X server,Internet 服务器不仅需要我文档中提及的功能,更需要一个简洁安全的系统;
    10、 功能清晰:我将服务器定位在一个DNS+FTP+MySQL+Apache+Resin+Php构架的Web开发服务器,而将可有可无的服务去掉。所以,文档中没有提及QMAIL、ORACLE和ASP、FrontPage扩展等配置方法。除了功能的分离和读者的需求之外,Oracle的最佳运行平台是SUSE Linux,ASP的最佳运行平台是NT,至于Qmail,后续版本可以增加进去;
    以下是本文档的使用说明:
    1、颜色说明:
    深蓝色: 在原文文档中修改的或者添加的部分
    深绿色: 我的注释
    2、符号说明
    #: 系统或者软件配置文档中原有的注释;
    ##: 我为随后段落做的说明
    //: 我的行末说明
    /*…*/:篇幅较长的说明
    3、命令说明:
    我习惯使用vi来表示编辑一个文件,如果不喜欢使用这个工具,你完全可以使用Advanced Editor之类的可视化编辑器或者mc等其他命令。
    偶尔我会在命令之前加上shell>表示这是一个命令,以与文件内容区别开来,但这个版本是中文的,所以我一般不加该符号。
    make 和make install是可以使用make;make install替代的,但为了便于查看每一步的提示信息,建议分开执行。
    . /在文中很多地方出现,中间没有空格,而且点号也不明显,需要注意。



    赵凤君
    二○○一年十二月二十二日


    软件列表

    下载下面的软件并将它们放到/home/src目录。首先要创建一个系统帐户,然后将软件放到该目录下。下面的软件都将在本文档中用到,下面的连接都是截止到12/22/2001的最新版本:

    RedHat 7.2
    http://redhat.pacific.net.au/redhat/linux/7.2/ja/iso/i386/
    mysql-3.23.46.tar.gz
    http://www2.linuxforum.net/mirror/mysql/Downloads/MySQL-3.23/mysql-3.23.46.tar.gz
    mm.mysql-2.0.4-bin.jar
    http://www2.linuxforum.net/mirror/mysql/Downloads/Contrib/mm.mysql-2.0.4-bin.jar
    apache_1.3.22.tar.gz
    http://www.apache.org/dist/httpd/apache_1.3.22.tar.gz
    php-4.1.0.tar.gz
    http://www.php.net/do_download.php?download_file=php-4.1.0.tar.gz
    j2sdk-1_3_1_01-linux-i386.bin
    http://java.sun.com/j2se/1.3/download-linux.html
    jaf1_0_1.zip
    http://java.sun.com/products/javabeans/glasgow/jaf.html
    javamail1_1_3.zip
    http://java.sun.com/products/javamail/javamail-1_1_3.html
    resin-2.0.4.tar.gz
    http://www.caucho.com/download/resin-2.0.4.tar.gz
    phpMyAdmin_2.1.0.tar.gz
    http://phpmyadmin.sourceforge.net/download.html
    //phpMyAdmin的下载页我当前打不开,该软件最新的版本是2.2.0,我没有下载到。不久我将更新这个软件的配置方法。






    配置步骤

    Step 1 RedHat 7.2 install
    我的建议:
    1、 安装时为/home建立单独的分区,因为/home是用户数据的存放之地,本文档中也将软件的安装文件都放到这个目录下,所以,这样做当你下次重新安装系统的时候,可以保留该分区,数据也就得以保全;
    2、 采用定制安装的方式并选中’Everything’选项,这样特别适合于初学者,否则后面的安装过程中可能会出现找不到某个包或某个命令的情况;但如果是配置Internet服务器,就应该只选择必需的包,做到尽量的精简才够安全;
    3、 选择语言时,建议选中simplified chinese(P.R.CHINA)选项,这样,当你配置好服务器的时候,在程序代码中无需任何声明,中文将被支持而不会乱码;
    4、 使用Gnome做为登陆管理器,使用KDE作为默认的Session,设置默认启动到X,这样做的目的是为了方便远程控制;
    5、 IP: 192.168.1.2,这是我在本文档中使用的IP,这个可以自行设置。
    --------------------------------------------------------------------------------------------
    Step 2 X setup
    ##这一步完成后,重启服务器,然后你就可以使用Extra!X等远程控制软件以图形界面在微软平台上进行服务器配置,这样做的好处是可以同时控制服务器端和客户端,不必奔走在两台机器之间。
    vi /etc/X11/gdm/gdm.conf
    [xdmcp]
    Enable=1

    vi /etc/X11/gdm/Sessions/Default
    exec /etc/X11/xdm/Xsession kde

    vi /etc/X11/xdm/Xaccess
    192.168.1.*

    --------------------------------------------------------------------------------------------
    Step 3 Services setup
    Shell> ntsysv
    运行ntsysv命令启用named 、telnet 和 wu_ftpd 服务,禁用httpd 和 mysqld 服务和其他一些不需要的服务,然后重启服务器。
    --------------------------------------------------------------------------------------------
    Step 4 Dns setup
    vi /etc/named.conf

    1 创建标准区域
    ##你可以根据你的喜好来命名,这里我使用的后缀是.loc,主要是为了避免和Internet已经注册的域名相冲突,你可以自行决定你的后缀。
    ##添加下面的文本到 /etc/named.conf

    zone yesgo.loc{
    type master;
    file "yesgo.loc";
    }
    zone 1.168.192.in-addr.arpa{
    type master;
    file "192.168.1";
    }

    2 创建域名库文件
    touch /var/named/yesgo.loc
    touch /var/named/192.168.1

    ##编辑正向域名库文件,建立主机名和主机别名
    vi /var/named/yesgo.loc

    @ IN SOA ns.yesgo.loc. root.ns.yesgo.loc. (
    2001050801 ; Serial
    28800 ; Refresh
    14400 ; Retry
    3600000 ; Expire
    86400 ) ; Minimum
    IN NS ns.yesgo.loc.
    IN MX 0 ns.yesgo.loc.

    ns IN A 192.168.1.2
    ftp IN CNAME ns.yesgo.loc.
    mail IN CNAME ns.yesgo.loc.
    pop IN CNAME ns.yesgo.loc.
    smtp IN CNAME ns.yesgo.loc.

    ##编辑反向域名库文件,建立主机名指针
    vi /var/named/192.168.1

    @ IN SOA ns.yesgo.loc. root.ns.yesgo.loc. (
    2001050801 ; Serial
    28800 ; Refresh
    14400 ; Retry
    3600000 ; Expire
    86400 ) ; Minimum
    IN NS ns.yesgo.loc.
    IN MX 0 ns.yesgo.loc.

    2 IN PTR ns.yesgo.loc.

    3 重新启动DNS服务
    /etc/rc.d/init.d/named restart

    4 域名查询
    ##测试域名是否解析成功,这是一个交互式的命令行,你可以输入域名或者IP地址进行正向和反向查询
    nslookup -sil
    --------------------------------------------------------------------------------------------
    Step 5 KDE setup
    这一步是可有可无的,因为你完全可以不去理会而直接使用默认界面。一般的做法是先根据KDE配置向导进行总体设置,然后再使用KDE控制中心进行详细配置,在此不多介绍。需要提的一点是你可以通过KDE Control Panel 中的Windows Manager来设置默认Session,当然也可以通过配置文件来实现这一点。
    --------------------------------------------------------------------------------------------
    Step 6 Ftp setup
    vi /etc/shells
    ##添加下面一行到/etc/shells,将作为FTP用户的shell,使其不能使用命令和telnet服务
    /dev/null

    ## 增加ftpchroot组,该组中的用户将以自己的home目录作为FTP根目录

    groupadd ftpchroot

    ## 添加FTP用户,该类用户只能使用FTP服务,且以自己的home目录为根目录
    useradd src –s /dev/null –g ftpchroot //本帐号用来存放软件包
    passwd src

    /*
    我习惯将软件包放到自定义的/home/src目录,主要目的还是上面提到的数据保全和软件上传问题,如果放到/usr/local/src目录,这两点也能实现但不方便,如果你习惯将软件包放到/usr/local/src,你可以删除/usr/local/src然后为/home/src建立一个符号连接。
    */
    rm –R -f /usr/local/src
    ln –s /home/src /usr/local/src
    --------------------------------------------------------------------------------------------
    Step 7 MySQL、Apache and php Unistall
    使用Package管理器或者rpm命令卸载MySQL、Apache和PHP,建议初学者使用Package管理器,分别查找这三个关键词直到将所有相关的软件包都卸载干净。我们接着会编译安装这些软件。
    --------------------------------------------------------------------------------------------
    Step 8 MySQL install
    1 准备用户
    useradd mysql
    passwd mysql

    2 安装MySQL
    cd /home/src
    tar xvzf my* //解包
    cd my*
    ./configure --prefix=/usr/local/mysql //配置
    make //编译
    make install //安装
    ./scripts/mysql_install_db //建库

    3 修改文件夹权限
    ##下面修改相关文件夹权限,否则MySQL服务不能启动,或者说你对数据库没有写权限
    chown –R root /usr/local/mysql
    chgrp –R mysql /usr/local/mysql

    chown –R root /usr/local/mysql/bin
    chgrp –R mysql /usr/local/mysql/bin

    chown –R root /usr/local/mysql/var
    chgrp –R mysql /usr/local/mysql/var
    chmod 770 /usr/local/mysql/var

    chown –R root /usr/local/mysql/var/mysql
    chgrp –R mysql /usr/local/mysql/var/mysql
    chmod 770 /usr/local/mysql/var/mysql

    chown –R root /usr/local/mysql/var/mysql/*
    chgrp –R mysql /usr/local/mysql/var/mysql/*
    chmod 770 /usr/local/mysql/var/mysql/*

    chmod 770 /usr/local/mysql/lib/mysql/libmysqlclient.a

    4 重新加载动态库
    ##因为我们采用自定义编译安装的方式,所以跟系统原先定义的库位置不一样,现在我们重新指定它并重新加载
    vi /etc/ld.so.conf
    #添加下面一行
    /usr/local/mysql/lib

    shell>ldconfig //重新加载动态库

    5 测试MySQL
    cd /usr/local/mysql
    ./bin/safe_mysqld –-user=mysql & //启动MySQL服务
    mysqladmin –u root –p password your_password //更改用户密码
    mysql –p //开始使用

    6 创建启动脚本
    ##创建MySQL服务,使之在系统启动时自动启动
    cd /etc/rc.d/init.d
    touch mysqld
    vi mysqld
    ##文件内容如下:

    #!/bin/bash
    #Start MySQL service
    cd /usr/local/mysql
    ./bin/safe_mysqld - -user=mysql

    ##改变该脚本的权限,否则系统启动时会说由于没有执行权限而启动失败
    chown –R root /etc/rc.d/init.d/mysqld
    chmod 700 /etc/rc.d/init.d/mysqld

    ##将此服务连接到init 5,如果你使用init 3启动机器,连接到rc3.d即可,60代表启动的次序,S要大写
    ln –s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S60mysqld
    --------------------------------------------------------------------------------------------
    Step 9 Apache configure
    ##这是Apache的初次配置,等到PHP安装好后才进行安装
    cd /home/src
    tar xvzf apa* //解包
    cd apa*
    ./configure //初始化
    --------------------------------------------------------------------------------------------
    Step 10 Php install
    cd ..
    tar xvzf php*
    cd php*
    ./configure --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.22 --enable-track-vars //设置PHP编译参数
    make //编译
    make install //安装
    cp ./php.ini-dist /usr/local/lib/php.ini //复制配置文件到/usr/local/lib/
    --------------------------------------------------------------------------------------------
    发布人:叶三耿 来自: