运行 使用 pm2 玩 scala 应用程序

Run play scala application with pm2

我们一直在我们的 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 的罐子:

{
"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"
    }
]
}

尝试将命令行参数放在 "args".
下 将 conflib 目录放在 classpath 上。
Play 的 bootstrap class 是 play.core.server.NettyServer.

这是我项目中的一个工作示例。首先,您需要使用命令 "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"

就这些了。