为什么 Mojolicious 应用会抛出 500
Why Mojolicious apps throw 500
作为 Mojolicious 的新手,我在让我的应用程序正常工作时遇到了问题。我正在 运行 将所有内容都从远程服务器上删除,但我能找到的所有教程都只想展示本地主机的部署方式。正如标题所示,我收到 500 个内部服务器错误,而不是应用 loaded/ran 并且真的不知道为什么。有人可以解释一下如何为那些不使用本地计算机来 运行 他们的应用程序的人做到这一点吗?
这是生成的演示应用程序,非常漂亮:
#!/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>
一切正常,hypnotoad 命令 returns:
Listening at "http://*:8080"
Server available at http://127.0.0.1:8080
需要做什么才能通过网站 url 而不是本地主机加载此应用程序?
抱歉,如果这看起来像一个愚蠢的问题,但似乎没有任何明显的教程或关于来自远程服务器的 运行ning mojo 应用程序的大量讨论,所以我相信其他人会提供任何帮助新手以前遇到过类似的问题,以后会遇到更多。
您需要做什么取决于您运行所在机器的设置,以及该服务器和您要访问它的计算机之间的网络。
一般来说,http://127.0.0.1:8080 上的 只是默认文本。如果您的服务器允许从外部访问端口 8080,那么您已经可以通过服务器的 IP 地址或主机名以及端口 8080 访问它。
$ curl 192.168.0.4:8080/
$ curl myserver.local:8080/
这些显然是人为的例子。
如果你想让它在你购买的域上可用,你需要让 hypnotoad
侦听端口 80 并确保没有其他网络服务器(如 Apache)运行在盒子上,或者您需要在 运行 的网络服务器中设置一个代理,它将请求转发到例如/
到端口 8080。
有很多信息on deployment in the Mojo wiki on github, and one of the pages listed there talks about hypnotoad
in detail,例如与Apache一起列出代理解决方案:
Access through proxy server
In production deployment, generally proxy server is used to access
hypnotoad server. The following is apache/mod_proxy config file
example using virtual host.
<VirtualHost *:80>
ServerName app1.somehost.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
See the various webserver sections under "DEPLOYMENT" in
Mojolicious::Guides::Cookbook for details on reverse-proxying to
your app, and for pointers on getting X-Forwarded-For
headers set
and honoured by Mojo.
作为 Mojolicious 的新手,我在让我的应用程序正常工作时遇到了问题。我正在 运行 将所有内容都从远程服务器上删除,但我能找到的所有教程都只想展示本地主机的部署方式。正如标题所示,我收到 500 个内部服务器错误,而不是应用 loaded/ran 并且真的不知道为什么。有人可以解释一下如何为那些不使用本地计算机来 运行 他们的应用程序的人做到这一点吗?
这是生成的演示应用程序,非常漂亮:
#!/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>
一切正常,hypnotoad 命令 returns:
Listening at "http://*:8080"
Server available at http://127.0.0.1:8080
需要做什么才能通过网站 url 而不是本地主机加载此应用程序?
抱歉,如果这看起来像一个愚蠢的问题,但似乎没有任何明显的教程或关于来自远程服务器的 运行ning mojo 应用程序的大量讨论,所以我相信其他人会提供任何帮助新手以前遇到过类似的问题,以后会遇到更多。
您需要做什么取决于您运行所在机器的设置,以及该服务器和您要访问它的计算机之间的网络。
一般来说,http://127.0.0.1:8080 上的 只是默认文本。如果您的服务器允许从外部访问端口 8080,那么您已经可以通过服务器的 IP 地址或主机名以及端口 8080 访问它。
$ curl 192.168.0.4:8080/
$ curl myserver.local:8080/
这些显然是人为的例子。
如果你想让它在你购买的域上可用,你需要让 hypnotoad
侦听端口 80 并确保没有其他网络服务器(如 Apache)运行在盒子上,或者您需要在 运行 的网络服务器中设置一个代理,它将请求转发到例如/
到端口 8080。
有很多信息on deployment in the Mojo wiki on github, and one of the pages listed there talks about hypnotoad
in detail,例如与Apache一起列出代理解决方案:
Access through proxy server
In production deployment, generally proxy server is used to access hypnotoad server. The following is apache/mod_proxy config file example using virtual host.
<VirtualHost *:80> ServerName app1.somehost.com ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
See the various webserver sections under "DEPLOYMENT" in Mojolicious::Guides::Cookbook for details on reverse-proxying to your app, and for pointers on getting
X-Forwarded-For
headers set and honoured by Mojo.