Ubuntu 10.04 LTS サーバーに OpenERP 6 をインストールする方法
目次
- 導入の目的と前提
- 準備(最小インストール・SSH・更新)
- ステップ 1: サーバーの構築
- ステップ 2: OpenERP 用システムユーザーの作成
- ステップ 3: PostgreSQL のインストールと設定
- ステップ 4: 必要な Python ライブラリをインストール
- ステップ 5: OpenERP サーバーと Web クライアントの配置
- ステップ 6: 設定ファイルの作成と初回起動確認
- 運用とセキュリティ(SSL、SSH 鍵、ファイアウォール)
- アップグレード戦略とカスタムモジュールの扱い
- バックアップと復元のベストプラクティス
- トラブルシュートのチェックリスト
- ロール別導入チェックリスト
- 受入基準
- 決定フローチャート
- 1 行用語集
- 要点まとめ(サマリー)
重要: 本チュートリアルは Alan Lord による原稿を元に日本語へ翻訳・整理したものです。原文は以下にあります。
http://www.theopensourcerer.com/2011/04/19/how-to-install-openerp-6-on-ubuntu-10-04-lts-server-part-1/ http://www.theopensourcerer.com/2011/04/21/how-to-install-openerp-6-on-ubuntu-10-04-lts-server-part-2-ssl/
導入の目的と前提
このガイドは、外部からアクセス可能なサーバー上に OpenERP を設置する際に、以下を満たすことを目的とします。
- 暗号化された(SSL)経路でのみ GTK クライアント、Web ブラウザ、WebDAV、CalDAV からアクセス可能にすること
- 拡張やアップグレードが容易で、カスタマイズを妨げない構成にすること
注: apt パッケージで簡単に導入する方法もありますが、パッケージ版はバージョンが古い、制御が効きにくい、アップデートやパッチの管理が難しい場合があるため、ここではソースベースでの手動インストール手順を示します。
準備(最小インストール・SSH・更新)
- 前提 OS: Ubuntu 10.04 LTS の最小インストール
- ネットワーク接続とパッケージリポジトリへのアクセス
- root または sudo 権限を持つユーザー
まずは最小インストールでシステムを構築し、SSH と基本的な保護ツールを入れます。SSH はインストール時に入れるか、後から追加できます。
sudo apt-get install openssh-server denyhosts
denyhosts はブルートフォース対策の一例です。他のツール(fail2ban 等)を好む場合はそちらを使ってください。パスワード認証を避け、公開鍵認証を利用することを強く推奨します。
パッケージを最新化します:
sudo apt-get update
sudo apt-get dist-upgrade
必要に応じて再起動し、SSH ログインが継続して利用できることを確認します。
ステップ 1: サーバーの構築
この節は上と重複しますが、以下を確認してください。
- 時刻同期(ntp)を入れておくと SSL 証明書の検証などで有利です。
- 最小限のサービス構成にして不要なパッケージは入れない。
- ファイアウォールの基本ポリシーを決める(後述)。
ステップ 2: OpenERP 用システムユーザーの作成
OpenERP を所有し実行する専用のシステムユーザーを作成します。ホームは /opt/openerp にします。
sudo adduser --system --home=/opt/openerp --group openerp
解説: system ユーザーは UID が 1000 未満で、ログインシェルが /bin/false などに設定され、インタラクティブログインが無効になります。/opt/openerp はサーバーコードと Web クライアントを置く場所として使います。別の場所を選ぶ場合は、後続のパスを適宜変更してください。
ステップ 3: PostgreSQL のインストールと設定
OpenERP は PostgreSQL を使用します。PostgreSQL をインストールし、openerp 用のデータベースユーザーを作成します。
sudo apt-get install postgresql
postgres ユーザーに切り替えて、OpenERP 用のロールを作成します。
sudo su - postgres
createuser --createdb --username postgres --no-createrole --pwprompt openerp
パスワード入力プロンプトが表示されます。後で設定ファイルにこのパスワードを記入するので忘れないでください。必要に応じて superuser 権限の付与を検討してください(チュートリアルでは一例として y を示しています)。完了したら exit で戻ります。
exit
セキュリティ注意点: 運用環境では、PostgreSQL の listen_addresses や pg_hba.conf を適切に設定し、不要な外部接続を遮断してください。OpenERP と同一マシンに置く場合はローカルソケット接続に限定することができます。
ステップ 4: 必要な Python ライブラリをインストール
サーバー本体に必要な Python パッケージをインストールします。下記は OpenERP 6 系で必要とされる主要パッケージです。
sudo apt-get install python python-psycopg2 python-reportlab \
python-egenix-mxdatetime python-tz python-pychart python-mako \
python-pydot python-lxml python-vobject python-yaml python-dateutil \
python-pychart python-pydot python-webdav
Web クライアント(web)を使用する場合は追加で以下を入れます:
sudo apt-get install python-cherrypy3 python-formencode python-pybabel \
python-simplejson python-pyparsing
注: 環境によっては重複パッケージや不要なパッケージが含まれます。Python 仮想環境(virtualenv)を使いたい場合は、パス管理と依存関係の分離が容易になりますが、本ガイドはシステム環境へのインストール手順に沿っています。
ステップ 5: OpenERP サーバーと Web クライアントの配置
wget を使ってソースアーカイブを取得し、/opt/openerp に展開します。執筆時点では OpenERP 6.0.2 が例として使われています。最新バージョンを確認して URL を適宜変更してください。
wget http://www.openerp.com/download/stable/source/openerp-server-6.0.2.tar.gz
Web クライアントを使う場合:
wget http://www.openerp.com/download/stable/source/openerp-web-6.0.2.tar.gz
/opt/openerp に移動して展開します。
cd /opt/openerp
sudo tar xvf ~/openerp-server-6.0.2.tar.gz
sudo tar xvf ~/openerp-web-6.0.2.tar.gz
所有権を openerp ユーザーに変更します:
sudo chown -R openerp: *
実運用での扱いを簡単にするため、サーバーと web のディレクトリ名を短くします(将来の上書き・差分管理を考慮した運用例)。
sudo cp -a openerp-server-6.0.2 server
sudo cp -a openerp-web-6.0.2 web
運用上のヒント: シンボリックリンクを使う方法もありますが、著者はテスト用に抽出した最新版を別ディレクトリに置き、安定を確認してから cp で上書きする方法を推奨しています。これによりカスタムモジュールやレポートが適切に残りやすくなります。
ステップ 6: 設定ファイルの作成と初回起動確認
サーバーのデフォルト設定ファイルを編集し、/etc/openerp-server.conf として保存します。以下はチュートリアル内で使われている設定ファイルの例で、コメントを日本語化してあります。実運用では管理者パスワードや db_password を適切に設定してください。
[options]
; データベース操作を許可する管理パスワード
; サーバーがパスワード変更時に書き込みます
; !! このファイルは安全に保管してください !!
; admin_passwd = admin
root_path = /opt/openerp/server/bin
without_demo = False
verbose = False
; データベース設定
db_user = openerp
db_password = ******
; データベースを起動時に自動チェックするには、DB を作成した後に次の行のコメントを外してください。
; db_name = False
db_port = False
db_host = False
db_maxconn = 64
; ネットワーク設定
xmlrpc = True
xmlrpc_interface =
xmlrpc_port = 8069
netrpc = True
netrpc_interface =
netrpc_port = 8070
; SSL 経由の xml-rpc を有効にするには以下のコメントを外してください。
;xmlrpcs = True
;xmlrpcs_interface =
;xmlrpcs_port = 8071
;secure_pkey_file = /etc/ssl/openerp/server.pkey
;secure_cert_file = /etc/ssl/openerp/server.crt
; ログ設定
logfile = /var/log/openerp/openerp-server.log
syslog = False
logrotate = True
log_level = info
; データベース一覧表示を防ぐには False にします
list_db = True
addons_path = /opt/openerp/server/bin/addons
demo = {}
soap = False
reportgz = False
translate_modules = ['all']
; 静的 HTTP パラメータ
static_http_enable = False
static_http_document_root = /var/www/html
static_http_url_prefix = /
; 送信メール設定
;smtp_user = [email protected]
;email_from = "OpenERP Support" <[email protected]>
;smtp_port = 25
;smtp_password = ******
;smtp_ssl = True
;smtp_server = mail.example.com
保存後、ファイルの所有権とアクセス権を変更します:
sudo chown openerp:root /etc/openerp-server.conf
sudo chmod 640 /etc/openerp-server.conf
次に、db_password にステップ 3 で設定した PostgreSQL ユーザーのパスワードを記入します。エディタは nano 等を使用してください。
sudo nano /etc/openerp-server.conf
設定ができたら、手動でサーバーを起動して動作確認をします(ただしこの起動は現在のシェルユーザーで動くので、まだ openerp ユーザーとしての起動ではありません)。
/opt/openerp/server/bin/openerp-server.py --config=/etc/openerp-server.conf
実行中、PostgreSQL に接続できない等のエラーが表示された場合は設定を見直してください。動作確認後、CTRL+C で停止します。
サービス化と自動起動(概略)
サーバーを実運用する場合、init スクリプトや Upstart/System V スクリプトを用意し、openerp ユーザーで起動するようにします。以下は作業指針です。
- /etc/init.d/openerp のような起動スクリプトを作成し、/opt/openerp/server/bin/openerp-server.py を起動・停止できるようにする。
- スクリプト内で USER, BIN_PATH, CONFIG_FILE 等を変数化する。
- chkconfig/update-rc.d を使ってブート時に有効化する。
- ログ出力先を /var/log/openerp にし、logrotate 設定を追加する。
具体的なスクリプトは配布環境や好みに依存するため、ここでは省略しますが、init スクリプト作成時は必ず openerp ユーザーとして実行されることを確認してください。
SSL とリバースプロキシ(推奨)
直接 OpenERP の SSL 機能を使うこともできますが、一般的には以下のような構成が運用上便利です。
- フロントに Nginx または Apache を置き、SSL 終端(HTTPS)を行う。
- バックエンドの OpenERP サーバーはローカルの HTTP(XML-RPC)で通信させる。
- 静的コンテンツや Web クライアントはフロントエンドでキャッシュ・圧縮する。
利点: TLS 証明書の管理、ロードバランス、DDoS 対策、プロキシレベルのリクエスト制御が行いやすい。
参考: OpenERP の xmlrpcs 設定で直接 TLS を有効化することも可能ですが、運用・監査・証明書管理の観点からリバースプロキシ方式が一般的です。
アップグレード戦略とカスタムモジュール管理
- コードは /opt/openerp/server/ にバージョンごとのディレクトリを置き、運用中の短い名前(server)に上書きコピーする方法を採っています。テスト環境で新バージョンを検証してから本番に適用してください。
- カスタムモジュールは addons_path の外(例: /opt/openerp/custom-addons)に置き、上書きや差分の影響を受けにくくすることを検討してください。
- データベースのスキーマ変更を伴う大きなバージョンアップは必ずバックアップを取得し、ステージング環境でリハーサルを行ってから実行すること。
バックアップと復元のベストプラクティス
- PostgreSQL の pg_dumpall や pg_dump を使い、定期バックアップを取得する。
- バックアップスクリプトは自動化し、別ホストやオブジェクトストレージに保管する。
- バックアップの復元手順を文書化し、定期的に復元テストを行う。
簡単な例:
sudo -u postgres pg_dump openerp | gzip > /var/backups/openerp-db-$(date +%F).sql.gz
トラブルシュートのチェックリスト
- PostgreSQL 接続エラー: /etc/openerp-server.conf の db_user/db_password を確認。pg_hba.conf の接続許可を確認。
- ポート衝突: xmlrpc_port が他プロセスと衝突していないか確認。
- 権限エラー: /opt/openerp 以下と /etc/openerp-server.conf の所有者が openerp になっているか確認。
- ログ確認: /var/log/openerp/openerp-server.log をチェック。
- モジュールのロード失敗: addons_path に正しく配置されているかを確認。
ロール別導入チェックリスト
システム管理者(サーバー構築):
- OS パッチ適用・時刻同期の設定
- Firewall/UFW の基本ルール設定
- SSH 公開鍵方式の強制
- fail2ban/denyhosts の導入
DBA(データベース管理):
- PostgreSQL のメンテナンス(vacuum/analyze)計画
- バックアップと復元手順の自動化
- ユーザー権限と接続制御の設定
アプリ担当(OpenERP 管理):
- addons の管理ポリシー定義
- アップグレード手順とテスト計画
- SSL 証明書の更新手順
受入基準
- OpenERP サーバーが system ユーザー openerp で起動すること
- PostgreSQL に接続でき、管理ユーザーで DB 作成が可能であること
- ブラウザから Web クライアントに HTTPS(または内部で TLS 終端された HTTP)でアクセスできること
- ログが /var/log/openerp に出力されること
- 定期バックアップが取得でき、復元テストが成功すること
決定フローチャート
flowchart TD
A[新規インストールかアップグレードか?] -->|新規| B[ソースからインストール]
A -->|アップグレード| C[ステージングでテスト]
C --> D{互換性あり?}
D -->|はい| E[本番に適用]
D -->|いいえ| F[対応作業(カスタムモジュール修正等)]
F --> C
B --> G[PostgreSQL 設定]
G --> H[OpenERP 設定ファイル作成]
H --> I[テスト起動]
I --> J{正常起動?}
J -->|はい| E
J -->|いいえ| K[ログ解析と修正]
K --> I
1 行用語集
- OpenERP: オープンソースの ERP ソフトウェア(現 Odoo の前身)
- addons_path: OpenERP がモジュールを検索するディレクトリ
- xmlrpc/xmlrpcs: XML-RPC 通信(xmlrpcs は TLS/SSL 経由)
- pg_hba.conf: PostgreSQL のクライアント接続制御ファイル
よくある代替アプローチ
- apt パッケージによるインストール: 簡単だがバージョンが古い場合がある。スピード重視の PoC に有効。
- 仮想環境(virtualenv)やコンテナ(Docker)を使う方法: 依存分離、再現性、CI/CD との統合が容易。ただし本記事は Ubuntu システムへの直接インストールを前提としています。
- マネージドサービス: インフラ運用を外部に委ねたい場合はホスティングサービスを検討する。
セキュリティ強化の注意点
- SSH は公開鍵認証にし、root ログインを禁止する。
- ファイアウォールで OpenERP のポート(例: 8069)に対して外部アクセスを必要最小限に制限する。
- SSL は必ず導入し、証明書の自動更新(Let’s Encrypt 等)を検討する。
- ログと監査: ログは外部に転送して改ざんに備える。
移行・互換性のヒント
- Ubuntu のメジャーアップグレード(例: 10.04 から 12.04 以降)では Python バージョンやライブラリが変わるため、移行前に依存関係の再検証が必要です。
- OpenERP のメジャーバージョン間では DB スキーマ変更が発生する可能性があるため、アップグレードツールやリリースノートを確認してください。
トラブルシュート例(実践的手順)
- サービスが起動しない場合: /var/log/openerp/openerp-server.log にエラーを確認。
- PostgreSQL への接続失敗: sudo -u postgres psql で手動接続できるか確認。pg_hba.conf を確認し、必要であればローカル接続を許可。
- モジュールロードエラー: addons_path とモジュールの所有権(openerp:openerp)を確認。
- SSL 関連の問題: ブラウザで証明書チェーンを確認、サーバー証明書と中間証明書が正しく設定されているか検証。
要点まとめ(サマリー)
- OpenERP をソースからインストールすると、バージョン管理やカスタム化、アップグレード判断がしやすくなる。
- PostgreSQL のユーザーと権限設定、設定ファイルのパーミッション管理、そして SSL による通信保護が重要。
- アップグレード前のステージング検証とバックアップ・復元テストは必須。