2012年4月26日木曜日

さくらインターネットレンタルサーバー スタンダードプランでCGIを動かす

さくらインターネットレンタルサーバー スタンダードプランでCGIを動かす

 

さくらインターネットでCGIスクリプトが動く条件

以下の条件満たすようにcgiを作る

  • スクリプトファイルを置いているディレクトリのパーミッションを705または755に設定する。
  • フォルダ名にチルダを含めない。
  • スクリプトファイルのパーミッションが705または755に設定する。
  • 改行コードがUNIXの改行コード(LF)になっている
  • シェバン( shebang line、 #! に続くパス)で、cgiスクリプトを実行するプログラムを指定する。
    • perlのcgiなら、スクリプトの1行目に #!/usr/local/bin/perl などと書いている。
    • pythonのcgiなら、スクリプトの1行目に #!/usr/local/bin/python などと書いている。
    • rubyのcgiなら、スクリプトの1行目に #!/usr/local/bin/ruby などと書いている。
  • スクリプト中で print “Content-type: text/html\n\n” のように、表示するコンテンツのタイプを始めにprintしている。
  • コメント外のスクリプト中に全角文字(全角スペース等)を含まない。

 

今回の環境

perlbrewでインストールしたので shebang lineは、

perl 5, version 14, subversion 2 (v5.14.2) built for amd64-freebsd

#!/home/ユーザーネーム/perl5/perlbrew/perls/perl-5.14.2/bin/perl

pythonbrewでインストールしたので shebang lineは、

Python 3.2.3

#!/home/ユーザーネーム/.pythonbrew/pythons/Python-3.2.3/bin/python

rvmでインストールしたので shebang lineは、

ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-freebsd8.1]

#!/home/ユーザーネーム/.rvm/rubies/ruby-1.9.3-p194/bin/ruby

 

サンプルcgi

perl.cgi

#!/home/hpdjnqemjvpczhps/perl5/perlbrew/perls/perl-5.14.2/bin/perl
#
use strict;
#
# -*- coding: utf-8 -*-
#
print "Content-type: text/html; charset=UTF-8";
print "\r\n\r\n";
print "The Perl WORLD!!";

python.cgi

#!/home/hpdjnqemjvpczhps/.pythonbrew/pythons/Python-3.2.3/bin/python
#
# -*- coding: utf-8 -*-
#
print ('Content-type: text/html; charset=UTF-8')
print ("\r\n\r\n")
print ("The Python WORLD!!")

ruby.cgi

#!/home/hpdjnqemjvpczhps/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
#
# -*- coding: utf-8 -*-
#
puts "Content-type: text/html; charset=UTF-8'"
puts "\r\n\r\n"
puts "The RUBY WORLD!!"

 

今回、個人的につまづいた箇所

スクリプト中で print “Content-type: text/html\n\n” のように、表示するコンテンツのタイプを始めにprintしていなかった。

参考

さくらインターネットでPythonのCGIを動かす為のメモ
http://djlab.sakura.ne.jp/mydiary/?p=2626

cgiとphp - PHP/CGIについて
http://faq.sakuratan.com/wiki/wiki.cgi?cgi%a4%c8php#i4

0 コメント: