さくらのレンタルサーバー・スタンダードでMojoliciousアプリを公開




  1. Perl




  2. Mojolicious


 Hello Worldアプリケーションを作成し、自分のマシンの上で、実行して、ブラウザで表示させました。けれども、最終的には、インターネットを使って、他の人に、作成したアプリを見せたいと思うようになると思います。

 インターネットでWebサイトを公開するための手順は、いくつかありますが、今回はもっとも簡単な方法として、さくらのレンタルサーバー・スタンダードを利用したいと思います。

 さくらのレンタルサーバー・スタンダードは、インターネットで、Webサイトを公開するためのサービスです。共有レンタルサーバーと呼ばれ、CGIを使って作成されたファイルを、実行して、表示することができます。

 Hello Worldアプリケーションは、実は、CGIとしても、実効することが可能です。ですので、自分のマシンで作成したアプリケーションを、さくらのレンタルサーバー・スタンダードを使って公開することができます。

さくらレンタルサーバー・スタンダードの申し込み

 さくらのレンタルサーバー・スタンダードは、こちらのページから申し込むことができます。1ヶ月500円程度で利用でき、ディスク容量も100GBと、かなり大きいので、お得です。また、この後解説しますが、SSHを使って、サーバー上で、コマンドを実行することができます。

さくらのレンタルサーバー スタンダードの申し込み

 こちらのサイトでの解説手順に従って、進めていってください。

SSHを使って、サーバーに接続する

 さくらのレンタルサーバー・スタンダードが利用できるようになったら、さっそく手順を進めていきましょう。まず最初に、SSHを使って、サーバーに接続するということをやってみたいと思います。

 SSHというのは、セキュアな通信で、サーバーに対してコマンドを実行するためのプロトコルです。この後の作業で、異なるバージョンのPerlに変更したり、CGIパーミッションを変更したりするときに、コマンドというものを実効する必要があります。

 そのために、SSHを使って、サーバーに接続する必要があります。Mac OS Xをお持ちの方であれば、sshコマンドは、すでに用意されています。ターミナルを開けば、sshコマンドを利用することができるので、準備は要りません。

 Windowsの場合は、SSHクライアントであるTeratermと呼ばれるアプリケーションをインストールしましょう。Teratermを使えば、SSHを使って、サーバーで、コマンドを実行することができます。

WindowsでのTera Termのインストール

 以下のサイトからTera Termをダウンロードしてインストールします。

Tera Term

 インストールが完了したら、Tera Termを起動します。「New Connection」というウインドウが表示されると思います。

 Hostの部分には、さくらスタンダードを申し込んだときに、受け取ったホスト名を入力します。

xxxxx.sakura.ne.jp

 xxxxxのところにはユーザー名が入ります。

「Service」の部分はSSHを指定します。

SSH

 「OK」ボタンを押すと、SSH Authenticationというウインドウが開きます。
「User name」と「Passphrase」の部分にさくらスタンダードで受け取った、ユーザー名とパスワードを入力します。

 「OK」をクリックすると、サーバーに接続することができます。

Mac OS Xでのサーバーへの接続

 Mac OS Xには、デフォルトでsshコマンドが利用できますので、ターミナルを開いてSSHコマンドを実行します。

ssh yyy@xxx.sakura.ne.jp

 xxxの部分には、ユーザー名を入力してください。xxxの部分が、与えられたホスト名の該当する部分を入力してください。

 パスワードを聞かれますので、さくらスタンダードを申し込んだときにもらったパスワードを入力してください。

 サーバーに接続することができます。

利用するPerlのバージョンを変更する

 Mojoliciousを利用するには、5.10.1以上のPerlが必要です。さくらのスタンダードでは、Perlのバージョンを簡単に切り替えることができます。

 SSHでは、コマンドというものを使ってさまざまな操作を行います。まず、Perlのバージョンが指定されたファイルを表示してみましょう。以下のコマンドを入力して、Enterを押すとコマンドを実行できます。

