Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. Mojolicious

さくらのレンタルサーバー・スタンダードで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;

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

#!/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アプリケーションを見ることができます。おめでとう!

Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング