さくらのVPSでPerlのCGIスクリプトを動かしてみる

以下の続編です。

免責事項

前回同様、本記事は自分のメモ的要素が強いので、同内容を手元で動かす際には自己責任でお願いします。

はじめに

さて、さくらのVPSについても例のごとくドットインストールがとても詳しいです。dotinstall.com

これを第1回からやっていけば、ほとんど何も問題ないと思いますが、なぜか僕は最初に触ったときだけ、以下で解説されているターミナル経由の操作ができなくて、
http://dotinstall.com/lessons/basic_sakura_vps/8004

仕方がないのでしばらくの間、コントロールパネルのHTML5版コンソールから操作していたのですが(すごい大変だった)、今回あらためてやり直してみたら、ちゃんと上記のとおりにすんなり出来たので、もし初心者の人でハマった人がいても慌てず深呼吸などすればじきに何とかなるかもしれません。

環境づくり

ここからの話は、上記ドットインストールで言うところの「さくらのVPSに申し込んで、起動して、ターミナルから操作もできるようになって、まあ鍵認証ぐらいまでは終わった」という前提で進めます。

鍵認証の記事はこの辺。
http://dotinstall.com/lessons/basic_sakura_vps/8007

で、ログインしたら、とりあえずOSのバージョンを確認します。
ヘルプによると、CentOSの6系を使っているようなので、help.sakura.ad.jp

コマンドを打って詳細を見ていきます。こんな感じ。
(以後、全部rootで作業していきます)

# cat /etc/redhat-release

結果。

CentOS release 6.6 (Final)

次に、今回はPerlCGIスクリプトを動かすので、Perlが入っているか確認します。

# yum list installed | grep perl

出てきました。

perl.x86_64         4:5.10.1-136.el6_6.1
perl-Compress-Raw-Zlib.x86_64
perl-Compress-Zlib.x86_64
(以下略)

5.10.1が入っているようです。
次に、ブラウザで表示するためのhttpdサービス(Webサーバー)が入ってるか確認します。

# yum list installed | grep httpd

これに対しては何も出てこなかったので、インストールします。

# yum -y install httpd

もう一度確認。

# yum list installed | grep httpd
httpd.x86_64        2.2.15-39.el6.centos
httpd-tools.x86_64  2.2.15-39.el6.centos

OK。起動します。

# service httpd start
Starting httpd:                                            [  OK  ]

ブラウザで、アドレスに接続してみましょう。
Apacheのテストページが出ていればOKです。

f:id:note103:20150415150426p:plain

スクリプトの設置

環境づくりが終わったので、前回同様、cgi-binディレクトリに移動します。

# cd /var/www/cgi-bin/

そして今回の主役であるCGIファイルを作成します。
前回のVagrantで起動した仮想マシンには、Vimが入っていなかったのですが、今回はちょっと古いながらもVimが最初から入っていましたので、Vimでやります。

# vim hello.cgi

エディタが立ち上がったら、インサートモードで以下の内容を記述。

#!/usr/bin/env perl
use strict;
use warnings;

print "Content-Type: text/html; charset=UTF-8;\n\n";
print "<h1>Hello CGI!</h1>";

保存して、先ほどのアドレスの最後に「/cgi-bin/hello.cgi」を付けてアクセスします。

f:id:note103:20150415150630p:plain

(´・ω・`)ダメでした。

パーミッションを確認します。

# ls -l

結果。

-rw-r--r-- 1 root root   5  4月 15 12:33 2015 hello.cgi

実行権限がオール抜けているので、付与します。

# chmod a+x hello.cgi

変更後。

-rwxr-xr-x 1 root root   5  4月 15 12:33 2015 hello.cgi

もう一度アクセス。

f:id:note103:20150415150708p:plain

Congrats! \(^o^)/

CGI.pmを動かす

次に、CGI.pmを使用したスクリプトを実行してみます。
こちらも前回と同じ以下です。hello-cgi.cgiという名前で保存。

#!/usr/bin/env perl
use strict;
use warnings;
use CGI qw (:standard);

print header;
print h1('Hello CGI.pm!');

同じく実行権限を与えて、

# chmod a+x hello-cgi.cgi

アクセス。

f:id:note103:20150415150737p:plain

(´・ω・`)ダメですね。

今回は、CGI.pmをuseしているのにそのモジュールが入っていないからです。
先ほどPerlの有無を確認した際、CGIが入っていなかったことに気づいた人なら陥らない落とし穴でした。

ということでCGI.pmを入れます。yumで。

# yum -y install perl-CGI

アクセス。

f:id:note103:20150415150815p:plain

Congrats!! \(^o^)/ \(^o^)/

ということで、全世界に向けてCGIで動くページを公開することができました。

いかなる偉大な達成も、こうした小さな成功を積み重ねた先にあるものと個人的には思います。

ハマったぶんだけ目的に1mm単位かもしれないけれど近づいている、と信じて工夫を重ねて頑張りましょう。