前回はエックスサーバーのレンタルサーバーにWP-CLIというツールを導入して、WordPressをコマンドラインで操作する方法を紹介しました。
今回もエックスサーバーののコマンドライン(シェル)を活用するためにPerlのモジュールを追加してみたいと思います。
なおmixhostのコマンドラインを使うためにはSSHでレンタルサーバに接続する方法があります。SSHでの接続方法については下記を参照してみてください。
エックスサーバーのPerl環境
エックスサーバーではCGI用にPerlが実行できるようになっています。しかし、しかしこのPerlはCGIに関係なく普通にコマンドラインで利用することができます。
$ which perl
/usr/local/bin/perl
Perlは「/usr/bin/perl」に入っており、/usr/local/bin/perlは/usr/bin/perlへのシンボリックリンクになっています。
環境変数PATHでは、/usr/local/binの方が先に設定されているので、whichコマンドで/usr/local/bin/perlが表示されます。
バージョンを確認してみるとv5.16.3であることがわかります。
$ perl --version
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
(with 44 registered patches, see perl -V for more detail)
Copyright 1987-2012, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
利用可能なPerlモジュールはサーバーパネルの「サーバー情報」で表示されます。
ImageMagikやDateTime等の基本的かつ便利なモジュールは入っていますが、あまり多くは入っていないようです。
必要なモジュールの確認
モジュールがインストールされているかどうかというのは、perlを実行することで確認可能です。
$ perl -e 'use モジュール名;'
このコマンドを実行して何も表示されなければ(=エラーがなければ)そのモジュールはインストールされていることになります。
私はエックスサーバーに移転する前のmixhostで、自前のperlスクリプトを動かして、ExcelファイルからHTMLファイルをしていました。
この手のスクリプトはPythonで作った方が良かった気もしますが・・・
この自前スクリプトをエックスサーバーでも利用したいと思っています。
そこで、この自前スクリプトで使用しているモジュールとエックスサーバーでのインストール状況を調べると次のようになっていました。
モジュール名 | インストール状況 |
---|---|
DateTime | 済 |
DateTime::Format::Strptime | 済 |
Digest::MD5 | 済 |
Encode | 済 |
File::Path | 済 |
Image::Magick | 済 |
Image::Size | 未 |
LWP::Simple | 済 |
LWP::UserAgent | 済 |
Spreadsheet::ParseExcel | 未 |
自前スクリプトを実行するには「未」となっているモジュールをインストールする必要があります。
もっと不足しているモジュールが多いかと思いましたが、意外と使えるモジュールは入っているようです。
CPANを使ったモジュールのインストール
mixhostの場合はCPanelということロールパネルで、Perlモジュールをインストールすることができました。
しかしエックスサーバーにはそのような機能が用意されていません。つまり自力でPerlモジュールを追加する必要があります。
そこで利用するのが「CPAN」というシステム(ツール)です。
CPANを使うと、Perlモジュールのダウンロードとインストールを自動化することができます。特にモジュール間の依存関係を考慮して必要なモジュールも芋づる式にインストールしてくれるのが便利です。
さて、そのCPANをエックスサーバーで使えるかどうかですが・・・
which cpan
/usr/bin/cpan
使えるようです。
早速cpanコマンドを実行してみます。初回は設定が設定が行われます。
$ cpan
CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.
Would you like to configure as much as possible automatically? [yes] ★
<install_help>
Warning: You do not have write permission for Perl library directories.
To install modules, you need to configure a local Perl library directory or
escalate your privileges. CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available). You may also
resolve this problem manually if you need to customize your setup.
What approach do you want? (Choose 'local::lib', 'sudo' or 'manual')
[local::lib] ★
Autoconfigured everything but 'urllist'.
Now you need to choose your CPAN mirror sites. You can let me
pick mirrors for you, you can select them from a list or you
can enter them by hand.
・・・
(時間がかかるが放置)
「★」の部分が入力する必要がある部分です。基本的にEnterを押していけばOKです。
しばらく待つと「cpam」というプロンプトが表示されます。あとはinstallにつづけてインストールしたいモジュール名を入力すればOKです。
cpan[1]> install Image::Size
cpan[1]> install Spreadsheet::ParseExcel
これでperl5ディレクトリに必要ファイルがインストールされます。
ちゃんと使えるかどうかは「.bashrc」を再読込してから、perlを実行してみます。
$ source ~/.bashrc
$ perl -e 'use Image::Size;'
$ perl -e 'use Spreadsheet::ParseExcel;'
エラーが出なければモジュールのインストールはOKです。
Perlスクリプトの実行
必要なモジュールをインストールしたら、実行したいPerlスクリプトをエックスサーバーに転送して実行してみましょう。
ファイルを転送した後は実行ビットをつけるのを忘れないようにしましょう。
$ chmod +x 実行したいperlスクリプト
これで自作のPerlスクリプトが動作するはずです。
なおmixhostで動作していたPerlスクリプトの場合は、先頭行が「#!/usr/bin/perlml」となっている場合があります。
このインタープリタ指定ではエックスサーバーでは動きませんので「#!/usr/bin/perl」に変更しておきましょう。
まとめ
今回はエックスサーバーのレンタルサーバーでPerlモジュールを追加する方法を紹介しました。
エックスサーバーで自作のPerlスクリプトを実行する場合は、デフォルトで導入されているモジュールでは不足するケースもあると思います。エックスサーバーではデフォルトでCPANが利用可能なので、自作のPerlスクリプトが利用しやすいのではないかと思います。
次回はエックスサーバーにエディタのemacsを導入してみます。
コメント