【问题标题】:Run play scala application with pm2使用 pm2 运行 play scala 应用程序
【发布时间】:2017-01-18 00:39:57
【问题描述】:

我们一直在我们的 UNIX 服务器上部署 Play/Scala 应用程序,只需运行可执行文件,例如

java_opts="-Xms128M -Xmx512M" ./bin/myProject -Dconfig.file=/path/to/my/confFile.conf -Dhttp.port=9022 &

而且效果很好。然而,对于我的 NodeJS 应用程序,我使用 pm2,我非常欣赏它的易用性以及监控选项,因此我也希望将它用于其他应用程序。

This thread 声称可以运行 JAR。关于如何调整 conf(见下文)以使其与我的 Play/scala 应用程序一起使用以及是否可行的任何想法?

使用 pm2 运行 Jar:

{
"apps": [{
        "name": "JavaAgent",
        "cwd": "/usr/bin",
        "args": [
            "-Xmx256m",
            "-cp",
            "/app/somedirectorywhereagentresides:/some/directory/where/your/classes/lives",
            "your.main.class"
        ],
        "env": {
            "ANY_ENV_VARIABLE": "that you might need in your program"
        },
        "script": "java",
        "node_args": [],
        "log_date_format": "YYYY-MM-DD HH:mm Z",
        "exec_interpreter": "none",
        "exec_mode": "fork"
    }
]
}

【问题讨论】:

    标签: deployment jar playframework pm2


    【解决方案1】:

    这是我项目中的一个工作示例。首先,您需要使用命令“activator dist”准备您的项目。它制作独立版本并将其压缩为 .ZIP 文件。

    1. 在项目目录中运行“activator dist”
    2. 如果命令成功完成 - 查看将要定位的路径 .zip 文件与您的项目。
    3. 将文件从 .zip 解压到目录中(例如 /var/www/yourproject)。
    4. 创建 yourapp.json 文件并将以下代码放入此文件:
    {
        "apps": [{
                "name": "NameInPM2List",
                "cwd": "/path/to/your/project",
                "args": [
                    "-Duser.dir=/path/to/your/project",
                    "-Dhttp.address=127.0.0.1",
                    "-Dhttp.port=9000",
                    "-cp",
                    "/path/to/your/project/lib/*",
                    "play.core.server.ProdServerStart"
                ],
                "script": "/usr/bin/java",
                "node_args": [],
                "log_date_format": "YYYY-MM-DD HH:mm Z",
                "exec_interpreter": "none",
                "exec_mode": "fork"
            }
        ]
    }
    
    1. 使用命令“pm2 start /path/to/json/file/yourapp.json”运行您的项目

    就是这样。

    【讨论】:

      【解决方案2】:

      尝试将您的命令行参数放在"args" 下。
      将您的 conflib 目录放在类路径中。
      Play 的引导类是play.core.server.NettyServer

      【讨论】:

        猜你喜欢
        • 2019-10-27
        • 2018-01-26
        • 2015-07-06
        • 2018-06-03
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        相关资源
        最近更新 更多