【发布时间】:2014-02-06 10:02:09
【问题描述】:
我在一台机器上有一个 mojolicio 服务器,我从另一台机器连接到它。我有一个脚本来检查 mojolicio 是否启动 - 如果它没有运行则运行它。我使用以下命令行来运行服务器:
ssh root@hostname 'cd /server_path/; (nohup /usr/bin/perl server_file >nohup.out &);'
server_file 是一个提升服务器的脚本,具有以下脚本:
#!/usr/bin/env perl
use Mojo::Base -strict;
use File::Basename 'dirname';
use File::Spec::Functions qw(catdir splitdir);
# Source directory has precedence
my @base = (splitdir(dirname(__FILE__)), '..');
my $lib = join('/', @base, 'lib');
-e catdir(@base, 't') ? unshift(@INC, $lib) : push(@INC, $lib);
# Start commands for application
require Mojolicious::Commands;
Mojolicious::Commands->start_app('MyServer', 'daemon','-l','http://*:3030');
如果服务器已关闭并且我运行此命令 - 我在机器中看到服务器已启动并正在运行并且它正在侦听它配置为侦听的端口。现在,如果我尝试从浏览器连接到服务器,它不会加载。它卡在加载中,最后我找不到页面。但是,如果我从服务器本身运行相同的命令,它就可以工作,并且我可以在它运行后加载主页。
我发现了问题..
如果我将 nohup 与 ssh 一起使用,那么服务器将无法访问 - 但是当我在没有 nohup 的情况下运行服务器时 - 使用以下代码:
ssh root@hostname 'cd /server_path/; (usr/bin/perl server_file );'
它有效。
这里可能有什么问题?
非常感谢。
【问题讨论】:
-
您可能需要查看 nohup.out 以了解程序报告的错误。
-
无错误 - nohup 告诉我服务器已启动并正在侦听:正在侦听“http://*:3030”
标签: perl ssh mojolicious