cat .perl.version

 catの後ろには空白があるので注意しましょう。コマンドを実行するときはいつでもEnterを押すので、覚えておいてください。

 次に、さくらのスタンダードでは2015年現在Perl 5.14が利用できるので、この設定を書き換えます。

echo "5.14" > .perl.version

 もとに戻したい場合は次のコマンドで元に戻せます。

echo "5.8" > .perl.version

 次のコマンドでPerlのバージョンを確認してみましょう。

perl -v

 以下のように、Perl 5.14が表示されれば、成功です。

This is perl 5, version 20, subversion 1 (v5.20.1) built for amd64-freebsd

Mojoliciousをインストールする

 Mojoliciousをインストールするには、cpanmというPerlのモジュールをインストールするツールを利用するのが簡単です。cpanmをダウンロードして、Mojoliciousをインストールしましょう。

cpanmのダウンロード

 まず最初にcurlというコマンドを使ってcpanmをダウンロードします。

curl -LOk http://xrl.us/cpanm

 ファイル一覧を表示するコマンドを使ってcpanmがダウンロードされているかどうか確認しましょう。

ls

 cpanmというファイルが表示されているか確認しましょう。

Mojoliciousのインストール

 次にcpanmを使ってMojoliciousをインストールしましょう。

perl cpanm Mojolicious

 次のような画面が表示されます。

--> Working on Mojolicious
Fetching http://www.cpan.org/authors/id/S/SR/SRI/Mojolicious-6.08.tar.gz ... OK
Configuring Mojolicious-6.08 ... OK
Building and testing Mojolicious-6.08 ... OK
Successfully installed Mojolicious-6.08
1 distribution installed

 Mojoliciousがインストールされていることを確認してみましょう。perldocというコマンドは、Perlのドキュメントを見るコマンドですが、Mojoliciousがインストールされていれば、ドキュメントを見ることができます。

perldoc Mojolicious

 Mojoliciousがインストールされていれば、ドキュメントが表示されます。ドキュメントの表示を終えるときは「q」を押します。

q

Mojoliciousアプリケーションの修正

 さくらのスタンダードで動かすためには、先ほど作成した「webapp.pl」スクリプトを少し修正する必要があります。

シェバングの追加

 以下が先ほど作成したスクリプトです。

use Mojolicious::Lite;

get '/' => sub {
  my $self = shift;

  $self->render(text => 'Hello World');
};

app->start;

 このスクリプトの先頭に次の一行を追加してください。これは、シェバングと呼ばれ、CGIPerlを使って実行するための指示になります。

#!/usr/bin/env perl

 また、Mojoliciousをインストールしたディレクトリを、ライブラリのパスとして読み込むために、次の2行を追加します。

use FindBin;
use lib "$FindBin::Bin/../perl5/lib/perl5";


 スクリプトは次のようになります。

#!/usr/bin/env perl
use FindBin;
use lib "$FindBin::Bin/../perl5/lib/perl5";

use Mojolicious::Lite;

get '/' => sub {
  my $self = shift;

  $self->render(text => 'Hello World');
};

app->start;

(参考)FindBin

 なお、自分の環境で開発をするときも、このままおいておいても大丈夫です。

ファイル名の変更

 さくらのスタンダードで実効するときは、ファイル名の拡張子を「.cgi」にする必要があります。

「webapp.pl」を「webapp.cgi」に変更してください。

Mojoliciousアプリケーションのアップロード

 Mojoliciousのインストールが終われば、次は、作成したHello Worldアプリケーションのアップロードを行います。

 Windowsの場合は、Windowsの場合は、Windows7以降であれば、FTPソフトは、エクスプローラに統合されているので、これを利用します。もし、Windows7より前の場合は、FFFTPというソフトを利用すれば、ファイルをアップロードすることができます。

 Mac OS Xの場合も、FTPソフトは、デフォルトでインストールされているので、これを利用します。

