<< May 2006 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
むっ・・どうやら抜けがあったらしい。

(ノ・・)ン。。。。。。(((●コロコロッ

前回の記事filebankの自動ログインを敢行したのだが、
どうもログインとして認識されていない模様。

(−o−)y−゜゜゜゜゜ シカタネェナァ


と思って放っておいたのだが。
ふとしたきっかけで再チャレンジしてみることにした。
利用したサーバーは前回と同じくさくらインターネット



前回はwgetを使ってファイルバンクにログインする記事を見て、
wgetで挑戦してみたもののPOST送信がコマンドにないことに気がついて断念。
代わりにCurl(Client URL)を利用してログインをしてみた。
結果はこうなっていた。

$ curl 〜〜〜
<meta http-equiv='Refresh' content='0;URL=http://www.filebank.co.jp'>




これを2日に一回Cronにセットして自動ログインとしていたのだが、
3日後には綺麗にファイルが無くなっていた。


( ̄-  ̄ ) ウーン



なかなか手強い。




だけど今回の挑戦で結果が少し変わっていた。
$ curl 〜〜
<meta http-equiv='Refresh' content='0;URL=http://www.filebank.co.jp/cgi-bin/main/main_myinfo.cgi'>



(・∀・)!!おっ・・・なかなかの好感触。
試しにCookieを保存してみると、
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

.filebank.co.jp TRUE / FALSE 1289304691 li
.filebank.co.jp TRUE / FALSE 1289304691 idsave
.filebank.co.jp TRUE / FALSE 0 dsi a8a63sea9ff727fe9d8cb9916eafed17
.filebank.co.jp TRUE / FALSE 0 ssl 0

ちゃんとセッションIDを発行しているようだ。




関連リンク:
ファイルバンク
さくらインターネット
というわけで、借りよっと。

(ノ・・)ン。。。。。。(((●コロコロッ

前回の記事
VPS(Virtual Private Server)と言う選択肢
でVPSを借りようというのを書きました。
借りようと思っているサーバ会社は

今なら初期費用無料らしいです (-。-) ボソッ

ただ、VPSに関して真・パパ氏とkou氏からコメントを頂きましたが、
どちらも微妙というお答えでした。

( ̄-  ̄ ) ウーン ソウナノカァ。。。

と躊躇いましたが(2秒ほど)、
会社を人柱にちょっと試してみることに。


さて、実際やってみると。






・・

・・・

・・・・あれ?普通やん。








SSHでつないで文字をペチッと入力。
即座に画面に反映。


イイジャン(・∀・)!!




やれやれ、どうやら風評だったようだ。
クララオンラインがアウトで、
もう一つはどこだったのだろうか?



私も彼らと同様アメリカにあるサーバを使ったことがある。
と言うより使わされたのだが。

Webページを開くのに10秒ぐらいかかるという致命的なサイトが出来上がっていた。
しかもFTPしかだめで何も出来なかったなぁ。




一方使えるねっとは国内にサーバがあるようだ。
となると、回線による問題はほとんど無いと思っていいだろう。

SSLも格安で証明書が買えるらしい。
一番安いもので1年間¥5,900
( ・_・;)



関連リンク:
使えるねっと
前回の記事
mod_proxy_balancerを使ったロードバランシング(導入編)

で導入はあっさり出来たことをお伝えした。

(ノ・・)ン。。。。。。(((●コロコロッ

しかし、世の中そうは甘くないのだよ。


http://hoge.com/webapp
みたいな感じでサブディレクトリ風に使うのであれば、
特別トラブルは起きない。
だが、どうしても
http://hoge.com
をロードバランシングしたいのだ。
これは変えられない。

すると途端にあちこちのものが動かなくなっていく。
ちなみに設定はこう。
ProxyRequests Off
ProxyPass / balancer://cluster/ lbmethod=byrequests timeout=1
<Proxy balancer://cluster/>
BalancerMember http://xx.xx.xx.xx loadfactor=10
</Proxy>









まず動かなくなったのは、


スラッシュのついていないサブディレクトリ(subdirectory -- without the trailing slash)へのアクセス


どういうことかというと、
RFC的によろしくないURI(URL)を指定した場合は、
サーバは200ではなく30xを返す。
例えば下記のようなURLではそれぞれ
http://hogehoge.com
  301 Moved Permanently
http://hogehoge.com/
  200 OK
http://hogehoge.com/hoge
  301 Moved Permanently
http://hogehoge.com/hoge/
  200 OK
http://hogehoge.com/hoge/hoge.htm
  200 OK

と言った具合になるわけだが、
この301が返ってきたときに、
ブラウザ側にリダイレクトを支持するわけだが、
リダイレクトは
http://hogehoge.comではなく
http://xx.xx.xx.xx(Proxyディレクティブで設定したIP)になっているのだ。

当初、アクセスできない理由がわからなかった。
返す値を変更してみたり、
参照するWebサーバの設定を見てみたりとしたが全くわからず。

これに気がついたのはFirefoxを使っているときだ。
なにげなくステータスバーの一番左を見ていると。

xx.xx.xx.xxにアクセスしています


(゜Д゜)ハァ?
なんだこれ。
おそらくリバースプロキシを使った場合でも出ると思われる。



はてどうするか。
こうなったらリライトの出番だ。
要するに”スラッシュで終わっていないアドレス”を使わなければいい。
なので、”スラッシュで終わっているアドレス”にmod_rewriteで変換する。

RewriteCond %{REQUEST_URI} !^.*/$
RewriteRule ^(.*)$ balancer://cluster$1/ [P,QSA]


これで無理矢理スラッシュつきのディレクトリ参照していることにする。





さて、これでは当然問題が発生する。
感の良い方はわかると思うが。
このままだと、ファイル名を指定した場合も当然スラッシュがくっついてしまう。

そこで条件分岐RewriteCondに
RewriteCond %{REQUEST_URI} !^.*\.[0-9a-zA-Z.]{1,}$

を追加しておく。

まぁ、一応使えるようだ。
いやーはまった、はまった。

(ノ・・)ン。。。。。。(((●コロコロッ

Webサーバの負荷を分散させるために、
Webサーバを複数台用意するわけだが、
その複数台のウェブサーバが全部ひとつのアプリケーションなんですよと教え込むまないといけない。

そのために利用するのがロードバランサー(load balancer)だ。
これに複数台のウェブサーバがひとつのサービスですよと登録しておくと、
あたかもひとつサーバのように動いてくれるわけ。
ただ、ひとつ大きな問題がある。



高いのだ。



ロードバランサーは基本的に高い。
安くても100〜200万円、高いものだと1000万円超えるものまである。
冗長化するためにはロードバランサーも複数台用意するわけだが、
そんな金持ちはそうはいない。


そこで手軽に負荷分散する方法が、
DNSラウンドロビン(DNS Round-Robin)。
ひとつのDNSに複数のAまたはMXレコードを設置して、
そのDNSにアクセスしたときに、
指定するサーバがバラバラになるようにする。

これは非常にお手軽で良いのだが、
これも問題がある。
障害発生時にサーバを指定しなおしても、
ことがDNSだけにすぐには反映されないのだ。

あとDNSサーバがグローバルネットワークにあると、
すべてのウェブサーバにグローバルIPを振らなければならない。
セキュリティー的にもよろしくないと言える。




てきぱき動いてしかも安価な方法はないだろうか?



そこで登場したのがmod_proxy_balancer。
Apache2.2に搭載されているモジュールで、
mod_proxyのリバースプロキシにロードバランシングを付加したものだ。
リバースプロキシとは
 特定のサーバの代理として、そのサーバへの要求を中継するプロキシサーバ。代行されているサーバにアクセスしようとしたユーザは全てリバースプロキシを経由することになるため、サーバが直接アクセスを受けることはなくなる。

 中継時にパケットの内容やURLをスキャンするような機能を組み込めば、セキュリティが強化される。

 また、特にアクセスの多いコンテンツをキャッシュに保存することで高速化したり、パスワード認証によってアクセス制限をするなどの機能を持っていることも多い。

 社内LANなどの内部ネットワークとインターネットとの接点に置かれ、外部からWebサーバなどネットワーク内部へのアクセスを中継することもあるが、その様子が通常のプロキシ(フォワードプロキシ)の「内部から外部へのアクセスを中継する」動作と反対であることが「リバース」の由来であると言われている。
普通のプロキシサーバの機能とは真逆で、
外からのアクセスを制御するもの。
ファイヤーウォールみたいなものと思えばいい。

リバースプロキシだとサーバは基本的にひとつ。
複数指定することも出来るらしいが、
リライトを駆使した高度なものが要求される。

それに比べてmod_proxy_balancerは非常にお手軽だ。
mod_statusと併用すれば、
立派なロードバランサーになる。



ということでさっそく試してみた。
まぁ、あまり気にしないように。

(ノ・・)ン。。。。。。(((●コロコロッ

1.Apache2のMPMはprefork版を使用する
こちらを参照
http://www.php.net/manual/ja/install.unix.apache2.php

apt-get install apache2-mpm-prefork apache2 apache2-prefork-dev


考察
これってApache1と同じって事?
はて、どちらに旨味があるのか。

(ノ・・)ン。。。。。。(((●コロコロッ

PHP5を触り初めて一番最初に悩んだポイント。
それは


MySQL接続




Webアプリにとって、
DB接続って言うのは”肝”である。
如何に効率よく接続・取得・更新を行うかで、
Webアプリのシステムに多大な影響を与える。

PHP4の頃ではmysqlという関数群があった。
もちろんこの関数をソースコードに散りばめると、
それはそれは楽しいことが起こってしまうので、
ラッピングする関数・クラスを作成したり、
PEAR::DBPEAR::MDBを介して使う感じだ。
ただ、もちろんネイティブ関数より重くなるという欠点がある。



その重さを回避するために登場したのが、
PECL::PDOだ。
内容は以前の記事にも書いたのでそちらを見て欲しい。
PEAR::DBをC++で作成したことにより、
全体のシステムを軽くするという試みだ。
是非とも利用したい。



だが、もう一つPHP5には面白いものがある。
mysqli(MySQL 改良版拡張サポート)というのがそれだ。
これはMySQL4.1以降で定義される新しいAPIを利用した関数で、
MySQL4.1以降にある新機能をうまく利用することが出来る。
mysqlの拡張版と言ったところだ。

利点はいくつかある。
・オブジェクトAPI
PHPの関数はそのまま使うと、
戻り値は数値だったり文字列だったり、リソースIDだったりするわけだが、
mysqliはnewすることでオブジェクトを返してくる。
OOプログラムの親和性が高いというわけだ。
またエラーがあったときは例外を投げてくれるので、
それを受けて例外処理をすることも出来る。
・SQL構文解析
PEAR::DBにprepareというSQLの構文を解析するものがついているのだが、
それがAPIに搭載されている。
引数が異なるSQLを作成するときに構文解析が1回で済む。
・複数のクエリを同時に実行
mysqlでは1クエリでSQL一文しか投げられないのだが、
mysqliでは複数のクエリをセミコロン区切りで送信できる。


うむ。これも是非とも使いたいところだ。
ひとつ借りておくか。

(ノ・・)ン。。。。。。(((●コロコロッ

サーバーってのはひとつあると何かと便利。
ネット上に置いてあるサーバが一台あるととりあえず何でも出来る。
WEBサーバ、メールサーバ、DNSサーバ、ファイルサーバ、CVSサーバなどなど。
Deamonさえ組み込んで、ポートが開いていれば基本的に何でも出来る

ほとんどの技術者は自身でサーバを構築し、
自宅に置いてインターネット上に公開している。
先の利点はもちろん、
問題があったときにメンテナンスがしやすいからだ。
だけど、ひねくれ者の私はそれをやらない。

理由は簡単。




邪魔

五月蠅い




精神的なものじゃない。
物理的に邪魔なのだ。
サーバーって言うのは24時間365日稼働しているものだ。
ただでさえ部屋が狭いのに、
そこにデカデカと稼働しっぱなしのPCを置くとなると邪魔でしようがない。

加えてPCっていうのは基本的にうるさい。
CPUに乗っかっているFAN,前部・後部についているFAN,
グラフィックボードについているファンが、
一定の周波数で鳴り続ける。
自宅で利用しているPCですらうるさく感じてファンなしのノートPCにしたぐらいだ。
サーバなんて私には耐えられない。

さらにさらに電気代も結構かかる。
自宅にサーバーを置けばお金がかからないと思っている人もいるようだが、
サーバーってのは電気代の固まりだ。
そして電気代のかからないサーバはスペックがショボくなるので使えるかどうかは微妙なところだ。



それでも!?
・・・一台欲しい。


( ̄-  ̄ ) ウーン


そこで思いつくのが
レンタルサーバ



レンタルサーバとは、
ひとつのサーバを複数人で共有する方式で、
OS上に複数のユーザーを作って、
ユーザー単位で利用できるようにしている。
このブログもそのレンタルサーバ(さくらインターネット)に設置している。

ただ、これの問題点は、


「できることが制限されている」


ことだ。
このページのように「用途はWEBサーバ」と内容を限定している場合は、
便利でしかも低価格だ。

だけど今回のように「なんでもできる」サーバが必要な場合は、
ちょっと使えない。



次に考えられるのが

専用サーバ




どこかのサーバを月額n円で借りる方法。
物理的な問題はすべて解決する。

(・・)(。。)(・・)(。。)ウンウン

だが・・・




高い。。。



安くても月額1万円はするだろう。
しかもサーバ購入費は別だ。
法人でやっているならともかく、
個人でそれをやるのは無理だ。



( ̄-  ̄ ) 他に方法はないのか・・・?



VPSってのはどうだ?







はっ!?また神の声が!?
VPSってなんだ?(・ω・)ノ






VPS(Virtual Private Server, 仮想専用サーバ)とは
レンタルサーバのサービス品目の一つで、共用サーバながら仮想的に専用サーバと同等の機能を提供するサービス。
物理的に専用サーバを提供するよりも安価に、専用サーバと同等の機能を提供できるため、各社が競って導入している。
共用サーバに特殊なソフトをインストールし、個々のユーザがあたかも管理者権限(root権限)を持っているかのように設定することで、管理者権限が必要なソフトを動作させるなどの専用サーバにしかできない機能を実現している。
サーバ一台用意して、
その中に複数のOS領域を設ける。
そして、1ユーザー1OSという形で間貸しするレンタルサーバの形式。
スペックは専用サーバに劣るものの、
ひとつのOSを丸々利用できる。
そして、専用サーバに比べてリーズナブルだ。



とはいえまだやっているレンタルサーバ会社は少ない。
ちょっと調べてみた。
ちょっと使ってみよう。

(ノ・・)ン。。。。。。(((●コロコロッ

ブログをやるとどうしても各種スパムにあってしまう。
コメントスパム、トラックアックスパム、リファラスパムなどなど。
リファラスパムはともかく、
トラックバックスパムとコメントスパムはめちゃめちゃ多い。

ブログを書くたびに必ずやる作業が、
スパムの削除。
最近これが異常に面倒くさくなってきた
ちょっと強めにフィルタを設定したいところだ。


けど、sbのフィルタは拒否機能ではなく承認待ち機能だ。
管理画面を開くと承認待ち状態のスパムたちがうようよしている。
なんとか良い対策方法はないものか。。。




ちょっと調べてみよう
 
こういうのがあるらしい。
スパムフィルター(簡易版)
どれどれ。。。
( ̄-  ̄ ) ウーン

(ノ・・)ン。。。。。。(((●コロコロッ

RSSリーダーをへろへろ眺めると。
こんな記事が。
In-Depth ajaxWrite Review

ajaxWrite?
なんですかそれ。
ajaxが書けるのか?(意味不明)

ちょっとだけ気になったので内容を見てみることに。



えっ・・・ワープロって事か?
どうやらFirefox上で動作するWebベースのワードプロセッサのようだ。
しかもMS Wordそっくり。
We have preloaded this Microsoft Word .doc file to show off some of the capabilities of ajaxWrite. You can edit one of your own .doc files by selecting “File: Open”, or create a new document by selecting "File: New". (You'll be prompted to name your new file before it opens.) Any document can then be saved as a .doc file to a local drive.

なにやらWordの.docファイルが使えるらしい。




関連リンク:
www.ajaxwrite.com
AjaxWrite to "Compete" with MS Word
Bye Bye Microsoft Word, Hello ajaxWrite
Web 2.0 Watch: ajaxWrite
コメントがぱたっとこなくなったのだが、
はて?


とおもっていたら、
どうやら拒否していたらしい。
ただ、全解放するとスパムラッシュで困ったものだ。
( ̄-  ̄ ) ウーン
BlogRanking
オススメしたいグッズ
我の創りし物
カテゴリアーカイブ
banners
loglog
banners
Valid XHTML 1.1!
記事一覧
月別アーカイブ
最近のコメント
  • filebank3日に一回自動ログイン
    やっぱ (05/10)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    smilkobuta (04/25)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    dozo (04/24)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    smilkobuta (04/20)
  • VPSレンタルサーバー使えるねっと イイジャン!!(・∀・)
    dozo (04/20)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    dozo (04/19)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    smilkobuta (04/18)
  • レンタルサーバーVPS(Virtual Private Server)と言う選択肢
    kou (04/17)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    smilkobuta (04/15)
  • Seagull Frameworkを日本語対応に(ローカライズ)
    dozo (04/15)
最近のトラックバック
リンク
リンク
関連用語
Powered by