【问题标题】:Open Source Application Server Solution开源应用服务器解决方案
【发布时间】:2013-04-18 21:28:58
【问题描述】:

一个具有以下技术和组件的项目已经浮出水面:建立一个最初由 UbuntuJDKJBoss 组成的 Web 堆栈解决方案, Spring MVC 3.0+ 和 MySQL

在规划这个项目时,我一直在努力寻找第一步最佳实践顺序的以下问题的答案:

1) JDK(和 JBoss)是否需要安装为“root”? (我看过一些文章提到,除非由于致命后果而绝对必要,否则以 root 操作不是一个好主意。)

2) Ubuntu 是否需要安装为服务器 才能完成所有这些操作,还是也可以安装为桌面? strong> 我无法确定是否需要在 Linux 之上安装 JBoss 和 MySQL 作为服务器。

3) 是否需要在 Spring STS 中使用 Maven 才能使 JBoss 和 MySQL(以及未来的 Hibernate)成功地协同工作?

4) 我的意图是按以下顺序进行安装:a) Ubuntu -> b) Java -> c) JBoss -> d) Spring STS -> 和e) MySQL。这个序列有什么明显的冲突吗?

【问题讨论】:

    标签: mysql ubuntu spring-mvc jboss java


    【解决方案1】:

    JBoss 在执行任何操作之前都需要 Java(推荐 Java 7)。我不认为它真的“安装”了,而只是解压到某个目录(即使你从包管理器安装,它只是真的解压了自己)。我质疑您对 Spring 的需求,因为 JBoss 和 Java EE 通常确实可以完成 Spring 所做的一切,而且现在更好。除非您对 Spring 有特定要求,否则我会质疑这种额外的依赖关系。

    对于 linux - 在高层次上,任何操作系统都可以是“服务器”,它所需要的只是能够提供服务(网页、ssh 连接等)。在 M$ 世界中,操作系统的不同“级别”是根据预期的任务/工作量专门设计的。例如,虽然 Windows 7 确实可以作为服务器运行,但它不是为它设计的,因此可能没有优化或包含帮助实用程序和工具,以使系统管理员的生活更轻松。另一方面,Windows Server 确实包含所有“普通”服务器工具和许多好东西,使维护和设置服务器更容易。

    在 linux 领域,这不是这样的事情。 Linux 是与裸机等来回交流的内核……发行版制造商将采用它并围绕内核构建操作系统,基本上只是附加他们认为发行版需要的任何软件包……例如 wget,或cat 或任何其他标准用户级应用程序,以及一些非标准的应用程序,例如 mysql 或 java 或任何他们想要的。

    现在,一些 linux 发行版将自己定制为“服务器”就绪,而另一些则将自己定制为桌面操作系统。区别?它实际上只是分发制造商决定包含或不包含的任何默认包。例如,绝大多数 linux 服务器都是完全无头运行的,因此绝对没有理由在该系统上安装和/或运行 X11 和庞大的 GUI 环境......这是没有意义的。此外,“普通 joe”用户不需要在他的桌面系统上默认安装 MySQL,因为它只会使他的系统膨胀,而且他可能永远不会使用它。

    所以基本上它归结为默认安装的软件包。

    一些 Linux 服务器发行版更进一步,在以稳定性和安全性为名进行更新、补丁或新版本时格外小心,而另一方面,大多数桌面发行版的更新更加随意,因为如果它破坏了家庭用户的网络浏览器,这可能不是什么大问题......但如果服务器更新破坏了网络服务器应用程序堆栈,那么现在这是一个严重的问题。

    因此,您会发现像 CentOS(基于上游 RHEL)这样的服务器操作系统在引入桌面操作系统早期获得的“最新和最棒”的功能方面非常缓慢。他们的目标是高安全性和长期稳定性。

    现在,对于 Ubuntu。虽然我确定很多人将 Ubuntu 作为他们的服务器操作系统选择(部分原因是亚马逊选择 Ubuntu 作为他们 ECS 云的默认 linux VM),但我真的会质疑这一点。 Ubuntu 并不专注于成为服务器。它专注于成为一个伟大的全方位桌面操作系统。是的,LTS 版本旨在实现长期稳定性,但它基于桌面操作系统,所以它仍然不是重点。

    恕我直言,我会选择 CentOS,因为它是免费且完全兼容二进制的 RHEL 版本——而 RHEL 是企业级 Linux 服务器的事实标准。但请注意,RHEL 的处理方式与 debian 方式有点不同——因此没有apt-get,您必须改用yum install。启动脚本不一样,有些做事的方式也不一样,但说真的,一旦你知道了linux,你knowlinux。

    编辑:还要检查 Jenkins - 它是一个免费的开源持续集成系统,可在 JBoss 或 Tomcat 或任何其他容器上运行,并且可以自动从存储库(github、git、svn 等)中提取代码并编译/打包然后将其推送到实时部署。您可以设置 ANT 或 Maven 构建脚本,它可以按计划启动,也可以按照您的配置启动。

    编辑编辑:我还建议使用 OpenJDK——因为它可能包含在您的包管理器中(几乎适用于每个 disto),并且如果它也在您的包管理器中,它将比 oracle 版本更新。我发现大多数“服务器”发行版都会有 OpenJDK 7,而他们的包管理器中只有 Oracle java 6。此外,通过包管理器安装它可以让您更轻松地保持更新。

    【讨论】:

    • 谢谢 SnakeDoc。这是关于服务器方面的有趣见解,以及需要真正考虑的项目。你在这里提供的东西是有道理的。关于 Spring,这个项目需要它——我主要熟悉环境的 Eclipse ish 方面。包括 Spring 似乎增加了一个额外的学习曲线组件;对未来的想法是它会让事情变得更容易。我不是作为专家这么说的,只是从所谓的专家那里听到的。
    • 嗯...我自己从未使用过 Spring,而且我是 Java EE 的新手(我做了很多 Java 开发,只是不是面向 EE),但从我听到/收集到的,在 Java EE 非常糟糕的时代,Spring 最初的目的是替代 Java EE。从那时起,Java EE 已经取得了长足的进步,Oracle 自己的容器 (GlassFish) 包含了大部分默认的 Java EE 功能。 JBoss 只是同一 Java EE 框架的不同实现。 Java EE 是一个标准,但实施取决于供应商(JBoss 的情况下是 Red Hat)。
    • 不过,我可能在 Spring 上遥遥无期,所以我会在这方面做一些功课,然后才相信别人的话。如果它真的有任何帮助,那就去吧。 ***从更多依赖的心态说==更麻烦
    • 当您提到 Java EE 时,我试图想象实际上是什么将所有组件组合在一起,比如说,一个框架,如果您愿意的话? (因为缺乏更好的/未知的术语。)
    • 是的...Java EE 是一件很难理解的事情。 Java EE 是一些管理机构提出的标准,但它们没有指定如何实现/创建框架,它们只指定它必须做什么以及能够做什么才能被视为完整的 Java EE 实现。因此,这使得供应商能够提出自己的竞争 Java EE 框架,例如 JBoss 或 GlassFish(还有很多其他选择)。您的 Java EE 代码需要 Java EE 环境才能执行。这就是应用服务器的用武之地——
    【解决方案2】:
    1. 以 root 身份安装,为什么不呢?以 root 身份运行,可能不是一个好主意。
    2. 如果您需要桌面,请安装桌面发行版。如果你想要一个服务器,安装一个服务器分发。这不会改变操作系统中可以运行和不能运行的内容。它只会更改默认安装的内容。
    3. Maven 是一个构建工具。 JBoss 并不关心您如何构建您的应用程序。它只关心您部署的应用程序是否是有效的 Java EE 应用程序。
    4. 没有。你需要一个操作系统,所以 Ubuntu 必须是第一位的。 JBoss 和 (AFAIK) Spring STS 需要 JRE 才能运行,因为它们是 Java 应用程序,因此应该在它们之前安装 Java。 MySQL 独立于 JBoss、STS 和 Java,因此您可以随时安装。

    请注意,如果您只是在这个安装部分上苦苦挣扎,请准备好忍受其余部分。构建 Java EE Web 应用程序并非小菜一碟,您可能应该找一些有经验的开发人员来帮助您,因为您似乎才刚刚开始使用 Java。

    【讨论】:

    • 谢谢 JB Nizet。我很感激你的回复。有人告诉我这可能需要一段时间,但也有人告诉我这不是“火箭科学”。信心低落,但雄心壮志和士气高涨。我只需要专注和实现。是什么让这变得如此具有挑战性?是否需要大量自定义代码?我在网上搜索,并意识到它不是很明确。谦虚点,大卫。
    • 这不是火箭科学,但需要大量的时间、耐心、尝试和错误来学习所有部分并选择正确的路径:HTTP、HTML、CSS、JavaScript、Java、 OO 设计、Servlet、JSP、Spring MVC、依赖注入、Java EE 应用程序结构、EJB、JPA、JPQL、JBoss 配置、SQL、数据库设计、测试和模拟框架。如果您还不了解它们,您将需要学习所有这些。祝你好运:这是一段漫长而有趣的旅程。
    • 看来我会很忙。我需要一些石头和弹弓。这是我生命中的新歌利亚。谢谢 JB Nizet。
    • 以 Root 身份运行并不是“可能不是一个好主意”——这是一个非常糟糕的主意。不要在服务器上以 root 身份运行任何东西!尤其是面向公共互联网的服务器,尤其是在面向公共互联网的应用程序(例如您的 JBoss 最终将成为)上翻倍。这只是要求有人 pwn 你的系统!他们会的!
    • @SnakeDoc:同意。这有点轻描淡写。 OTOH,我认为问题是开发机器(因为安装了 STS)。仍然不是一个好主意,但不如在生产机器上那么糟糕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多