13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【質問】Rubyの"Hello world"スクリプトが動かない(Apache経由)

Last updated at Posted at 2014-02-16

調べてみたのですが、突破口を見いだせないのでお分かりになる方がいらしたら教えて下さい。

事象

  • Vagrant(CentOS 6.5) + rbenv + ruby-buildでruby環境を構築

  • Apache2経由でブラウザから"Hello world"したindex.rbファイルを見ても500 Internal Server Errorが出て動作しない

    • スクリーンショット
  • ruby index.rbするときちんと出力される

  • フォルダやファイルへのパーミッションは問題ない(755)

  • perlはApache経由で見てみましたがちゃんと動作しました

index.rb
#!/usr/bin/env ruby

print "Content-Type: text/html\n\n";
print "Hello World\n";

Apacheのエラーログ

/var/log/httpd/error_log
[Sun Feb 16 12:44:35 2014] [error] [client 192.168.33.1] /usr/bin/env:
[Sun Feb 16 12:44:35 2014] [error] [client 192.168.33.1] ruby
[Sun Feb 16 12:44:35 2014] [error] [client 192.168.33.1] : No such file or directory
[Sun Feb 16 12:44:35 2014] [error] [client 192.168.33.1]
[Sun Feb 16 12:44:35 2014] [error] [client 192.168.33.1] Premature end of script headers: index.rb

調査結果

Apacheのエラーログでぐぐってみると、1行目のrubyへのパス記述が原因の模様。考えられる原因は以下。

  1. 改行コードがLFではなくCR+LFになっているため、動作しない。
  2. パスが間違っている

1はLFだと確認できているので問題なし(GNU nanoで作成)。
2がおそらく問題ぽいのですが、いろんなパスを試してみても同じ状況です(/usr/bin/rubyや/usr/local/bin/rubyも試しました)

.htaccess
Options +ExecCGI
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
AddHandler cgi-script .rb
.bash_profile
# .bash_profile

# User specific environment and startup programs
export PATH="/usr/local/rbenv/bin:$PATH:$HOME:/usr/bin"
eval "$(rbenv init -)"

rubyの場所は以下です(rbenvなのでホームディレクトリ以下)。rbenvで導入したRubyのパス - べたな雑記帳によると、#!/usr/bin/env rubyで良いらしいですが・・

# which ruby
~/.rbenv/shims/ruby

なお、Rubyは以下を見てインストールしました(コマンド内容も含め一緒)
http://brightechno.com/blog/archives/10

追記:解決しました

コメント欄で親切に教えていただき、解決しました。

まず/etc/sysconfig/httpdに以下を追加
export PATH=/home/vagrant/.rbenv/shims:$PATH
そして再起動(sudo service httpd restart

次にApacheがホームディレクトリにアクセスできるようにしてやる
sudo chmod a+rx /home/vagrant

これで解決しました。

13
12
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?