在 UNIX 中安装和配置开发 Web 服务器
开始之前
了解本教程中包含的内容以及如何最好地利用本教程。
关于本教程
您希望(或需要)安装功能齐全的应用程序服务器来开发、测试、部署和优化 Java™ 2 Platform, Enterprise Edition (J2EE™) 应用程序?或者,也许您只是希望了解一些新知识,因此您决定建立自己的应用程序服务器环境。您将从哪里开始着手?
无论您的动机如何,如果您在阅读本教程,您很可能熟悉有关网站如何工作的基础知识,以及从浏览器访问应用程序可能需要什么最低公共标准(域、代码、Web 浏览器、数据库,等等)。只要您掌握了基础知识,具有对 Web 或应用程序服务器的需要,能够访问 Unix 服务器,并且渴望了解有关 Web 服务器管理的点滴,那么本教程就是为您准备的。
目标
在本教程中,您将了解:
有关 Apache Tomcat 和 UNIX 的介绍,以及让您开始起步所需要的知识。
企业与独立 Web 体系结构之比较。
如何从头设置 UNIX 服务器,以便为 Web 或应用程序服务器的安装做好准备。
有关如何安装和启动 Tomcat Web 服务器的详细、循序渐进的说明。
有关设置 Tomcat Web Application Manager 访问的信息。
用于部署示例应用程序的说明。
其他资源。
先决条件
本教程假设您已经安装了所选择的基本 UNIX 操作系统。要运行本教程中的示例,您还必须安装并运行 Tomcat 版本 6。
系统要求
服务器应该至少有 10GB 的可用硬盘空间和最低 512MB 的内存。在开始之前,您需要在 UNIX 服务器上安装以下附加工具:
Web 浏览器:任何浏览器都行。
Java 2 Standard Edition Runtime Environment (JRE) 5.0 发布版或更新版本:Apache Tomcat 版本 6 需要该 JRE。
C 编译器:遗憾的是,诸如 Solaris 和 IBM® AIX® 等主流的 UNIX 版本没有附带这样的编译器。有关更多信息,请参阅参考资料中指向 GNU GCC 文章的链接。
文件提取工具:在您的服务器上,您很可能需要 gunzip、tar、bzcat,并且可能需要 GNU make 和 tar(gmake、gtar——可从 GNU 站点下载),以正确地提取文件。
要检查服务器上已经有哪些工具在运行,可以运行以下命令:
cd /usr
Find . –name *.tar (repeat for *make, *zip, etc.)
Tomcat 代码:在继续之前,您需要从 Apache 下载站点下载 Tomcat 版本 6 的代码。将 tar.gz 文件保存到您的服务器。
Tomcat 与 UNIX
本教程的目的不是为您提供与 Tomcat 相关的所有内容的权威指南,而是让您迅速奠定有关独立开发或测试服务器环境的扎实知识基础。当您具备这样的基础时,如果乐意的话,可以将其扩展到全面的企业环境。
为什么使用 Tomcat?
为什么应该使用 Tomcat 而不是使用诸如 Jboss、Geronimo 或 WebSphere Application Server Express 等备选方案呢?
Tomcat 版本 6 本身是一个轻量级的解决方案。它没有附带所有的 Java Platform, Enterprise Edition (Java EE) 功能以及可在 Jboss、Geronimo 和 IBM WebSphere® Application Server Express 中找到的附加软件包,但它也不需要多少内存,即使在较小的服务器上也运行得非常快速。此外,它还是免费可用的。
Tomcat 是一个 JavaServer™ Pages (JSP)/Servlet 容器,仅支持基本的 Java 应用程序服务器功能。它缺乏可伸缩性和 Java EE 版本 5 遵从性,这就是很少在生产环境中使用它的原因。
如果您希望在企业环境中使用新服务器,更显而易见的 UNIX 版本是 AIX 和 Solaris。事实上,Solaris 拥有最高的企业市场份额百分比。其他 UNIX 选择包括 FreeBSD 和 Mac OS X。
Tomcat 的 UNIX 和 Windows® 安装
可以在 Windows 计算机上运行本教程中的示例。在经过多年仅迎合 UNIX 以后,Apache 社区通过为 Windows 平台进行开发而实现了此功能。然而,取决于您所查对的统计数据,90% 以上的 Web 服务器体系结构解决方案中都使用了 Apache Web 服务器和后续产品。长话短说,UNIX 提供了纯多用户操作系统的稳定性、安全性和简单性,这是 Windows Server® 操作系统所无法比拟的。
话虽这样说,但是如果您决定使用 Windows,您应该在继续之前注意 UNIX 与 Windows 之间的 Tomcat 设置所存在的一些区别:
在 UNIX 服务器上提取初始安装文件可能需要 bzcat、gunzip 和 tar 或 gtar。Windows 服务器计算机通常使用 WinZip 或类似的实用工具。
UNIX 服务器上的 PATH 设置更加明显。Windows 仍然使用 path 语句,但大部分设置是在幕后或在安装软件时自动完成的。
UNIX 设置和配置中的权限注意事项更为重要。UNIX 服务器的卓越安全强度也是问题的一个最大根源:权限问题。在初始安装软件时,您需要正确的权限才能将软件写入到基本操作系统的文件系统——/var、/tmp,等等。此外,在将各种内部和外部软件组件连接到 UNIX 服务器时,始终要注意权限注意事项。始终要考虑到 ID、组和正确的访问权限。
在 Windows 中,安装是基于图形用户界面 (GUI) 的,而 UNIX 传统地使用命令行界面 (CLI)。这种情况随着 Gnome 和其他图形环境的推出而有所改变,包括日益流行的 Mac OS X 版本 10.5 Leopard。然而,纯粹主义者始终钟情于 CLI。此外,CLI 也是最好的学习方式。
Windows 使用 .bat 文件表示自动化的批处理过程,使用 .exe 文件表示可执行文件。UNIX 缺省使用 .sh 或 .ksh 文件扩展名表示可执行脚本等等。.sh 或 .ksh 格式取决于您使用哪一种 Shell。
Tomcat 版本
面对每个版本中包括的众多修补程序、调整、新功能或执行旧任务的新方法,有时很难决定应该选择使用哪一个软件版本。在 Tomcat 中,您将面对同样的问题。我建议您考虑表 1 中的详细信息,以使您的管理服务器与用于对正在部署的应用程序进行编码的 J2EE 规范相匹配。
表 1. 与 Tomcat 版本相关的 JSP 规范
JSP 规范Tomcat 版本2.5/2.16.0.x2.4/2.05.5.x2.3/1.24.1.x2.2/1.13.3.x(已存档)
另一种决定软件版本的不那么技术性的方法,是坚持使用您希望使用的软件的最新稳定版本。通常,您将获得所有的最新安全修补程序和功能。
体系结构概述
了解 Tomcat 的局限性以及典型的企业环境是如何设置的。
局限性
您的 Tomcat 安装是否需要是纯开发环境中的单一服务器?这不是非常有限制性吗?是的,事实上就是这样!Tomcat 实际上已被下载了数百万次,并成功地在生产环境中运行着许多著名的网站。然而,它具有其局限性。
可以使用商业软件产品——特别是 IBM WebSphere Application Server,主要是由于它们完全的 J2EE 遵从性、附加的功能和安全性,它们对生产环境来说远远更加优异。如果您希望在全功能的生产环境中实现 Tomcat,您仍然可以使用本教程来奠定基础。
企业环境
如图 1 所示的企业体系结构,差不多就是当您在浏览器中按下 Enter 键时,可能在幕后看到的内容的精确描述。该体系结构由重复的元素包组成,我看到这些元素正在为众多的客户工作着,包括 IBM 和美国空军的价值数百万美元的任务关键型应用程序。下面几个部分将详述图 1 中的每个方面。
图 1. 示例企业体系结构
A. 网络保护措施
通常,您的网络拥有相应的保护措施——路由器或防火墙,然后是代理服务器(明确地说是反向代理),它们使 Web 请求与适当的域匹配。甚至在请求到达可能由安全隔离区域(demilitarized zone,DMZ)保护的网络中的第一台服务器之前,前端 IBM Tivoli® Access Manager (TAM)/TAM WebSEAL 服务器上就可能已经存在某种级别的身份验证甚至授权。
B. Web 服务器
接下来是 Web 服务器。请注意,所有这些服务器都可能具有垂直和 水平故障转移功能,这意味着在每个级别被克隆(甚至可能在软件级别重复)的单独硬件。当 Web 服务器传递 Web 请求并执行其提供静态内容的职责时,您可能还有另一层执行附加路由的网络分配器(network dispatcher,ND),或者至少也是某个插件(例如 IBM HTTP Server [IHS] 插件)。
C. 应用程序服务器(Servlet 引擎)
现在您已经有了 J2EE 引擎 (WebSphere Application Server),它很可能包括 Web 或 Servlet 容器以及 Enterprise JavaBean (EJB) 容器,以处理基本和高级的 Java 功能及业务逻辑。您可能采用多个适配器来做许多事情,包括连接 Web 服务和 IBM WebSphere MQ 消息。而且,您多半拥有一个连接到 MySQL、IBM DB2® 或 Oracle 后端的数据库连接池。
当您与到轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)服务器甚至遗留服务器的潜在连接结为一体时,您就拥有了真正的 N 层体系结构。下面,参考一个入门级 Web 服务器环境。
开发环境
查看图 2,并假设它基于某个单一 UNIX 操作系统上的单一服务器安装,该操作系统具有某些通过浏览器访问 Internet 的途径。该服务器将包含您的 Tomcat 安装、各种操作系统级别的工具,以及(可能)您自己的本地数据库,或者至少包括保存在本地存储库(本地目录结构)中的软件和应用程序代码。
注意:当我提到 Tomcat 服务器 时,我指的是整个容器。
图 2. 示例独立服务器体系结构
虽然这一点也不像真正的企业体系结构,但是您至少能够从自己的服务器中重复基本的应用程序功能。这个服务器的功能将会有很多的限制,但是无论从哪点看,您都是将此安装视为一个示例测试开发服务器,或者如果您是管理员的话,则只是将其视为用于在其中进行试验的服务器。
您可以选择与 Tomcat 安装一起设置和运行单独的 Apache HTTP Server 前端,但是就本教程而言,并不演示此操作方法,因为这样需要更多的开销和更多的管理和设置工作。您还需要 mod_jk 模块,您将必须设置正确的路由,等等。
无论采用哪种方式,下面让我们在继续进行安装和配置之前,首先讨论一些常见问题。
准备服务器
通过配置变量、编辑配置文件、创建用户等来准备您的服务器。
设置路径
除了必须在服务器上安装的工具以外,您需要正确设置 Shell 的所有 PATH 变量设置。PATH 变量告诉 Shell 在何处寻找某些软件安装、工具等等。
JAVA_HOME
首先,您必须根据该版本中包括的说明来安装 JRE。我通常选择使用完整的 Java 软件开发工具包 (JDK) 而不只是 JRE。如果您也是这样,可以将 JAVA_HOME 环境变量设置为您安装 JDK 的目录的路径名称(例如,/usr/local/java/j2sdk5.0)。可以使用以下代码来设置 JAVA_HOME 变量:
bash-3.00# export JAVA_HOME=/usr/jdk/instances/jdk1.5.0
您还可以运行:
JAVA_HOME=/usr/bin/java; export JAVA_HOME'
(实际上不存在区别)。
输入 echo 命令以复查上述命令已生效:
bash-3.00# echo $JAVA_HOME/usr/jdk/instances/jdk1.5.0
CATALINA_HOME(Tomcat 的缺省主目录)
CATALINA_HOME 用于引用发布版本目录的完整路径名称。可以使用以下代码在您的服务器上设置此变量:
bash-3.00# export CATALINA_HOME=/opt/apache-tomcat-6.0.16
此代码特定地与已安装的 Tomcat 版本相关。如有疑问,可以按照您提取的 .tar 文件进行命名,因为您提取的 .tar 文件的名称中携带有正确的版本号。
在您的用户身份下编辑 Shell 和配置文件
您也许注意到了,我在命令示例中有几次引用了 Bash。长话短说,登录 UNIX 的用户在服务器上运行 Shell,以执行允许他们导航和管理服务器的 CLI。这与其他操作系统并没有什么不同,只不过更加灵活,因为您可以通过输入某个内容来定义该 Shell,例如 Bourne Shell (sh) 或 Bourne-again Shell (bash)。
此外,取决于您使用的 Shell,您可以编辑 CLI 的自定义 Shell 配置文件,以自动设置 PATH 变量,甚至设置别名字符来表示服务器上有用的常用命令。为此,可以编辑 .bashrc、.profile(Bash Shell 下的缺省配置文件)等等。可以使用 vi 编辑器来创建此文件,然后在您的 root、个人或特定于 Tomcat 的用户 ID 下适当地编辑该文件,以确保在您每次登录服务器时设置 PATH 变量。
在您的主目录下,使用标准 UNIX 编辑器 vi 创建 .profile 文件(如清单 1 所示)——如果该文件还不存在的话。
清单 1. 使用标准 UNIX 编辑器创建 .profile
cd ~/ (home dir)vi .profile
输入 i(表示进入“插入模式),然后添加您在上面设置的每个路径。一个示例可能类似如下所示:
# /bin/shstty istripPATH=$PATH:/usr/bin:/usr/local/bin:/usr/ucb:/etcexport PATHumask 077export SHELL=/usr/bin/kshexport ENV=$HOME/.kshrcexport EDITOR=viexport FCEDIT=vi#Tomcat specific PATHsexport JAVA_HOME=/usr/jdk/instances/jdk1.5.0export CATALINA_HOME=/opt/apache-tomcat-6.0.16
这还可能是添加附加 PATH 变量的好时机,以便涵盖安装了将要引用的工具的所有领域。对于我的设置,我还需要创建以下两个路径:
bash-3.00# PATH=/usr/ccs/bin:$PATH; export PATH (for make cmd)bash-3.00# PATH=/usr/sfw/bin:$PATH; export PATH
用户与组
如果将有多个用户使用您的服务器,您肯定希望设置用户和组权限,以允许不同的用户访问不同的工具和文件系统。如果您将作为非 root 用户运行 Tomcat 安装(建议用于大多数生产环境),这也是必需的。我将在一个后续的教程中详细讨论此话题,下面是一些要考虑的命令。
要创建 Tomcat 组,可以使用清单 2 中的代码。
清单 2. 创建用于运行 Tomcat 的唯一组
/usr/sbin/groupadd -g {specific gid. Leave this blank and the OS will assign you a gid}{group name}IE./usr/sbin/groupadd -g 10004 tomcatgroup
要创建 Tomcat 用户,可以使用清单 3 中的代码。
清单 3. 创建用于运行 Tomcat 的唯一用户
/usr/sbin/useradd -d {user home directory} -g {user primary group} -u{specific UID. You can leave this blank, and the operating system will assign you a UID.)-s {default shell path for this user} -c "{Description of the user}" {username}ie./usr/sbin/useradd -d /export/home/tomcat -g tomcatgroup -u 10010 -s /bin/ksh -c"Main Tomcat Administrative User" tomcat
下载并提取服务器安装文件
了解用于提取服务器安装文件的各种方法。
查找和移动安装文件
如果您是在使用 GUI,可以通过选择 Launch > Applications > Utilities > Terminal 来打开一个终端窗口。如果您将该文件保存到桌面,并且您仍然是 root 用户,可以运行命令 cd /Desktop。运行 ls -ltr 以确定您的 Tomcat tar.gz 文件是否在那里。然后,将该文件移动到 /opt 目录下面(这是安装大多数新软件的地方)。要移动安装文件,可以输入以下命令:
mv *tar.gz /opt
然后,输入 ls ¨Cltr /opt 以确保该文件在那里。
设置权限
权限是 UNIX 系统的生命线。如果没有正确的权限,您将无法做任何事情;如果不将权限限制到某些事情,任何用户都可以做任何事情。这就是您必须首先授予自己对安装文件的较高级别的权限的原因,这样您(或另一个用户)才能正确地执行它。下一步,使用 umask 命令,如清单 4 所示,以确保您在提取安装代码时,能够将文件相应地写到所有的临时和安装目录。
清单 4. 设置正确的权限和 umask
cd /optchmod +x *gz (same as chmod 775)umask 007 (makes any new files your user creates to be created with a 770 permission.Think chmod in reverse)
提取安装文件
大多数代码包都以 .tar 文件的形式提供,并将其进一步压缩为 .gz 文件。gunzip 命令只是将代码包从第一层压缩中展开。
gunzip *.gz
提取 .tar 文件
最后,您必须对代码进行“untar(解压缩)。这样做将确切地按压缩代码的方式提取代码——目录和所有的文件。这就是务必在您需要安装代码的目录路径中解压缩文件的原因。在 UNIX 中,最佳的目录路径是 /opt。
tar -xvf *.tar
此命令提取应用程序文件。可以输入 ls -latr 命令来查看所提取的文件。如果由于某种原因,您的安装包附带有 .bat 或 .exe 文件,您可以通过输入以下命令来删除那些文件:
rm *.exerm *.bat
建立 Tomcat 目录以后,您可以继续配置、编译和启动该服务器。
配置、编译和启动
我使用过的所有 Apache 产品都包括用于配置、编译和启动该产品的步骤。此过程将让代码准备就绪,告诉软件如何安装和安装到何处,等等。
配置软件
要配置 Tomcat 软件,可以输入以下命令:
cd $CATALINA_HOME/bin./configure --with-java=/usr/java
或者:
export JAVA_HOME./configure
编译代码
配置 Tomcat 软件以后,就该编译它了。
构建二进制和库
清单 5 显示了用于构建 Tomcat 二进制和库的代码。
清单 5. 构建二进制和库
# gunzip jsvc.tar.gz# pwd/opt/apache-tomcat-6.0.16/bin# tar -xvf jsvc.tar# gmake
确保 gmake 的路径在您的 PATH 中(例如,./sfw/bin/)。
注意:Tomcat 站点规定,在 FreeBSD 系统上,您应该使用 GNU make (gmake)而不是本机 BSD make 命令。
清单 6 中的代码将生成可执行文件 .jsvc。该文件是成功地将 Tomcat 作为守护进程运行所必需的。
清单 6. 设置 jsvc 权限并复制
chmod 775 jsvccp jsvc ..cd ..
启动服务器
您可以从 CLI 或从某个 Java 程序中作为嵌入服务器启动该服务器。此外,该服务器可以作为守护进程运行,这样它将自动运行,类似于 Windows 环境中的服务设置。
运行基本启动脚本
清单 7 显示了 Tomcat 的基本启动脚本。
清单 7. 运行基本启动脚本
cd $CATALINA_HOME/bin./startup.shcd ../logs
检查 catalina.out 中的错误!如果您对此文件使用 cat、vi、more 或 less,可以输入 shift G 以转到文件底部。或者,您可以输入类似如下的命令:
tail -50 catalina.out
以检查文件最后 50 行的错误。
你还可以通过修改 Tomcat 代码或实现自己的 LifecycleListener 来自定义启动过程,不过这样做超出了本教程的范围。
运行启动守护进程
您可以使用各种各样的选项来启动该守护进程,例如使用 -user 来表示非 root 用户,使用 -pid 来指定 .pid 文件位置,以及使用 -errfile 和 -outfile 来分别指定错误和输出文件日志。有关完整的选项列表,可以找到您的 jsvc 进程,并输入 ./jsvc -help。清单 8 显示了 jsvc 启动脚本的示例。
清单 8. 示例 jsvc 启动脚本
Bash#./jsvc –home /usr/jdk/instances/jdk1.5.0–Dcatalina.home=/opt/apache-tomcat-6.0.16-cp ./bin/bootstrap.jar -outfile ./logs/catalina.out-errfile ./logs/catalina.err org.apache.catalina.startup.Bootstrap
使用 jsvc/bin 目录下面包括的 Tomcat.sh 脚本也是非常有用的。但是,您将需要编辑变量,以确保诸如路径等内容与您的环境匹配。
测试 Tomcat 安装
基本 Tomcat 安装将在端口 8080 上安装一个内部 HTTP 服务器——Coyote HTTP/1.1。对于此体系结构和设置,您不需要单独的 Apache HTTP Server。您可以将端口更改为更典型的 Web 服务器端口,例如 80,只需编辑 $CATALINA_HOME 目录树下的 server.xml 文件即可。您还可以将缺省安全套接字层(Secure Sockets Layer,SSL)端口更改为典型的 SSL 端口,即端口 443。server.xml 文件是 Tomcat 获取其大多数核心服务器配置信息的地方。
您可以通过访问 http://localhost:8080/ 来验证是否已成功启动 Tomcat。您应该看到与图 3 所示类似的启动页面。
图 3. 初始 Tomcat 管理控制台欢迎页面
设置 Tomcat Web Application Manager
Tomcat Web Application Manager 提供了许多功能来帮助管理您的 Web 应用程序。它允许您以多种方式部署和“取消部署Web 应用程序、列出应用程序、重新加载它们,甚至是停止和启动它们。
授予特定用户访问权限
要实现 Tomcat Web Application Manager,您必须首先在 tomcat-users.xml 文件中向某个特定的用户授予访问权限。为此,可以使用清单 9 中的代码。
清单 9. 通过添加用户和角色来授予对 Tomcat Web Application Manager 的访问权限
vi tomcat-users.xmlAdd these two lines below in between the two <tomcat-users> tags<tomcat-users><role rolename="manager"/><user username="tomcat1" passWord="test1234" roles="manager"/></tomcat-users>
只是以防您感到疑惑,上面的用户和密码完全是任意的。您不需要在自己的 UNIX 服务器上创建具有该密码的该用户,并且可以随心所欲地设置用户和密码。但是,您将使用该信息来登录到管理控制台中。
为了加强安全性,应该仅限该 tomcat-users.xml 文件的所有者有权访问该文件。为此,您必须将权限设置在 700 或以下——例如:
# chmod 600 tomcat-users.xml
重新启动 Tomcat 服务器
要使上述更改生效,您必须重新启动 Tomcat 服务器。为此,可以使用清单 10 中的代码。
清单 10. 重新启动 Tomcat 服务器
cd $CATALINA_HOME/bin./shutdown.sh./startup.sh ;tail -f ../logs/catalina.out
当您使用 tail 命令来查看 catalina.out 日志文件时,应该看到类似如下所示的内容:
May 15, 2008 4:08:12 PM org.apache.jk.server.JkMain startINFO: Jk running ID=0 time=0/74 config=nullMay 15, 2008 4:08:12 PM org.apache.catalina.startup.Catalina startINFO: Server startup in 6271 ms
打开 Tomcat Web Application Manager 控制台
返回到 Tomcat 管理控制台。单击左侧导航窗格的 Administration 部分中的 Tomcat Manager 链接。当成功时,您将看到类似图 4 所示的窗口。
图 4. Tomcat Web Application Manager 启动页面
Tomcat 还具有一个状态应用程序,该应用程序显示 Tomcat 服务器的状态,包括 JVM 的内存利用情况和线程数量。您可以通过单击 Tomcat Web Application Manger 右上角的 Server Status 来访问这个非常有用的工具。
安装示例应用程序
Tomcat 附带了一个示例应用程序。这当然不足以测试您的特定应用程序需要,但它将提供基本 JSP 应用程序和基本 Servlet 的功能测试。
查找 WAR 的位置
当您停止 Tomcat Web Application Manager 以部署您的应用程序时,您需要知道要搜索哪个目录以选择用于部署的 Web 存档 (WAR)。可以使用清单 11 中的代码来查找此文件。
清单 11. 查找用于部署的 WAR 文件
bash-3.00# cd $CATALINA_HOMEbash-3.00# find . -name *.war./webapps/docs/appdev/sample/sample.war./webapps/sample.war
打开 Tomcat Web Application Manager 控制台以部署服务器
在 Manager Application 下面,向下滚动到 Deploy 部分,如图 5 所示。
图 5. 示例应用程序部署
在 War file to deploy 下面,只需单击 Browse。使用您在上面找到的路径来选择该示例应用程序 WAR。单击 Open,然后单击 Deploy。实际上,部署该示例应用程序也就这么简单。
测试示例应用程序
在部署该应用程序之后,您可以通过访问 http://localhost:8080/sample/ 来确定它是否出现。这里,您可以单击 JSP,然后单击 Servlet,从而验证这些 Servlet 将出现,并且基本的应用程序功能存在,如图 6 所示。该服务器现在应该已经为您的应用程序准备就绪了。
图 6. 示例应用程序测试和验证页面
您应该知道,这只是验证了 Tomcat 服务器已正确安装,并且在按预期正常工作。要部署您的个人应用程序,您必须遵循有关在 Tomcat 服务器目录下的某些“上下文根下面进行打包和安装的 J2EE 指导原则。
总结
结束语
到目前为止,您应该能够在新的 Tomcat 服务器上顺利部署和测试您的动态 J2EE 应用程序了!但愿,您已经了解了常见的 Web 体系结构、如何在 UNIX 操作系统上安装和配置 Tomcat 开发服务器,并学习到了一些优秀的 UNIX 管理技巧。往后,各种可能性是无穷无尽的,还有大量的知识有待学习。
祝您好运!