为什么Mojolicious应用程序扔500

时间:2017-10-10 17:51:45

标签: perl web-deployment mojolicious-lite

对于Mojolicious来说是一个新手我无法让我的应用程序运行起来。我正在运行远程服务器上的所有内容,但我找到的所有教程只想显示localhost的部署方式。正如标题所示,我收到500个内部服务器错误,而不是正在加载/运行的应用程序,并且不知道为什么。有人可以解释为那些没有使用本地机器来运行他们的应用程序的人如何做到这一点?

以下是演示应用程序,所有内容都非常漂亮:

#!/usr/bin/env perl
use Mojolicious::Lite;

# Documentation browser under "/perldoc"
plugin 'PODRenderer';

get '/test' => sub {
  my $c = shift;
  $c->render(template => 'index');
};

app->start;
__DATA__

@@ index.html.ep
% layout 'default';
% title 'Welcome';
<h1>Welcome to the Mojolicious real-time web framework!</h1>
To learn more, you can browse through the documentation
<%= link_to 'here' => '/perldoc' %>.

@@ layouts/default.html.ep
<!DOCTYPE html>
<html>
  <head><title><%= title %></title></head>
  <body><%= content %></body>
</html>

一切正常,催眠命令返回:

Listening at "http://*:8080"
Server available at http://127.0.0.1:8080

需要做些什么才能通过网站网址而不是localhost加载此应用?

道歉,如果这看起来像一个愚蠢的问题,但似乎没有任何明显的教程或关于从远程服务器运行mojo应用程序的讨论,所以任何帮助是适当的,因为我相信其他新手之前遇到过类似的问题还有更多。

1 个答案:

答案 0 :(得分:1)

您需要做什么取决于您运行此计算机的设置,以及该服务器与您要从中访问它的计算机之间的网络。

一般情况下,http://127.0.0.1:8080 提供的只是默认文字。如果您的服务器允许从外部访问端口8080,那么您可以通过服务器的IP地址或主机名以及端口8080访问它。

$ curl 192.168.0.4:8080/
$ curl myserver.local:8080/

这显然是人为的例子。

如果你想在你购买的域上使它,你需要让hypnotoad监听端口80并确保没有其他网络服务器(如Apache)在盒子上运行,或者你将需要在正在运行的Web服务器中设置代理,该代理将请求转发到例如/到端口8080。

有很多信息on deployment in the Mojo wiki on github,其中一个页面列出talks about hypnotoad in detail,列出了代理解决方案和Apache:

  

通过代理服务器访问

     

在生产部署中,通常使用代理服务器进行访问   催眠服务器。以下是apache / mod_proxy配置文件   使用虚拟主机的示例。

<VirtualHost *:80>
   ServerName app1.somehost.com
   ProxyPass / http://localhost:8080/
   ProxyPassReverse / http://localhost:8080/
</VirtualHost>
     

有关反向代理的详细信息,请参阅"DEPLOYMENT" in Mojolicious::Guides::Cookbook下的各种网络服务器部分   您的应用,以及有关设置X-Forwarded-For标头的指示   被Mojo尊敬。