QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1773|回复: 0

[系列.原创]Linux不完全攻略_10

[复制链接]
发表于 2004-11-4 15:13:11 | 显示全部楼层 |阅读模式
回复贴到 http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=91508 。不要回复本贴。

[code:1]
10        搭建JSP服务器
        版本:2004-11-05-02

    JSP是一项很有前途的站点动态网页技术,如果把握得当,也很有钱途。Tomcat是Apache基金Jakart项目的产品,曾经被SUN推荐来做JSP容器,搭建JSP服务器的首选。
    Tomcat可以充当Apache的JSP扩展插件,也可以独立运行,充当Web服务器。如果你的站点访问量比较小,你甚至可以不装Apache。

        10.1        准备工作

    Tomcat运行需要J2SDK支持。如果没有安装J2SDK,请先安装J2SDK。
    去http://www.apache.org,在那里找一个叫jakart-tomcat的东东下载。Tomcat是用Java写的,这类Java大玩意儿从源代码编译比较麻烦,就不要source的了,直接找binary的吧。

    最新配置好了Tomcat5.5.2,它需要JDK1.5支持,主要用以前的稳定版本4.1.30做例子,5.5.2顺带讲。

    4.1.30版本对应的下载文件是“jakart-tomcat-4.1.30.tar.gz”。还有一个很小的验证码文件,“jakart-tomcat-4.1.30.tar.gz.md5”,一起下回来。

    我把下载回的文件保存在“/opt/prog/tmp”。开终端,进这个目录,检查一下:
[root@TFW-RFL40 tmp]# md5sum jakart-tomcat-4.1.30.tar.gz
    看看得出的字符串是否和“jakart-tomcat-4.1.30.tar.gz.md5”里的一致,不一致请重新下载。“jakart-tomcat-4.1.30.tar.gz.md5”里的字母可能是大写的,这无所谓。要注意的是,这个文件里的字符串很可能是以两位一组分开的,忽略那些可能的空格。

        10.2        安装

    前面经历过几次安装,我知道Tomcat是那种说挪就能挪的软件。我把“Tomcat”安装到“/opt/prog/m”里。进要安装软件的目录:
[root@TFW-RFL40 tmp]# cd /opt/prog/m
[root@TFW-RFL40 m]#

    解压缩:
[root@TFW-RFL40 m]# tar zxvf /opt/prog/tmp/jakart-tomcat-4.1.30.tar.gz
……
……
……
[root@TFW-RFL40 m]#

    做一个没有版本号的链接,这样Tomcat的内容也可以被看成安装在“/opt/prog/m/tomcat”里,以后升级方便:
[root@TFW-RFL40 m]# ln -s jakart-tomcat-4.1.30 Tomcat
[root@TFW-RFL40 m]#
    新装主要安装完成。后来新装了Tomcat5.5.2,删除并重建了这个链接,指向“jakart-tomcat-5.5.2”,别的东西都没再改。

    修改环境变量文件。我改的是“/etc/profile”。在文件的末尾添加如下9行内容:
########################################
#v3        Jakarta-tomcat        4.1.30/5.0.28/5.5.2
#        Non-Compiled
#        Moveable
CATALINA_BASE="/opt/prog/m/Tomcat"
CATALINA_HOME="/opt/prog/m/Tomcat"
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOME/bin:$CATALINA_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CLASSPATH CATALINA_BASE CATALINA_HOME
########################################
    由于我有一个不带版本号的链接,我用4.1.30替换旧的4.1.27时只是删除旧链接和重做一个链接,不必改环境变量文件。

        10.3        运行

    启动:
[root@TFW-RFL40 m]# startup.sh
Using CATALINA_BASE:   /opt/prog/m/Tomcat
Using CATALINA_HOME:   /opt/prog/m/Tomcat
Using CATALINA_TMPDIR: /opt/prog/m/Tomcat/temp
Using JAVA_HOME:       /opt/prog/m/Java/J2SDK
[root@TFW-RFL40 m]#

    开浏览器,访问url“localhost:8080”。如果你的计算机已经接入以太网,你可以在另外一台计算机的浏览器里用IP地址访问你自己的计算机。由物理主机和VMware虚拟机构成的以太网环境同样适合。此时应该能看到画着一只黄猫的Tomcat测试页。再访问“localhost:8080/examples/jsp/”,看里面的动态网页,如果能正常工作,即告成功。一般情况下,在一般配置的PC机上,20秒内Tomcat能启动完毕。

    关闭:
