いよいよ本番です。本番の運用は出来るだけ自動的に行います。トップページ更新とバックアップを自動的にしています。
本番環境の構築
Uprush のサーバ環境は以下のようになっています。

本番サーバ(CentOS):DELL PowerEdge SC440、Intel(R) Pentium(R) D CPU 3.00GHz、メモリ1G。
Uprush は主に下記ソフトを利用して運用しています。
CentOS + Apache + Tomcat + OracleXE + Sendmail
Oracle XE
サーバのOSとソフトウェア構築について、こちら に非常に詳しく書いてあります。ここはOracleXEについてだけ、簡単に説明します。
Oracle Database 10g Express Editor (OracleXE)はオラクルが提供する、Oracle Database の無償版です。
ライセンスと制限
・Free to develop, deploy, and distributeとある。
商用利用可能 (開発/デモ版ではない)
再配布可能 (アプリケーションに同梱して再配布できる)
・制限
最大4GBのユーザデータ
1インスタンスのみ (SIDはXEで固定)
1CPUしか利用しない (2CPU以上あっても活用できない)
最大1GBのメモリしか利用しない (1GB以上あっても活用できない)
ライセンス上には特に支障がないと思われます。幾つかの制限が設けられていますが、小規模なサイトの場合は十分行けるでしょう。
インストール
OracleXE はRPMで提供され、非常に簡単にインストールできます。インストール手順は こちら を参照します。
* Oracle Enterprise Edition を利用した場合は、コンテンツ CentOS5上のOracle 10g インストール を参照します。
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/scripts/runsqlplus.sh を実行してsqlplus を起動し、sys ユーザでログインします。本番専用表領域を作成することで、運用をより容易に行います。
connect sys/sys_password@192.168.1.x:1521/xe as sysdba;
create tablespace tbs_product datafile ’/usr/lib/oracle/xe/oradata/XE/tbs_product.dbf’ size 100M
extent management local autoallocate; |
本番用ユーザを作成します。
create user user_product identified by your_password default tablespace tbs_product
temporary tablespace temp
quota unlimited on tbs_product;
grant connect to user_product;
grant resource to user_product; |
開発用DBと本番DBは同じサーバー上にある場合、開発用ユーザを作成します。
create user user_develop identified by your_password default tablespace users
temporary tablespace temp
quota unlimited on users;
grant connect to user_develop;
grant resource to user_develop; |
最後は 本番用ユーザでログインして、テーブル作成などを行います。
disconnect;
connect user_product/your_password@xe; |
Javaバッチ
お薦めコンテンツなど週一回しか更新しない内容についてを、毎週月曜日の夜間バッチで行います。
Cronなどを利用しても実装可能ですが、一元管理のため、Javaで実装するようにしました。Batch servlet の init メソッドに、バッチ スケジューラを起動し、バッチの起動を待機します。起動時間になったら、新しいスレッドを起動してバッチを実行します。また、随時起動できるように、各 バッチはMainメソッドを実装します。最後、管理のため、管理者ページを設け、バッチの起動フラグ、起動時間とサイクルを制御します。手動起動ボタンも 設けます。
バックアップ
コンテンツとデータベースのデータを毎日自動的にバックアップします。サイトの規模はまだ小さいため、簡単にバックアップできます。
まずはサーバー再構築のために、構築時の手順書をきちんと書いときます。念のため、サーバー設定に変更があった場合、/etc フォルダを圧縮してバックアップをとりましょう。
Oracle のバックアップ
続いてはデータベースのバックアップ。Oracle は色んなベックアップの方法を提供しています、中にはRMANの様な高機能ユーティリティも存在しますが、Uprush はまだ規模が小さいし、データの更新も頻繁に行われていない。ですので、最も簡単なやり方で行っています。Data Pump (expdp) を使って論理バックアップを利用しています。
バックアップ先フォルダ(/usr/lib/oracle/xe/oradata/dmp_dir1)をOracleに登録します。
$ sqlplus sys/your_password as sysdba
SQL> create directory dmp_dir1 as ’/usr/lib/oracle/xe/oradata/dmp_dir1’;
SQL>
SQL> grant read,write on directory dmp_dir1 to user_product;
SQL>
SQL> select directory_name,directory_path from dba_directories
2 where directory_name = ‘DMP_DIR1’;
DIRECTORY_NAME DIRECTORY_PATH
----------------------- -------------------------------------
DMP_DIR1 /usr/lib/oracle/xe/oradata/dmp_dir1 |
バックアップ・スクリプトを作成し、xe-backup.sh として保存します。
#!/bin/bash
# oracle env
ORA_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
ORA_OWNER=oracle
export ORACLE_HOME=$ORA_HOME
# バックアップ先ディレクトリ
BACKDIR=/usr/lib/oracle/xe/oradata/dmp_dir1
USERID=user_product
USERPASS=your_password
# バックアップ先ディレクトリ再作成
rm -rf $BACKDIR
mkdir -p $BACKDIR
chown $ORA_OWNER:dba $BACKDIR
su - $ORA_OWNER -c "$ORA_HOME/bin/expdp $USERID/$USERPASS SCHEMAS=your_schema DUMPFILE=dmp_dir1:your_schema.dmp LOGFILE=dmp_dir1:your_schema_exp.log" |
バックアップ定期的に自動実行します。
[root@uprush ~]# crontab -e
00 05 * * * /root/xe-backup.sh ← 追加(毎日5:00にバックアップを実行する) |
コンテンツのバックアップ
コンテンツのバックアップは、tarコマンドで圧縮してバックアップ先ディレクトリへ退避しておきます。また、サーバーのハードディスク故障に備えて、バックアップ・ファイルを別WindowsクライアントからWinSCPを利用して取得します。
tar によるバックアップとWinSCPのインストールについて、こちら と こちら は非常に詳しく書いてありますので、今回は割愛します。ここでは、Windows クライアント起動時、自動的にサーバーから、バックアップ・ファイルを取得することについて簡単に説明します(WinSCPは正常にインストールされたこと)。
WinSCP起動用バッチ C:/winscp.bat を作成します。
@echo off
echo getting backup from websrv...
del C:\winscp.log
cd C:\Program Files\WinSCP
winscp /script=C:/winscp_get.scr /log=C:/winscp.log
pause |
バックアップ・ファイル取得スクリプト C:/winscp_get.scr を作成します。
option batch on
option confirm off
option transfer binary
option synchdelete
open scp://your_user:your_password@your_server:22/home/your_home
synchronize local C:\local_backup_folder server_backup_forder
close
exit |
Windows 起動時、自動取得するよう、上記 winscp.bat を「C:\Documents and Settings\YOUR_USER\スタート メニュー\プログラム\スタートアップ」にコピーする。
以上で、毎日のバックアップは自動的に行うようになりました。ただし、上記やり方はあくまでも小規模なサイトの場合の話です。大規模な運用の場合は、テープなどのバックアップ方法と故障時のリカバリなどをきちんと検討しましょう。
最後
運用についてはコンテンツ Uprush 運用日記 に記録します。これで、Uprush 構築時のメモを書きました。では、あなたも自分の開発経験をシェアしませんか? |