我的笔记本电脑上有一个Play应用程序,我试图在我的生产服务器上运行。在本地,应用程序编译并正常工作。
在我的生产服务器上,我执行以下操作:
root@example:~/mysite# ./activator
[info] Loading project definition from home/mysite/project
[info] Set current project to mysite (in build file:/home/mysite/)
[mysite] $ ~run
--- (Running the application, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
(Server started, use Ctrl+D to stop and go back to the console...)
[info] Compiling 4 Scala sources and 2 Java sources to /home/mysite/target/scala-2.11/classes...
[info] 'compiler-interface' not yet compiled for Scala 2.11.1. Compiling...
Killed
root@example:~/mysite#
正如您所看到的,`compiler-interface'尚未编译。我想知道为什么会这样。这是因为我没有安装Scala编译器吗?
答案 0 :(得分:5)
可能Killed
部分是因为您没有足够的内存来编译您的应用程序。
无论哪种方式,我认为部署已编译的应用程序比在现场编译它更好。您可以使用./activator dist
。
这将在名为YOUR_PROJECT_DIR/target/universal
的{{1}}中生成一个zip文件,其中包含已编译的所有内容,并且已经打包了所有必需的依赖项。然后,您可以将此文件上载到生产服务器中的某个位置,将其解压缩,然后使用
YOUR-PROJECT-NAME-VERSION.zip
如果您仍想在生产服务器中构建它,请尝试使用
减少激活器使用的内存$ EXTRACTED_FOLDER/bin/YOUR-APP-NAME
请注意$ ./activator -mem 200 # MAX 200mb
// (...)
[PROJECT-NAME] ~start
将以开发模式启动您的服务器(即错误时可显示堆栈跟踪等合理信息)并在更改时重新编译它,因此您可能希望使用~run
或{{ 1}}而不是。