[root@TFW-RFL40 m]# shutdown.sh
Using CATALINA_BASE:   /opt/prog/m/Tomcat
Using CATALINA_HOME:   /opt/prog/m/Tomcat
Using CATALINA_TMPDIR: /opt/prog/m/Tomcat/temp
Using JAVA_HOME:       /opt/prog/m/Java/J2SDK
[root@TFW-RFL40 m]#

        10.4        Tomcat应用管理器

                10.4.1        设置
    启动Tomcat。估计启动完成后,开浏览器,访问url“http://localhost:8080”,等默认的页面出来。

    页面左边“Administration”栏目中有一项“Tomcat Manager”的,这就是Tomcat附带的应用管理器,直接点进去或者用浏览器浏览“http://localhost:8080/managet/html”均可;其下面一项为“Tomcat Administration”,设计功能与此有所重叠,但更为强大,用来设置更多的东西。不过这个版本的“Tomcat Administration”有问题,不用也罢。
    Tomcat5.5.2的“Tomcat Administration”需要单独下载、安装,官方站点说这是出于安全考虑。

    “Tomcat Manager”和“Tomcat Administration”使用时都需要帐号(用户名)和口令(密码),而为安全起见,Tomcat默认没有相关的帐号,需要进Tomcat的安装目录“CATALINA_HOME”,找到其中的文件“conf/tomcat-users.xml”,手动添加。对照其他行的格式,在适当的位置添加一行:
  <user uname="AAA" password="BBB" roles="admin,manager"/>
    重新启动Tomcat,“Tomcat Manager”和“Tomcat Administration”即可使用,帐号“AAA”,口令“BBB”。帐号和口令随便设,甭忘了就OK。

                10.4.2        试用

    用你设置好的帐号和口令进Tomcat应用管理器。看“Application”那项,里面从上到下依次列出各个“Web应用”状况,每行都列出了该“Web应用”的Path(虚拟路径)、Display name(应用的名称,可以为空)、Running(是否在运行)、Session(会话,访问记忆标记)、Commands(对这个“Web应用”的操作项)之类的内容。

    找到一个“Running”数值为1的“Web应用”,鼠标左键点它的Path,即可访问这个“Web应用”——呵呵,别在这里和我较真,如果你把鼠标设置改了,或者你的浏览器是Lynx,或者……,相信你知道该怎么做。
    对比一下这个Path和浏览器地址栏里的东东,看看有什么关联。
    回到“Tomcat Manager”这页,去这个“Web应用”所在行的“Commands”栏找到“Stop”,鼠标点一下,等页面不在变化时看看这个“Web应用”的“Running”数值,已经变成了0,这个“Web应用”被停掉了。试试看,这个“Web应用”还能访问吗?
    点右边的“Start”能重新开启这个应用。

    注意,不要点“Remove”或“Undeploy”,这样很可能造成不可挽回的损失。

        10.5        初步了解“Web应用”

    前面讲了一堆的“Web应用”,究竟是嘛玩意儿?好象没什么办法严格定义它是什么东西,我只能就我的理解做个描述性的解释。一般说来,一组能够实现一些网站功能的文件往往被集中放置在一个目录里,前面说的“Web应用”大致就指这类目录。有时,不常更改的“Web应用”可以被压缩打包成“*.war”文件以减少磁盘空间占用,除了启动加载稍慢,效果不变。

    对于Tomcat,一个“Web应用”目录往往具有如下特征:

    可能直接包含或在子目录里包含一些以“.htm”或“.html”结尾的文件,这些内容固定的网页用作用户界面;
    可能直接包含或在子目录里包含一些以“.jsp”结尾的文件,用来产生内容会变化的网页作为用户界面;
    可能直接包含一个“WEB-INF”目录。

    其中“WEB-INF”也是一个结构比较复杂的目录,如果“Web应用”里有这个目录,其主要特征为:

    可能直接包含一个用于对Tomcat描述该“Web应用”的文件“web.xml”;
    可能直接包含一个目录“classes”,这个目录又会直接或在子目录里包含一些执行后台操作或控制前台“*.jsp”文件显示内容的“*.class”文件;
    可能直接包含一个目录“lib”,这个目录中存放一些打包成“*.jar”文件的类,作用类似目录“classes”。

    目录“$CATALINA_HOME/webapps”是Tomcat自身启动后首先来找的地方,Tomcat自带的某些“Web应用”会被放置在这里。但是不管升级还是维护,出于方便和可靠性考虑,在这里放置你自己的“Web应用”不是个好主意。可以在这个目录里放置一个XML格式的容器描述片段文件,让Tomcat根据这个文件找到和加载你的“Web应用”。一个最基本的容器描述片段文件内容如下:
