缩小 Perl Web 应用程序在 EC2 上发布服务器失败的原因

缩小 Perl Web 应用程序在 EC2 上发布服务器失败的原因

更新:我更正了以下权限问题,现在可以读取 dancer 生成的日志文件了。有一个小代码错误,已修复。所以现在日志什么都不显示,但我的 POST 请求仍然默默失败!:'(

更新 2:我通过授予写入权限来修复此问题/srv/www/domain.com/MyApp/logs

我有:

  1. 具有 Amazon Linux AMI 的 amazon-ec2 实例。
  2. 它有 apache2,在 cgi 上运行 perl dancer 应用程序描述在这里

我有使用 github API 进行 OAuth 的代码。在我的计算机上运行良好,但最终POST 失败亚马逊。

这看起来像是一个开发问题,但我是 Linux 系统管理员的新手,我想知道我应该如何缩小我的问题范围

这是我的代码:

my $browser                = LWP::UserAgent->new;
#alteast from the browser, seems like this POST never happens.
my $resp                   = $browser->post($github_post_url,
[
 client_id                  => $client_id,
 client_secret              => $client_secret, 
 code                       => $code,
 state                      => $state
]);
die "error while fetching: ", $resp->status_line
unless $resp->is_success;

my %querystr = parse_query_str($resp->decoded_content);
my $acc = $querystr{access_token};

if($acc) {
        #code to retrive access token...
    redirect $github_auth_success;
    return;
} 
    return redirect "/fail";#<<< THIS HAPPENS

此应用程序的此处日志(tail /srv/www/domain.com/logs/error.log)显示:

日志目录 /srv/www/domain.com/MyApp/bin/.. 不可写/不可执行,并且无法在 /usr/local/share/perl5/Dancer/Logger.pm 第 16 行对其进行 chmod 。

但是我的 /bin 目录是可写的!而且每个人都可以执行!

  • 我如何知道这里到底发生了什么?我是否应该查看其他日志?
  • amazon-ec2 会阻止外发邮件吗?安全组中似乎没有可以设置的任何出站规则?

答案1

ls -al /srv/www/domain.com/MyApp/

目录设置的权限是什么bin

无论什么用户运行你的 perl 脚本都需要有对该日志目录的读/写访问权限。

你可以chmod像这样进入目录(字面意思是“更改模式”)chmod +600 /srv/www/domain.com/MyApp/bin

最好将日志目录放在预期的某个地方,/var/log/MyApp但这不是重点。'var' 代表'变量数据',比如日志。;-)

相关内容