Apache-2.2
縮小來自 perl Web 應用程序的伺服器發佈在 ec2 上失敗的原因
**更新:**我更正了以下權限問題,並且可以讀取 dancer 生成的日誌文件。有一個小程式碼錯誤,已修復。所以現在日誌什麼都沒有顯示,但我的 POST 請求仍然只是默默地失敗!:'(
更新 2:我通過僅授予寫入權限來修復它
/srv/www/domain.com/MyApp/logs
我有:
- 帶有 Amazon Linux AMI 的 amazon-ec2 實例。
- 它有 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 會阻止傳出的文章嗎?似乎沒有我可以在安全組中設置的任何出站規則?
ls -al /srv/www/domain.com/MyApp/
對
bin
目錄設置的權限是什麼?無論使用者正在執行您的 perl 腳本,都需要對該日誌目錄具有讀/寫權限。
你可以
chmod
像這樣的目錄(字面意思是“改變模式”)chmod +600 /srv/www/domain.com/MyApp/bin
最好將您的日誌目錄放在預期
/var/log/MyApp
的位置,但這不是重點。‘var’ 用於’可變數據’,如日誌。;-)