2014年9月5日金曜日

Windows Server 2008 R2で苦戦しました

PHPとMySQLによるデータベース管理
会社の仕事の一部としてWindows Server 2008 R2を外部にレンタルし、PHPとMySQLで簡単なWebベースのデータエントリープログラムとデータベースを作成、運用しています。

このサーバー上ではWebサーバーとFTPサーバー機能を持たせ、Web上のフィールドで必要な情報を入れることによって、フォルダを自動生成し、必要なファイルをそこにアップロード/ダウンロードすればいいという仕組みも作っています。本職のプログラマではないのでいたってシンプルなものですが、PHPは手軽な割にはけっこういろいろ遊べます。  

トラブルの始まりは・・・
サーバー上の単純な設定ではこれまでずっと動いていたのですが、トラブルの始まりはユーザを3つほど追加してフォルダごとにアクセス権を変えようとしていた時でした。なんとftprootに置いたいくつかの重要なフォルダの属性がおかしなことになったらしく、外部からFTP接続できなくなってしまいました。始めは例えばhogeというフォルダ内のファイルがダウンロードできないというのが問題でした。  

フォルダ名を元に戻すと外部からアクセスできなくなる!?
アクセス権をいろいろいじってもうまく行かないので、hogehogeという新しいフォルダ名で新たにフォルダを作ってファイルも置き直したら何とか外部からアクセスできるようになりました。 ところがとても不思議なことに、これをもとのhogeというフォルダ名に戻すと、その途端にFTPフォルダとして外部からアクセスできなくなるのです。例えばhogeではなくhoge2なら問題ないのですが、hogeに戻すとダメになるのです。これには途方に暮れました。このまま我慢しようかとも思いましたが、PHPのコードを書き直す作業が発生する他、下手にフォルダ名を変更したまま整合がとれない可能性が残るのも気持ち悪いので、丸々1日七転八倒してしまいました。

設定ファイルをいじってもうまく行かず、最後は力技で
エラーログによるとおそらく原因はapplicationHost.configという設定ファイルの中にFTPサイトのフォルダごとのユーザ権限が記載されている箇所があり、この部分と実際のフォルダのアクセス権限属性にミスマッチがあったのだろうと推測しています。しかし、この設定ファイルのバッティングしていると思われる箇所を消したり、net share korekore /deleteなどといろいろいじってみましたが、結局うまく行きません。設定ファイルは変更して修正しても、サービスやロールをRestartするだけではOSが変更を認識しないようです。 結局、IISマネージャで一度FTPサイトを消去して再度作成し直し、何とか復帰しました!この時同時にftprootフォルダからフォルダも全て一から作成し直しています。  
Windows Server 2008 R2は敷居が高い
私自身がサーバー運用の専門家ではないためいろいろトライ&エラーでここまで構築してだましだまし運用していますが、特にACL(アクセス制御リスト)の理解は決定的に不十分です。 見よう見まねで設定しそれなりに動いてはいますが、一度体系的に学習したいものです。何か良い本などがあれば教えてくださいね!


0 件のコメント:

コメントを投稿