以下の続編です。
免責事項
前回同様、本記事は自分のメモ的要素が強いので、同内容を手元で動かす際には自己責任でお願いします。
はじめに
さて、さくらの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)
次に、今回はPerlのCGIスクリプトを動かすので、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です。
スクリプトの設置
環境づくりが終わったので、前回同様、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」を付けてアクセスします。
(´・ω・`)ダメでした。
パーミッションを確認します。
# 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
もう一度アクセス。
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
アクセス。
(´・ω・`)ダメですね。
今回は、CGI.pmをuseしているのにそのモジュールが入っていないからです。
先ほどPerlの有無を確認した際、CGIが入っていなかったことに気づいた人なら陥らない落とし穴でした。
# yum -y install perl-CGI
アクセス。
Congrats!! \(^o^)/ \(^o^)/
ということで、全世界に向けてCGIで動くページを公開することができました。
いかなる偉大な達成も、こうした小さな成功を積み重ねた先にあるものと個人的には思います。
ハマったぶんだけ目的に1mm単位かもしれないけれど近づいている、と信じて工夫を重ねて頑張りましょう。