运行 使用 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"
.
下
将 conf
和 lib
目录放在 classpath 上。
Play 的 bootstrap class 是 play.core.server.NettyServer
.
这是我项目中的一个工作示例。首先,您需要使用命令 "activator dist" 准备您的项目。它制作独立版本并将其压缩为.ZIP 文件。
- 在项目目录下运行"activator dist"
- 如果命令成功完成 - 查看将位于的路径
.zip 文件与您的项目。
- 将文件从 .zip 解压到目录中(例如 /var/www/yourproject)。
- 创建 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"
}
]
}
- 运行 您的项目使用命令 "pm2 start /path/to/json/file/yourapp.json"
就这些了。
我们一直在我们的 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"
.
下
将 conf
和 lib
目录放在 classpath 上。
Play 的 bootstrap class 是 play.core.server.NettyServer
.
这是我项目中的一个工作示例。首先,您需要使用命令 "activator dist" 准备您的项目。它制作独立版本并将其压缩为.ZIP 文件。
- 在项目目录下运行"activator dist"
- 如果命令成功完成 - 查看将位于的路径 .zip 文件与您的项目。
- 将文件从 .zip 解压到目录中(例如 /var/www/yourproject)。
- 创建 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" } ] }
- 运行 您的项目使用命令 "pm2 start /path/to/json/file/yourapp.json"
就这些了。