Playframework 如何在同一端口上运行play framework中的多个应用程序

Playframework 如何在同一端口上运行play framework中的多个应用程序,playframework,Playframework,我是个新手。我正在使用Play 2.0.2,我希望在同一端口上运行多个Play应用程序 应该是 http://localhost:9000/Project1/(控制器)&http://localhost:9000/Project2/(控制器) 我发现,您可以在不同的端口上运行它,但在同一端口上运行它却没有发现任何问题 这可能吗?这不可能单独使用play,因为每个应用程序都在其自己的进程中运行,并且一次只能有一个进程监听一个端口。您可以做的是在端口9001和9002上运行play应用程序,然后在端

我是个新手。我正在使用Play 2.0.2,我希望在同一端口上运行多个Play应用程序

应该是
http://localhost:9000/Project1/(控制器)
&
http://localhost:9000/Project2/(控制器)

我发现,您可以在不同的端口上运行它,但在同一端口上运行它却没有发现任何问题


这可能吗?

这不可能单独使用play,因为每个应用程序都在其自己的进程中运行,并且一次只能有一个进程监听一个端口。您可以做的是在端口9001和9002上运行play应用程序,然后在端口9000上运行nginx之类的服务器,并将其配置为将不同URL的请求路由到play应用程序

请参见此示例: 与您的情况唯一不同的是,您将有一个
server{…}
块,其中包含两个
location
块。它看起来像:

upstream play1 {
      server localhost:9001;
}

upstream play2  {
      server localhost:9002;
}

server {
    listen       localhost:9000;
    server_name  www.example.com;

    access_log  /var/log/nginx/log/www.example.access.log  main;
    error_log  /var/log/nginx/log/www.example.error.log;
    root   /usr/share/nginx/html;
    index  index.html index.htm;

    ## send requests to play1 ##
    location /Project1/ {
        proxy_pass  http://play1;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    ## send requests to play2 ##
    location /Project2/ {
        proxy_pass  http://play2;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

不能在同一端口上运行两个应用程序,这不仅仅是Play的问题

用于代理应用程序。如果您必须只运行java应用程序,那么如果您还需要使用PHP系统(取决于您可以使用的Apache特定功能),这将是一个不错的选择

通常:您需要将服务器设置为侦听端口80,然后使用一些伪域(如
2)为每个应用程序添加一个服务器块(Apache中的虚拟主机)http://app1.loc
http://app2.loc
等将它们添加到您的
主机
文件中,以使它们在您的系统中可用。接下来,将每个服务器块配置为不同端口(nginx)上应用程序的代理:

然后在端口9021启动第一个应用程序

每次使用其他端口时,对其他应用程序执行相同的操作

最后,为了确保始终在所需的端口9021上运行app1,请编写一个bash脚本(或windows中的bat文件),该脚本将始终以相同的设置运行app1,即
run.sh

#!/bin/bash
play "~run 9021";

如果您计划在同一台服务器上托管多个应用程序,或者为实现可伸缩性或容错性而对应用程序的多个实例进行负载平衡,则可以使用前端HTTP服务器。
请注意,使用前端HTTP服务器永远不会比直接使用Play server提供更好的性能。您可以看看这一点:

nginx可以很好地处理php,例如使用php-fpm。对,无论如何,一些旧的php系统在很大程度上依赖于某些特定于Apache的功能(至少是现成的),所以我不喜欢(个人)与nginx的“战斗:)相反,我更倾向于使用单独的机器作为服务器或。。。使用nginx代理apache:)是的,但只要涉及到php,我就不推荐apache。nginx文档中有大量特定于应用程序的配置。感谢您的回复。我只是想确认一件事。只有一个或两个服务器实例(每个项目一个)。您只需要一个服务器实例,除非您需要多个虚拟主机,如project1.example.com和project2.example。com@KimStebel-这不适合我。我可以请求索引操作,但没有加载资产(应用程序尝试从加载css。我期望或直接从)我使用的是Play2.1Java版本。
#!/bin/bash
play "~run 9021";