Windowsの場合(Windows7以降の場合を解説)

 エクスプローラから、FTPを使って、サーバーに接続しましょう。なんでもよいので、フォルダをダブルクリックして、エクスプローラを立ち上げてください。

 上にあるアドレスバーの空白部分をクリックすると、自分でURLを入力することができます。ここに次のように、入力してください。

ftp:yyy@xxx.sakura.ne.jp

 yyy@xxx.sakura.ne.jpはSSHの接続のときに利用したものと同じものです

 すると、サーバーにFTPで接続することができます。ユーザー名とパスワードを聞かれますので、入力してください。

 接続するとwwwというフォルダがあると思います。このフォルダの中にインターネットで、公開するファイルを配置します。

 Hello Worldアプリケーションを、「webapp.cgi」という名前で保存したと思いますが、これをwwwフォルダの中に保存してください。

 これで、ファイルのアップロードは終了です。

Mac OS Xの場合

 Finderは、ファイルを見るためのものですが、これを使って、サーバーへFTP接続をすることができます。

 Finderを使って、FTP接続するには、「Finderのメニューの移動(Go)>サーバへ接続(Connect to Server)を選択。」します。

 次に、接続したいサーバーを次のように入力してください。

ftp:yyy@xxx.sakura.ne.jp

 yyy@xxx.sakura.ne.jpはSSHの接続のときに利用したものと同じものです

 すると、サーバーにFTPで接続することができます。ユーザー名とパスワードを聞かれますので、入力してください。

 接続するとwwwというフォルダがあると思います。このフォルダの中にインターネットで、公開するファイルを配置します。

 Hello Worldアプリケーションを、「webapp.cgi」という名前で保存したと思いますが、これをwwwフォルダの中に保存してください。

 これで、ファイルのアップロードは終了です。

アプリケーションを実効するための準備

 アプリケーションを実効するためには、いくつかの準備が必要です。

ファイルのパーミッションを755にする

 CGIファイルを実行するためには、CGIファイルのパーミッションというものを、755にする必要があります。ここでは、おまじないとして覚えておいてください。

 まず、先ほど解説した手順でSSHを使って、サーバーに接続してください。Windowsの場合は、Tera Termを、Mac OS Xの場合はターミナルからsshコマンドを利用するのでしたね。

 そして、まず、webapp.cgiの存在するディレクトリに移動します。ディレクトリを移動するには、「cd」コマンドを使用します。

cd ~/www

 「~」というのは、自分のホームディレクトリを表す記号です。ホームディレクトリの中の「www」フォルダに移動します。

 次に、「webapp.cgi」のファイルのパーミッションを「755」に変更します。

chmod 755 webapp.cgi
Windowsの場合は、改行コードを「LF」にする

 Windowsの場合は、デフォルトでは、改行コードというものが「CR + LF」というものになっています。さくらのスタンダードで動かすために、改行コードを「LF」に変換する必要があります。

 次のコマンドで改行コードを、「LF」に統一します。

perl  -i.org  -pe  's/\r\n/\n/g' webapp.cgi

 これを毎回やるのは面倒ですね。秀丸やさくらエディタなどの、Windowsのテキスト編集ソフトを利用すれば、あらかじめ、「LF」に統一しておけるので便利です。

Perlスクリプトが正しいかを確認する

 Perlスクリプトが間違っていた場合は、CGIの実効が失敗しますので、CGIが正しいかどうかを確認します。

perl -c webapp.cgi

 「perl -c」というコマンドを使うと、Perlスクリプトの文法が正しいことが確認できます。以下のように表示されれば、Perlスクリプトは正しく記述できています。

webapp.cgi syntax OK

Mojoliciousアプリケーションにアクセスする

 さっそく、Mojoliciousアプリケーションにアクセスしてみましょう。ブラウザから、URLを入力してみてください。

http://xxx.sakura.ne.jp/webapp.cgi

 「Hello World」と表示されれば成功です。これで、インタネット上での公開が完了し、すべての人から、あなたの作成したMojoliciousアプリケーションを見ることができます。おめでとう!