レンタルサーバー間でのファイル共有・https通信
CGIでhttps通信
同じハウジングに入るサーバーや、VPS等であれば、サーバー間でのファイル共有はラクチンですよね。
今回は、ホスティング会社が異なるAとBのサーバー間でファイルを共有したい、そんな依頼をいただいた時に作ったプログラムについて紹介します。
そもそもそのようなトリッキーなことをせずに、同じハウジングに入れれば良いじゃん!と言うのは無しでお願いします(笑)。
手段は沢山あるのですが、簡単に書けるperlのLWP::Simpleの説明です。
・サーバーAは、サーバーBへデータを送る側
・サーバーBは、サーバーAからデータを受け取る側
サーバAに設置するスクリプト
#サーバーBへデータを渡す
@array=("りんご","バナナ","ばなーな","ばなーぬ")
print"Content-type: text/html\n\n";
for (@array){
print "$_#kugiri#";
}
サーバBに設置するスクリプト
#サーバーAからデータを受け取る
$GET_URL="http://○○○.○○/○○" #サーバAに設置したスクリプトのURL
use LWP::Simple ();
$httpbody= LWP::Simple::get($GET_URL);
成功すれば、$httpbodyに「りんご_#kugiri#バナナ_#kugiri#ばなーな_#kugiri#ばなーぬ」が格納されます。
#kugiri#でspilitして利用して下さい。
https通信失敗検知は、if($httpbody eq ""){&error;}などでできます。
かなりシンプルなスクリプトですので簡易的にファイルをやり取りする際に便利です。
セキュリティー的には、ダダ漏れです。サーバAに設置したスクリプトのURLが知られてしまえば、誰でもアクセス可能になりますので
LWP::Simpleを利用して大切な情報の通信は、しない方が無難です。
利用できるホスティングサーバーと利用できないサーバー
データを送る側は、perlが動けばどのようなサーバーでも問題ないです。
送り側は、print"Content-type: text/html\n\n"; で出力するだけですので。
LWP::Simple(受け取り側)では使えるサーバーとそうじゃないサーバーがあります。
NGの場合は、
use LWP::Simple ();
$httpbody= LWP::Simple::get($GET_URL);
で501エラーとなりますので直ぐにわかります。
以前にどこかのサーバーで利用できないことがあったのですが、すみません忘れてしまいました。
改めてテストしてみたところ
- Bizメール&ウェブエコノミー:OK
- さくらインターネットのライト・スタンダード・ビジネス:OK
- エックスサーバーのX10:OK