<Context path="XXX" docBase="YYY"
        debug="0" privileged="true">
</Context>
    这些内容可以插在“$CATALINA_HOME/conf/server.xml”中适当的位置,但是还是建议把它独立写在一个文件里。
    这个文件中,“path”后面的内容即为你希望通过什么样的名称来访问这个“Web应用”,它跟在主机名和端口名后面。假定你希望用“http://主机名/ABC”来访问这个“Web应用”,就把path设为“/ABC”。
    “docBase”是这个“Web应用”在你的计算机上的实际路径。
    这个文件,最好按照“path”命名为“XXX.xml”,否则可能出些莫名其妙的问题。
    如果是Tomcat5.5.2,这个片段文件得放置在“$CATALINA_HOME/conf/Catalina/localhost”里。

        10.6        独立运行

    如果希望直接用Tomcat充当Web服务器,“http://主机名:8080XXX”不太好。打开“server.xml”,找到下面一段:
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8080" minProcessors="5" maxProcessors="75"
               enableLookups="true" redirectPort="8443"
               acceptCount="100" debug="0" connectionTimeout="20000"
               useURIValidationHack="false" disableUploadTimeout="true" />
    这段将8080端口定义为Tomcat默认的HTTP端口。将“8080”修改为“80”即可以“http://主机名/XXX”方式访问各Web应用。

        10.7        数据库相关

                10.7.1        安置驱动

    找到所需的JDBC驱动。如果是“*.jar”格式的,复制或链接到“$CATALINA_HOME/common/lib”中;如果已经解压,复制或链接到“$CATALINA_HOME/common/classes”。复制或链接完成后,需要重新启动Tomcat。此后,各“Web应用”的JSP或后台组件都可以直接连接和使用相关的数据库管理系统。

    当然,如果只想把这个数据库管理系统给特定的“Web应用”使用,也可以把驱动复制或链接到该“Web应用/WEB-INF”下的特定目录里。这样一般情况下不必(如果不能生效,属于二般情况^o^)重启整个Tomcat,只需要从Tomcat应用管理器里重新启动这个“Web应用”即可。

                10.7.2        使用连接池

    如果你需要看这节,你有多少已经对连接池或对象池的必要性有一些了解,相关话题不再赘述。

    安置好驱动后,找到需要使用连接池的“Web应用”。
    到文件“$CATALINA_HOMEconf/server.xml”或目录“$CATALINA_HOMEwebapps”里找到出该“Web应用”的容器描述。在“<Context/>”前面添加一些内容。

    以我的使用情况为例,我用PostgreSQL创建了数据库“test_d_1”,令为“test_p_1”的数据库用户“test_u_1”能够访问它。要让程序能够通过连接池访问它,Tomcat4.1.30需要添加如下内容:
   <!-- 所有带有本行首位标记的皆为注释,可不添加 -->

   <Resource name="jdbc/TestPool" type="javax.sql.DataSource"/>
   <!-- 定义了一处类型为数据源的资源“jdbc/TestPool” -->

   <ResourceParams name="jdbc/TestPool">
   <!-- 资源名为“jdbc/TestPool”的资源的参数 -->

      <parameter>
         <name>driverClassName</name>
         <value>org.postgresql.Driver</value>
      </parameter>
      <!-- JDBC驱动类名 -->

      <parameter>
      <name>url</name>
         <value>jdbc:postgresql://127.0.0.1:5432/test_d_1</value>
      </parameter>
      <!-- 要连接的数据库 -->

      <parameter>
         <name>username</name>
         <value>test_u_1</value>
      </parameter>
      <!-- 连接这个数据库的帐号 -->

      <parameter>
         <name>password</name>
         <value>test_p_1</value>
      </parameter>
      <!-- 这个帐号对应的口令 -->

      <parameter>
         <name>maxActive</name>
         <value>4</value>
      </parameter>
      <!-- 最大连接数 -->

      <parameter>
         <name>maxIdle</name>
         <value>2</value>
      </parameter>
      <!-- 最大空闲连接数 -->

   </ResourceParams>
   <!-- 资源的参数定义完成 -->

    Tomcat5.5.2则应当按照如下格式添加:
  <Resource name="jdbc/TestPool"
            auth="Container"
            type="javax.sql.DataSource"
            driverClassName="org.postgresql.Driver"
            url="jdbc:postgresql://127.0.0.1:5432/test_d_1"
            uname="test_u_1"
            password="test_p_1"
            maxActive="4"
            maxIdle="2"/>

    按照同样的格式可以添加不止一处数据源,跟在第一处数据源后面,但资源名必须也以“jdbc/”开头,且不能重名,也必须在“<Context/>”之前。

    找到文件“Web应用/WEB-INF/web.xml”,修改其内容。没有就新创建一个。其基本格式如下:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

  <display-name>这个“Web应用”的名字</display-name>
  <description>对这个“Web应用”的文字描述</description>

