我可以将 DigitalOcean 上的 JSP 个页面与 LEMP 一起使用吗?

Can I use JSP pages on DigitalOcean with LEMP?

我一直在寻找网络托管服务有一段时间了,以便与我目前在大学勤工俭学中学习的内容一起学习。我倾向于 DigitalOcean,因为它们相对便宜并且目前是学生促销活动的一部分。目前,我们已经了解 Java/JSP 网络开发,并被鼓励研究 Java 网络服务。我认为在学习的同时编写一个教程网站来巩固概念是个好主意。

但是,根据我这里的 read/seen,JSP 需要安装 Tomcat。它也需要 Apache 吗?此外,我注意到 DigitalOcean 同时提供 LAMP 和 LEMP 作为 "one-click installs"。是否可以将 JSP 页面与 LEMP 一起使用(因为我还读到 LEMP 是 faster/better 而不是 LAMP)?或者我会被迫使用 LAMP?

最后,如果我可以使用 LEMP,我需要做什么才能使用 JSP?

如果我需要添加任何其他内容、清理某些内容等,请告诉我

谢谢!

双重任务

Apache Tomcat’s raison d’être is to be a state-of-the-art Servlet/JSP "container" (engine). Tomcat also comes with a very good web server 实施。

Tomcat确实是多个组件的集成,包括:

Jetty from Eclipse 是 Tomcat 的流行等价物。两者都是出色的经久耐用的产品。 "Jetty" 可能是 "Tomcat" 的同义词,贯穿我在这里的整个回答。

对于不寻常或极端的需求,有些人选择使用 Apache HTTP Server as their web server with Tomcat running "behind". In this scenario Tomcat is used only for its Servlet/JSP container 服务。前端 Web 服务器处理对静态资源(.html 页面、图像等)的请求,同时传递带有针对 Servlet 和 JSPs 的 URL 的请求。对于大多数人的大多数项目来说,这个前端 Web 服务器是不必要的复杂化。

# Java 企业版

Tomcat & Jetty 仅提供 Servlet 和 JSP 作为 Java Enterprise Edition technology that extends Java Standard Edition 的一个窄子集。对于像我这样的许多人来说,Java SE + Tomcat/Jetty 就是我们构建和 运行 网络应用程序所需的全部。

您可以将一些单独的 Java EE 技术作为 .jar 库文件添加到您的应用程序中。或者,您可以升级到 TomEE, WildFly, Glassfish,而不是 Tomcat/Jetty,或者其他已经捆绑了这些额外库的 Java EE 服务器。所有这些 Java 产品都可以作​​为 Web 服务器独立运行。

端口 80

使用 Tomcat 或任何此类 Java 产品作为 Web 服务器的唯一问题是 Web 的默认端口 80。低编号端口在类 Unix 中出于安全考虑受到限制 OS是的。这就是为什么 Tomcat 默认为 8080 端口。因为 Java 是为了安全而构建的,所以 Java 应用程序很难以优雅的方式获取端口 80。

通常的解决方案是Port-Forwarding。将基于 Java 的 Web 服务器保持在高编号端口上,同时 OS 中的网络工具将传入请求转换为使用备用端口。

例如,使用现已过时的 ipfw 工具:

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

不需要LAMP/LEMP

至于LAMP/LEMP系列产品,专注于Servlet/JSP工作就没有必要了。

L 用于 Linux。没关系。但是请注意,世界上的 DigitalOcean now offers FreeBSD as well as Linux, discussed here and here. BSD has a reputation for rock-solid reliability and attention to security. Much of the technical underpinnings of Mac OS X and iOS are built on BSD, making BSD the highest-volume Unix-like OS.

AE分别指Apache HTTP Server和Nginx。如上所述,很少需要这些 Web 服务器,因为 Tomcat 自己的 Web 服务器非常适合除最大或最复杂的项目之外的所有项目。

M是MySQL,流行的数据库。我个人强烈建议使用纯 Java.

内置的 Postgres if you need a heavy-duty enterprise-quality relational SQL and/or a "NoSQL"/JSON/semi-structured database server. Or to start with something lighter and simpler, try the H2 Database Engine

PPHP, a language and toolkit for building dynamic pages. No need for this, as Servlet/JSP technology serves the same purpose while being more advanced and sophisticated, including much more powerful multi-threading capabilities not to mention the many excellent Java libraries such as Joda-Time & java.time

我的经历

这些年来我设置了多个网络服务器,用于静态服务或网络应用程序(通常是 Vaadin 应用程序)。我简单地使用:

  • Mac OS X
  • JavaSE(标准版)
  • Tomcat

我发现它可靠、快速且易于管理。

对于某些项目,我使用 colo such as MacMiniVault.com。 Mac mini 具有 16 GB 内存和 1 TB 存储空间,每月价格为 30-50 美元,这可能比使用 DigitalOcean 等云服务器更划算,尽管硬件可能不如 reliable/enterprise-quality 作为 DigitalOcean 的底层硬件。但这只有在您全职需要大量内存、内核或流量时才有意义。当只是学习和试验时,像 DigitalOcean 这样的按小时付费的虚拟服务器是最佳选择。

我希望 DigitalOcean 是一个很好的入门方式。 [看到我在那里做了什么吗?]