在linux上建jsp環境

老早就在國外的網站上看到Jsp(Java Server Pages)的介紹,說它如何如何的好, 如何如何的強大,可是只知道jsp這玩意不錯,卻一直沒有機會用上。聽說unix下 配置jsp環境頗爲複雜,因此一直沒敢去碰。後來在臺灣的站點上找到了一份臺灣老 寫的在Linux下配置jsp環境的文章,如獲至寶,於是就馬上操刀上陣,想試試如何。   可惜照樣子畫葫蘆未果。   於是到國內幾個大的bbs內到處查找,尋訪幾個前輩,找到一些零碎的配置方法。 這些方法大都是gnujsp0.9x/1.0配合ApacheJser-1.x.x來運行jsp的,我都一一照樣 進行配置,結果頂多是讓ApacheJserv運行起來而已。一直無法運行jsp。   最後筆者決心自己獨立將配置方法摸透,於是所有套裝軟體都儘量從官方網站下載回來。 以下是筆者配置過程中使用到的套裝軟體: Apache_1.3.12.tar.gz (從www.apache.org下載) ApacheJserv-1.1.2.tar.gz(從java.apache.org下載) gnujsp-1.0.tar.gz(從教育網內獲得) JSDK-2.0.tar.gz(從教育網內獲得) JDK-1.2.2.tar.gz(For Linux版本,從freesoft.online.sh.cn及www.sun.com可下載)   經過連續8個小時反復琢磨gnujsp-1.0 中的安裝文檔以及綜合手頭幾份安裝文章, 還有從java.apache.org上下載的簡單安裝配置文章,筆者最後終於成功將jsp環境 配置成功並成功地運行了調用bean的jsp程式。   以下就安裝和配置的原理、過程、注意事項以及關鍵點等進行詳細描述。 一、配置要求 RedHat 5.x 或 6.x (筆者在TurboLinux 4.02/6.0 Bluepoint1.0/2.0 等系統中都順利編譯、配置通過) JSDK2.0(其實就是需要一個 70多k的jsdk.jar) gnujsp1.0(其實就是需要裏面的jar文件而已) JDK-1.x.x or JDK-1.2.x(兩個版本都能夠順利通過編譯和配置) ApacheJserv1.0 or 1.x.x 編譯需要的make,gcc等程式、編譯器與函數庫 二、基本配置原理   要讓jsp能夠正確解析並運行良好的話,需要確保ajp1.2(apacheJserv protocol1.2)可以正常地在本地(local)埠8007通信,Servlet需要能夠正常執行,並且要合理配置好Jserv的配置文件使gnujsp正確解析jsp文件。本文採用static(靜態)編譯方式編譯 ApacheJserv。 三、基本步驟   首先要確保ApacheJserv正確編譯並測試通過。然後正確配置ApacheJserv的配置文件,讓gnujsp可以解析jsp文件。   以下是安裝步驟示意圖:  JDK-->JSDK-->apache(基本配置)-->ApacheJserv(配置/編譯)-->apache(配置/編譯/安裝) -->gnujsp-->編輯ApacheJserv配置文件-->測試-->OK 四、詳細過程 1、安裝JDK   其實不存在什麽安裝,只需要將JDK拷貝到一個固定目錄就可以了。這裏筆者採用JDK-1.2.2的二進位版本。對於採用1.1.x的讀者,如果是選擇了static的方式 將Apache和ApacheJserv整和,出現故障的時候可以採用DSO模式(建議JDK-1.1.x版本的都采 用DSO模式比較好)。   #tar xfz JDK-1.2.2-linux-i386.tar.gz   #mv JDK-1.2.2 /www/JDK122 2、安裝JSDK   和安裝JDK道理一樣,只需要解包後拷貝到一個固定目錄就可以了。 不過要注意的是,這裏實際上只是用到這個包的jsdk.jar文件,所以一定要知道這個文件的路徑。   #tar xfz jsdk-2.0.tar.gz   #mv JSDK-2.0 /www/jsdk   #ls -l /www/jsdk/lib   total 80 -r--r--r-- 1 root root 76453 Jun 28 01:03 jsdk.jar 3、apache基本配置   這個其實並不能說是真正的配置,只是在第一次解包的時候要生成一些必須的.h文件才需要 的一步而已。相當於預配置。   #tar xfz apache_1.3.12.tar.gz  #cd apache_1.3.12  #./configure  #cd ..   這樣就會生成了諸如httpd.h等的頭文件。如果沒有這些文件的話,以後配置ApacheJserv或者 Php3等都會報錯的。 4、ApacheJserv配置與編譯   這裏需要使用的指令至少有:   --with-apache-src= (指定了apache源碼的路徑,用於static方式的編譯)   --with-jdk-home= (指定jdk的根目錄)   --with-JSDK= (指定jsdk.jar的目錄,注意是大寫的JSDK!!!)   至於其他的並不是一定要寫,但是建議還是要指定諸如安裝目錄,jdk平臺號碼(1或者2)等。 其中java-platform是這樣指定的:即如果使用的是jdk-1.1.x的就是1(默認是1,可以不寫)。如果是jdk-1.2.x就指定是2。   #tar xfz ApacheJserv-1.1.2.tar.gz   #cd ApacheJserv-1.1.2  #./configure --with-apache-src=../apache_1.3.12 --prefix=/www/jserv \  >--with-jdk-home=/www/jdk122 --with-java-platform=2 \  >--with-JSDK=/www/jsdk/lib/jsdk.jar --disable-debugging  #make   #make install  #cd .. 5、Apache的配置編譯   關於Apache的配置很多文檔都有說明,這裏就不贅述了。   #cd apache_1.3.12  #./configure --prefix=/www/httpd --activate-module=src/modules/jserv/libjserv.a   #make   #make install 6、gnujsp安裝   其實只是需要gnujsp-1.0中的幾個jar文件而已。   #tar xfz gnujsp-1.0.tar.gz   #mkdir /www/gnujsp   #cp gnujsp-1.0/lib/*.jar /www/gnujsp  #mkdir /www/gnujsp/bean_jsp  #ls -l /www/gnujsp  drwxr-xr-x 10 root root 4096 Sep 15 15:56 bean_jsp/   -rw-rw-r-- 1 root root 125972 Sep 15 12:55 gnujsp10.jar  -rw-rw-r-- 1 root root 153015 Sep 15 12:55 gnujsp10test.jar   -rw-rw-r-- 1 root root 37291 Sep 15 12:55 servlet-2.0-plus.jar   -rw-r--r-- 1 root root 38826 Sep 15 12:55 servlet-2.1.jar 7、Jserv配置文件的編輯   這個是jsp是否能夠正確解析使用的關鍵,也是本文的重點。   關鍵點在於設置好jserv的相關文件:   jserv.conf   jserv.properties  zone.properties   或者新建立一個properties文件,編輯的順序大概是: jserv.conf-->jserv.properties-->zone.properties-->自定義的properties文件。   現在假設你需要定義一個叫gsp的zone,那麽可以按照以下步驟和方法編輯相關內容:   *jserv.conf在編輯這個文件前,請將"include /www/jserv/etc/jserv.conf"這句 添加到apache的httpd.conf文件內。文檔中說這句話可以放到任何地方,不過經過實踐發現:最好還是放到httpd.conf的末尾!!!!!   你可以這樣運行:#echo "include /www/jserv/etc/jserv.conf" >> /www/httpd/conf/httpd.conf   做好後,再用例如vi編輯器編輯jserv.conf。如果你想記錄(log)jserv的所有動作,那麽最好是允許log,去掉以下語句注釋:ApJServLogFile /www/jserv/logs/mod_jserv.log   然後找到"# Mount point for Servlet zones"這行,這裏是定義Servlet zones 的mount點的(類似linux的安裝點)。我們加入以下這行: ApJServMount /gsp /gsp   接著找到ApJServAction關鍵字,加入以下這行:ApJServAction .jsp /gsp/gnujsp 這個是定義了.jsp文件是給gnujsp解析的。這樣jserv.conf文件就基本設置好了。   *jserv.properties這裏要設置一下wrapper.classpath,找到wrapper.classpath關鍵字,添加以下這行:wrapper.classpath=/www/jdk122/lib/tools.jar   接著找到"# Servlet Zones parameters"這行,修改zones=root成爲: zones=root,gsp (添加gsp這個zone)   接著下面幾行在 root.properties=/www/jserv/etc/zone.properties後添加定義gsp的properties行:  gsp.properties=/www/jserv/etc/gsp.properties   基本上jserv.properties就設置好了。   *gsp.properties 至於zone.properties就不需要設置,因爲這裏定義了一個新的zone-->gsp,起作用的是gsp.properties。   找到: # List of Repositories 這行,然後添加以下幾行:  repositories=/www/gnujsp/gnujsp10.jar  repositories=/www/gnujsp/servlet-2.0-plus.jar  repositories=/www/gnujsp/bean_jsp   其中第三行是定義了bean的回應目錄,這個目錄可以隨便定義。但是必須是真實存在的。   找到"# Servlet Aliases" 這行,添加別名行:  servlet.gnujsp.code=org.gjt.jsp.JspServlet  servlet.gnujsp.initArgs=checkclass=true,\(請注意不要斷行回車)  <pagebase=/www/httpd/htdocs,scratchdir=/www/httpd/jsp,\(請注意不要斷行回車)  <debug=true,compiler=builtin-javac -classpath  %classpath%:%scratchdir%:/www/gnujsp/servlet-2.0-plus.jar  :/www/gnujsp/gnujsp10.jar   :/www/gnujsp/bean_jsp -d %scratchdir% -deprecation %source%   其中第二行開始到最後結束其實是同一樣,由於篇幅問題才加入了換行符號。 請大家一定要注意儘量使用同一行!!!!!!!,並且注意其中的符號不可以缺少任何一個。   其中一些參數做一下解釋: pagebase意思是允許解析jsp文件的起始目錄。 scratchdir是生成的.java 和.class文件的臨時目錄。 請大家一定要注意這個目錄必須對nobody是可寫的!!!所以必須用chown命令將這個目錄的owner和 group改成nobody。 其後的是classpath是定義搜索的路徑,其中要包括bean的目錄,否則沒辦法使用bean的。另外你也可以增加多幾個類似的目錄,但是必須在以上文件中都要有定義。   至此:基本的設置就全部完成了。接下來就可以進行測試了。 8、測試   首先,確定你已經重新啓動了apache使所有設置生效。然後可以在瀏覽器裏輸入“http://localhost/gsp/Hello”,如果出現:   Example Apache JServ Servlet  Congratulations, ApacheJServ 1.1.2 is working!   那麽說明servlets運行正常。 然後,就是創建一個test.jsp的文件:   <html>  <body>    <h1>The Famous JSP Hello Program</h1>    <% SString s = "GNUJSP"; %>  The following line should contain the text "Hello GNUJSP World!".  <br>If thats not the case start debugging ...  <p>Hello <%= s %> World!  </body>  </html>   然後放到htdocs目錄內,並運行。如果正確被執行的話說明一切都基本正常了。   接下來測試一下gnujsp支援中文是否正確。將以上的test.jsp文件修改成中文的字元就可以看出是否正確了。筆者的實驗中發現gnujsp對中文支援很不錯,不需要任何補丁。 五、注意事項   在詳細步驟中筆者也強調多次了。這裏再強調一次。這些也是成功的關鍵點: 第一次解包apache後要先運行configure以産生相應的頭文件。 創建的scratchdir目錄必須是對任何人都是可寫的,用nobody的owner。 對於要使用bean目錄必須也在gsp.properties中定義好,而且需要使用的 bean元件必須放到你指定的bean目錄中。 不需要對系統的path進行修改,一些文章說需要修改,其實並不需要,因爲配置文件中有classpath。 (6)結束語   本文之所以將並不是非常複雜的配置過程和原理闡述得如此詳細,就是希望讀者閱讀後能夠正確配置jsp環境,不要再爲jsp環境頭疼了。其實除了採用這 個方案外,還可以採用tomcat,jrun等等。gnujsp只是一個廉價的方案。性能和 功能並不是很好。   筆者還編寫了一個簡單的安裝腳本,幫助讀者更加方便地安裝配置jsp環境。 詳細可參考筆者另外的文章。