</web-app>

    在“</web-app>”前放置如下格式的内容:
  <resource-ref>

    <description>
        DataSource test.
    </description>
    <!-- 对这处资源的文字描述 -->

    <res-ref-name>
      jdbc/TestPool
    </res-ref-name>
    <!-- 要引用的资源 -->

    <res-type>
      javax.sql.DataSource
    </res-type>

    <res-auth>
      Container
    </res-auth>

  </resource-ref>

    既然容器描述里可以定义多个资源,这里也可以引用多个资源。把需要引用的资源都放在“</web-app>”即可。

    这些事情做完,用Tomcat应用管理器重新启动这个“Web应用”。

        10.8        一点经验

    如果发现对某“Web应用”所做的更改不起作用,可以先清空目录“$CATALINA_HOME/work/Standalone/localhost”下对应的目录,关闭该“Web应用”,稍后再启动该“Web应用”。

    如果发现对Tomcat所做的更改不起作用,可以先关闭Tomcat,删空目录“$CATALINA_HOME/work/Standalone/localhost”,稍后再启动Tomcat。

    以上两者在Tomcat5.5.2中对应的目录为“$CATALINA_HOME/work/Catalina/localhost”.

    如果发现Tomcat在关闭时出错,可以用命令“ps -A|grep java”查查Tomcat是否关掉了。没正常关闭的Tomcat往往会带来许多麻烦。如果Tomcat正常关闭,并且没有其他Java程序在运行,这个命令不会有结果;如果有结果,一定是Tomcat,找出它的进程号,用“kill 进程号”或“killall java”杀掉。

    由于软件设计的BUG,Tomcat5.5.2不直接支持中文,网页中的中文全部乱码,必须先做修改。进Tomcat的安装目录“CATALINA_HOME”,找到其中的文件“conf/web.xml”。找这样一段:
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
    加点内容,变成:
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>javaEncoding</param-name>
            <param-value>GB18030</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
    关闭Tomcat,删空目录“$CATALINA_HOME/work/Catalina/localhost”,稍后再启动Tomcat即可。

    Tomcat5.5.2可以以非“root”身份运行,运行前需要把“$CATALINA_HOME”以及其中一切文件的组和所有者更改为要运行的组和用户。
[/code:1]

回复贴到 http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=91508 。不要回复本贴。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 17:17 , Processed in 0.068663 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表