人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Webアプリの大規模改修について

現在、PHP+MySQLで自作したネットショップを運営しております。
この度、(規模が大きくなりそうな)システムの改修が必要になりました。
今までは全てのアクセスに503を返し、その間に作業をしておりました。
今回は時間がかかる&ネットショップをストップしたくないので、
どのように動かしながら作業をすればよいか知恵をお貸しください。

現在、/home/***.com/a/以下をルートとしています。(***.comにアクセスすると/home/***.com/a/index.phpが表示される)
そのため、全て/b/にファイルを移し、作業が完了したら/a/に上書きすればいいのではと思いましたが、PHP、.htaccessファイル内、その他から絶対パスで別ファイルを読み込んでいる箇所が多く、非常に手間です。

/b/以下からのアクセスはrequire('/home/***.com/a/?')となっていても全て/b/にリダイレクトする方法があればよいのではと思います。
そのような方法はありますか?また動かしながらメンテナンスしたいといった場合は通常どのようにするものなのでしょうか?

以上よろしくお願いします。

●質問者: after_333sec
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JULY
●150ポイント

何をどこまで改修するのか、にもよるのですが、ぱっと思いつくのはバーチャルホストかなぁ。

例えば、既存が www.example.com だったとして、改修後のコンテンツを new.example.com でアクセスできるようにしておく。

で、new.example.com で正常に動くのを確認したら、www.example.com が改修後のコンテンツを指すように変更する。

確認作業に使う端末側の hosts ファイル(UNIX 系 OS なら /etc/hosts、Windows なら C:\Windows\System32\drivers\etc\hosts)に、new.example.com の行を書けば、外からアクセスする人は、new.example.com では通常はアクセスできないので、作業中のコンテンツにアクセスしてしまうことは無い。

あと、MySQL 側がどうか? というのはあります。例えば、データベースのテーブル構造に変更があるような場合、どうしても、停止時間を設ける必要があるかもしれません。DB 変更用の SQL 文を予め用意して、止めている間にその SQL 文を実効して、バーチャルホストを変更して、という感じかなぁ。

その停止時間も嫌なら、旧 PHP プログラムで問題が発生しなような DB、プログラムの設計をして、DB を先にアップグレードして「旧プログラム」?「新 DB」の状態を作ってからコンテンツの修正、といった感じになると思います。


2 ● oil999
●150ポイント

/b/以下からのアクセスはrequire('/home/***.com/a/?')となっていても全て/b/にリダイレクトする方法があればよいのではと思います。

httpサーバにApacheをご利用なら、mod_rewriteを使ってリダイレクトするか、そもそもmod_aliasで指し示す物理パスを変更してしまえば実現可能です。

しかし、この方法はおすすめしません。
なぜなら /b/ は開発環境であり、それを丸ごと公開するというのはリスクが大きすぎます。

せっかく大規模改修するのでしたら、リンクは相対パスにして、本番環境と開発環境は共存できるようにすることをお勧めします。

サイトのメンテナンスは、以下の手順で行うことが多いです。

  1. 本番環境と開発環境を分ける。
  2. 開発環境で十分なテストを行う。
  3. 本番環境を停止する。(代理サーバを立てることが望ましいが、それが難しいならmod_aliasですべてのアクセスをメンテナンス中ページにアクセスするようにさせる)
  4. 開発環境を本番環境へコピーする。
  5. 本番環境を再開する。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