(0)

相关推荐

  • 在linux上建jsp環境

    老早就在國外的網站上看到Jsp(Java Server Pages)的介紹,說它如何如何的好, 如何如何的強大,可是只知道jsp這玩意不錯,卻一直沒有機會用上.聽說unix下 配置jsp環境頗爲複雜,因此一直沒敢去碰.後來在臺灣的站點上找到了一份臺灣老 寫的在Linux下配置jsp環境的文章,如獲至寶,於是就馬上操刀上陣,想試試如何. 可惜照樣子畫葫蘆未果. 於是到國內幾個大的bbs內到處查找,尋訪幾個前輩,找到一些零碎的配置方法. 這些方法大都是gnujsp0.9x/1.0配合ApacheJs

  • Linux上通过binlog文件恢复mysql数据库详细步骤

     一.binlog 介绍 服务器的二进制日志记录着该数据库的所有增删改的操作日志(前提是要在自己的服务器上开启binlog),还包括了这些操作的执行时间.为了显示这些二进制内容,我们可以使用mysqlbinlog命令来查看. 用途1:主从同步 用途2:恢复数据库(也是线上出现一次数据库文件丢失后,才对这个有所了解并学习的) mysqlbinlog命令用法:shell> mysqlbinlog [options] log_file ... <!--[if !supportLists]-->

  • 在Linux上安装和使用Docker的方法

    容器现在风靡于 IT 界 -- 这很好理解.容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都不依赖于某个内核和操作系统.这也是容器与虚拟机之间最大的不同:相比之下,虚拟机是一个运行于宿主机操作系统上的完整的操作系统平台,而容器不是. 容器允许你以一种前所未有的方式扩展交付能力(不管内部还是外部的).例如,你可以快速部署多个 NGINX 实例(甚至可以应用于多个不同的阶

  • Linux上为你的任务创建一个自定义的系统托盘指示器

    系统托盘图标如今仍是一个很神奇的功能.只需要右击图标,然后选择想要的动作,你就可以大幅简化你的生活并且减少日常行为中的大量无用的点击. 一说到有用的系统托盘图标,我们很容易就想到 Skype.Dropbox 和 VLC: 然而系统托盘图标实际上要更有用得多:你可以根据自己的需求创建自己的系统托盘图标.本指导将会教你通过简单的几个步骤来实现这一目的. 前置条件 我们将要用 Python 来实现一个自定义的系统托盘指示器.Python 可能已经默安装在所有主流的 Linux 发行版中了,因此你只需要

  • Linux上搭载Nginx负载均衡配置使用案例详解

    目录 1,这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 2, 负载均衡的种类 3, 这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档) 4, 创建两台Nginx服务器 5, 搭建Nginx 搭建Keepalived:(Keepalived需要依赖openssl) 1,这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此

  • Linux上的文件搜索命令实例详解

    locate 基础了解 在centos7上默认没有locate命令,需要先手动安装.安装步骤:http://www.cnblogs.com/feanmy/p/7676717.html locate命令搜索的后台数据库路径:/var/lib/mlocate/mlocate.db ls -hl /var/lib/mlocate total 1.2M -rw-r----- 1 root slocate 1.2M Oct 16 14:36 mlocate.db 更新数据库使用updatedb,配置文件为

  • linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法

    出现这个问题可能有以下几种原因: 1.对该文件没有执行的权限. 2.我们的机器是64位的,而下载的jdk是32位的. 我就是后一种原因造成的,好久才想明白. 以上这篇linux上配置jdk时,java命令提示没有此文件或文件夹的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 手把手教你把nodejs部署到linux上跑出hello world

    从事前端一年多了对于 linux 服务部署一直是一无所知, 知道前段时间萌发了个想法, 我怎么能像运维的同学一样把自己的代码放到一个 linux 的服务器上. 于是便开始了踩坑之旅, 这里顺便记录下. ps: 本文中需要下载的文件包括: VMware 下载 linux nodejs xshell 文件较大, 大家在上车动手之前可以先准备好下载文件在搞起来. 反正我是打了好几局 LOL 才下载完的. 首先安装 VMware 1. 下载 VMware 因为我们没有在 linux 上编程的必要(除非你

  • linux上免安装版MySQL5.7.18的教程详解

    1. 下载mysql 从官网下载mysql的压缩包    mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2 把下载的包上传到linux上,先安装下依赖包:Ubuntu用 apt-get install libaio*    centOS用yum install libaio* 3 用tar -xzvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 解压 改名并移动到/usr/local  下:mv mysql-5.7.1

  • 在Linux上安装Python的Flask框架和创建第一个app实例的教程

    无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会.回到大学我希望他们教我的是Python而不是Java,这学起来很有趣且在实际的应用如yum包管理器中很有用. 本篇教程中我会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函数.模块.HTML/CSS (基础). 学习这篇教程你不必是一个python高级开发者,但是首先我建议你阅读http

随机推荐