
WinSCPとPuTTYを使ってCGI・Jcodeモジュールをサーバーにインストールする
CGIを動かすには、CGI.pmやJcode.pmなどのPerlモジュールが必要になります。
open terminalやopen session in PuTTY等を使ってコマンド操作でインストールを行います。
インストールにはroot権限を持つ状態での操作が必要です。sudoを入れたコマンドを使っています。
AWS(Apacheサーバー)へのperlモジュールインストール
今回はCGIモジュール(Perlモジュール)をサーバーにインストールしていく手順をご紹介します。
今回クライアントのWEBサイトで新しいCGIプログラムを稼働させようとしていました。
ですが「モジュールが存在しない」エラーが表示されてCGIが動きません。
現在はサーバーへのSSH接続(一般ユーザー権限)のみを持っている状態です。
現在の環境・および条件
・リニューアルに伴いCGIプログラムを稼働させる
・対象となるサーバー(apache)はAWS
・管理画面(AWSコンソール)は操作できない(クライアントとの契約事情)
・CGIモジュールがインストールされていない
ではさっそく手順をご紹介していきます。
インストール前の準備(WinSCP・PuTTY)
WinSCPでのroot権限
今回はWindowsOS環境のため、SSH接続ソフトとして「WinSCP」を使います。
頂いている一般ユーザー権限の接続情報を使って、サイトの保守を数年担当しています。
特定ディレクトリ内の更新作業はできますが、今回はPerlモジュールインストールが必要になります。
今までの権限ではインストール作業ができないため、管理業者にフルアクセス可能な権限情報を提供してもらいました。
公開鍵認証方式
SSH接続では公開鍵認証方式を使っているので、公開鍵と秘密鍵とによる認証接続になります。
管理業者にIPアドレスと公開鍵情報をメールして、root権限を持つアカウントを作成して頂きました。
これでroot権限でサーバー操作ができる(sudoコマンドが使える)ので、モジュールインストールが可能になります。
PuTTYのインストール
WinSCPは元々ファイルの更新に使っていたWindowsOS専用のクライアントソフトです。
しかし今回のCGIモジュールインストールの際、tty接続しか認めない部分が出てきます。
そこで、WinSCPのメニューにある「Open session in PuTTY」から、PuTTYを起動してコマンド命令を掛けます。
入ってなければインストール
まだPuTTYソフトがない場合はソフトをインストールしておきましょう。
インストール:PuTTY
この時自分のOSが32bit版か64bit版かでインストールするバージョンが違うので、間違えないようにしましょう。
自分のOSは64bitなので「putty-64bit-0.75-installer.msi」の方をダウンロードします。
ダウンロードしたら指示に従ってそのままインストールします。
WinSCPからPuTTYを起動する
WinSCPの「open session in PuTTY」アイコンからPuTTYを起動させましょう。
最初の接続時にSSHの接続パスワードを入れる必要があります。
パスワードを入れる時カーソルは動きませんので注意しましょう。
上記はログインした状態です、ここまできたら一旦は閉じておいて下さい。
tar.gzアーカイブのダウンロード
今回インストールするモジュールはCPANからダウンロードします。
ダウンロードサイト:CPAN
ここからダウンロードするのはCGI.pmとJcode.pmの一式関連ファイルです。
CGI-4.52.tar.gzのダウンロード
CPANのTOPページで「CGI」で検索を掛けます。結果の中から「LEEJO/CGI-4.52」を選択します。
CGI-4.52のリンクをクリックすると、詳細ページが開きます。
左メニュー欄にある「Download」をクリックすると.tar.gzの形式でアーカイブされたファイルをダウンロードできます。
Jcode-2.07.tar.gzのダウンロード
続けてCPANのTOPページで「Jcode」で検索を掛け、結果リストから「DANKOGAI/Jcode-2.07」を選択します。
Jcode-2.07のリンクをクリックすると、詳細ページが開きます。
先ほど同様に左メニューの「Download」をクリックしてファイルをダウンロードしましょう。
上記2つを用意しましょう。
バージョンが無くても焦らずに
上記2つのバージョンが存在しなくても、別バージョンで同じ作業をすれば問題ありません。
なるべくバージョンの高いもの(新しいもの)を選択しましょう。
以下で紹介する操作も、バージョン部分は適宜置き換えてくださいね。
Perlモジュールの存在確認
冒頭でCGIを稼働させた時「モジュールがありません」というエラーが出たと説明しました。
これはCGIプログラム側に前もって準備されたエラー表示です。
ですので一応サーバー内にCGIモジュールが存在するかどうか直接確認をしましょう。
コマンド入力による確認
WinSCPで「Open terminal」アイコンをクリックすると、コンソール画面が表示されます。
上部の入力ボックス内にコマンドを入れて、隣の「Execute」を押します。
% perl -e 'Jcode;'
この様に黒画面に何も表示されなければ、モジュールがインストールされている事になります。
それに対し以下の様なコードが出る場合は、インストールされていない事を指します。
Can't locate Jcode.pm in @INC (@INC contains: /usr/local/lib/perl5/5.6.0/i386-freebsd /usr/local/lib/perl5/5.6.0 ***省略*** .) at -e line 1. BEGIN failed--compilation aborted at -e line 1.
基本的にモジュール(perlモジュール)は@INCという配列変数に格納されいます。
上のアナウンスはその「@INCの中にありません」という意味ですね。
%や#の表記について
他のサイトもほとんどそうですが、コマンドを紹介する時は先頭に「%」や「#」が記述してありますよね。
これは権限ごとに使えるコマンドを分類するために記述されています。
%…一般ユーザーでも使えるコマンド
#…root権限を持つ者が使えるコマンド
実際のコマンド入力時はこの%や#を入れる必要はありません。
ですので先ほどの「% perl -e 'Jcode;'」はperlから後を入れましょう。
以下より紹介するコマンドはいずれも、この「Open terminal」から入力していきます。
tar.gzのアップロード・展開
今回Jcodeの場合を例に取って紹介しますが、CGIの方もやり方は同様です。
ダウンロードしたアーカイブファイルをサーバーの任意の位置にアップロードします。
今回はusrの直下にtmpファイルを作り、その中にアップロードします。
コマンドによるディレクトリ作り
「Open terminal」から以下のコマンドを入れていきます。
% cd usr …usrディレクトリ内へ移動
% mkdir tmp …tmpフォルダを作る
% cd tmp …tmpディレクトリ内へ移動
上はOpen terminalのコマンドによる操作ですが、WinSCPでディレクトリの作成・移動ができるなら問題はありません。
terminalで操作をしてもWinSCPの画面は一切動きませんが、terminalを切るとそれまで操作していた場所までWinSCPの画面が動きます。
ここに先ほどダウンロードしたアーカイブをWinSCPからアップしましょう。
コマンドによるダウンロードファイルのUP
今ダウンロードしたアーカイブを手作業でUPしましたが、コマンドで直接ダウンロード・アップする事もできます。
% wget http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Jcode-2.07.tar.gz …コマンドで直接アップロード
アーカイブファイルの展開
では次にアップしたアーカイブを展開するコマンドを入れます。
% tar -zxfv Jcode-2.07.tar.gz …ファイルを展開(Jcode-2.07の場合)
これでtmp内のtar.gzファイルが展開され、それぞれ「Jcode-2.07」「CGI-4.52」フォルダができます。
このフォルダ内には構成ファイルが入っています。
PuTTYのsudoコマンドによるインストール
まずはWinSCPでJcode.2.07フォルダ内を確認しましょう。
中にインストール方法を指示するREADMEファイルやINSTALLファイル等があれば、それを参照して下さい。
一般的なインストール手順は以下の通りです。
TTY接続によるインストール操作
ここからはTTY接続でないとできない事が多いので、PuTTYでのコマンド操作になります。
WinSCPメニューから「Open session in PuTTY」アイコンを押します。
先ほどと同様にSSH接続パスワードを入れてログインしましょう。
まずはPuTTYのコマンドで、Jcode.2.07フォルダ内に移動します。
% cd Jcode-2.07 …Jcode-2.07フォルダ内に移動
上記コマンドで構成ファイルの中に移動しないと、以下のインストール操作ができません。
sudo コマンドについて
以下よりコマンドの先頭全てに「sudo」をつけています。
「sudo」がroot権限による命令を意味します。root権限での接続情報をもらったのはこれを使うためです。
先頭にsudoが入る事で、root権限者からの命令として受け付けてくれるようになります。
そのためにもWinSCPでroot権限で接続させた状態で、PuTTY画面を開くようにしましょう。
Makefile.PLの実行
まずはMakefile.PLを起動します。
Makefile.PLは、Makefileを自動で生成するスクリプトです。
今回の様なXS(エクステンション)モジュールであれば、中にこのMakefile.PLが入っているはずです。
Makefileを作成する事で、Perlモジュールをコンパイルできるmakeコマンドが使えるようになります。
% sudo perl Makefile.PL …Makefile.plの実行
これでディレクトリにMakefileができているはずです。
makeコマンドによるコンパイル
Makefileが生成されるとmakeコマンドが実行できます。
makeは、C言語のファイルやXSをコンパイルしてモジュールのインストールの準備をする命令です。
% sudo make
コンパイルコードが続々と表示され、コンパイル中の状態がしばらく続きます。
命令受付の状態になるまでしばらく待ちましょう。
試験スクリプトの実行
makeが完了すると「make test」を実行する事ができます。
「make test」は「t」ディレクトリの中にあるPerlの試験用スクリプトを自動で実行してくれるコマンドです。
% sudo make test
ここでもコマンド表示が動かなくなるまでしばらく待ちましょう。
仮にmakeをしないで「make test」を実行しても、自動的にmakeが直前に実行されるようになっています。
インストール
「make install」を実行する事で、いよいよPerlモジュールのインストールが始まります。
% sudo make install
ここでのインストールとは、必要なファイルをPerlのライブラリのパスのある位置に複製する事を指します。
厳密にはインストールというよりコピーになりますね。
CGI-4.52フォルダ内でも同様に、このインストール作業をおこなって下さい。
Perlモジュールの稼働チェック
これでPerlモジュールのインストールは完了しました。
この後Apacheは特に再起動させる必要はありません。独自に動くプログラムだからです。
それでは冒頭でエラーを出していたCGIをもう一度稼働させてみましょう。
この時CGIの各パーミッションは「755」などに変更しておく必要があります。