概要
この章では、OpenERP(サーバー本体)と OpenERP Web クライアントの起動スクリプトをインストールし、自動起動/停止を設定する手順を説明します。手順は主に SysV 互換の init スクリプト(/etc/init.d)を対象としていますが、最後に systemd 環境での留意点と簡易ユニットファイル例も示します。
重要な用語(1行定義):
- init スクリプト: システム起動時にサービスを開始/停止するための従来型スクリプト。
- systemd ユニット: modern な Linux ディストリビューションで使われるサービス定義ファイル。
ステップ7 — 起動スクリプトのインストール
最終ステップとして、サーバーを自動で起動・停止し、アプリケーションを適切なユーザー権限で実行するためのスクリプトをインストールします。以下はサンプルの init スクリプトです(変更せずそのまま配置して構いません)。
#!/bin/sh
### BEGIN INIT INFO
# Provides: openerp-server
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Enterprise Resource Management software
# Description: Open ERP is a complete ERP and CRM software.
### END INIT INFO
PATH=/bin:/sbin:/usr/bin
DAEMON=/opt/openerp/server/bin/openerp-server.py
NAME=openerp-server
DESC=openerp-server
# Specify the user name (Default: openerp).
USER=openerp
# Specify an alternate config file (Default: /etc/openerp-server.conf).
CONFIGFILE="/etc/openerp-server.conf"
# pidfile
PIDFILE=/var/run/$NAME.pid
# Additional options that are passed to the Daemon.
DAEMON_OPTS="-c $CONFIGFILE"
[ -x $DAEMON ] || exit 0
[ -f $CONFIGFILE ] || exit 0
checkpid() {
[ -f $PIDFILE ] || return 1
pid=`cat $PIDFILE`
[ -d /proc/$pid ] && return 0
return 1
}
case "${1}" in
start)
echo -n "Starting ${DESC}: "
start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "${NAME}."
;;
stop)
echo -n "Stopping ${DESC}: "
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \
--oknodo
echo "${NAME}."
;;
restart|force-reload)
echo -n "Restarting ${DESC}: "
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \
--oknodo
sleep 1
start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "${NAME}."
;;
*)
N=/etc/init.d/${NAME}
echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
このファイルを /etc/init.d/openerp-server として保存し、実行権限と所有者を設定します:
sudo chmod 755 /etc/init.d/openerp-server
sudo chown root: /etc/init.d/openerp-server
重要: スクリプトと設定ファイルの内容は実行環境に応じてパスやユーザー名を確認してください。
ログディレクトリの作成
設定ファイルにはログ出力先が記載されています。サーバーが書き込みできるようにログディレクトリを作成し、openerp ユーザーが書き込めるように権限を付与します。
sudo mkdir /var/log/openerp
sudo chown openerp:root /var/log/openerp
ステップ8 — サーバーの動作確認
サーバーを起動してログとプロセスを確認します。
sudo /etc/init.d/openerp-server start
ログファイルを閲覧して起動メッセージやエラーを確認します。
less /var/log/openerp/openerp-server.log
問題があればここで立ち戻り、設定や依存ライブラリ、ファイル権限、Python のパスなどを確認してください。起動できない状態で先に進むのは避けるべきです。
GTK クライアント(または該当クライアント)からサーバーに接続すると、初回ログイン画面が表示されるはずです:
OpenERP - First Login
この表示はサーバーが接続を受け付けているが、まだデータベースが構成されていないことを意味します。
管理者(super admin)パスワードの変更
デフォルトの super admin パスワードは “admin” のままになっています。これを強力なパスワードに変更してください。GTK クライアントでは、ファイルメニュー → Databases → Administrator Password から変更できます。
注意: このパスワードは /etc/openerp-server.conf にプレーンテキストで保存されます。そのため設定ファイルの所有者とパーミッションを openerp と root のみに制限しておくことが重要です。
メモ: パスワードを変更すると OpenERP が設定ファイルを上書きし、コメントが消えたりエントリの順序が変わったりする場合があります。これは実運用で観察される挙動です。
サーバーの停止も確認します:
sudo /etc/init.d/openerp-server stop
ログとプロセスリストを再確認して適切に停止したことを確認してください。
ステップ9 — 自動起動/停止の設定
動作に問題がなければ、Ubuntu(SysV 互換)で起動時に自動で開始/停止するよう登録します:
sudo update-rc.d openerp-server defaults
サーバーを再起動して、自動起動が機能するか確認してください。起動済みプロセスの確認例:
ps aux | grep openerp
表示例:
openerp 708 3.8 5.8 181716 29668 ? Sl 21:05 0:00 python /opt/openerp/server/bin/openerp-server.py -c /etc/openerp-server.conf
ログや GTK/Web クライアントからの接続で稼働を確認できます。
ステップ10 — Web クライアントの設定と自動化
Web クライアントはブラウザ経由で OpenERP を提供するサーバー型アプリケーションです。インストール手順は基本的にサーバー本体と同じ流れ(設定ファイルの配置、ログディレクトリ、init スクリプトの配置、権限設定、自動起動登録)を繰り返します。
デフォルトの web クライアント設定例(/opt/openerp/web/doc/openerp-web.cfg にあるもの):
[global]
server.environment = "development"
# Some server parameters that you may want to tweak
server.socket_host = "0.0.0.0"
server.socket_port = 8080
# Sets the number of threads the server uses
server.thread_pool = 10
tools.sessions.on = True
tools.sessions.persistent = False
# Simple code profiling
server.profile_on = False
server.profile_dir = "profile"
# if this is part of a larger site, you can set the path
# to the TurboGears instance here
#server.webpath = ""
# Set to True if you are deploying your App behind a proxy
# e.g. Apache using mod_proxy
#tools.proxy.on = True
# If your proxy does not add the X-Forwarded-Host header, set
# the following to the *public* host url.
#tools.proxy.base = 'http://mydomain.com'
# logging
#log.access_file = "/var/log/openerp-web/access.log"
log.error_file = "/var/log/openerp/openerp-web-error.log"
log.access_level = "INFO"
log.error_level = "INFO"
# Set to false to disable CSRF checks
tools.csrf.on = True
# replace builtin traceback tools by cgitb
tools.log_tracebacks.on: False
tools.cgitb.on: True
# a default install can probably avoid logging those via cgitb as they're
# available in the server log
tools.cgitb.ignore=(
openobject.errors.Concurrency,
openobject.errors.TinyException)
# OpenERP Server
openerp.server.host = 'localhost'
openerp.server.port = '8070'
openerp.server.protocol = 'socket'
openerp.server.timeout = 450
# Web client settings
[openerp-web]
# filter dblists based on url pattern?
# NONE: No Filter
# EXACT: Exact Hostname
# UNDERSCORE: Hostname_
# BOTH: Exact Hostname or Hostname_
dblist.filter = 'NONE'
# whether to show Databases button on Login screen or not
dbbutton.visible = True
# will be applied on company logo
company.url = ''
このファイルは /etc/openerp-web.conf として配置し、以下の通り所有者と権限を設定します:
sudo chown openerp:root /etc/openerp-web.conf
sudo chmod 640 /etc/openerp-web.conf
Web クライアント用の init スクリプト例:
#!/bin/sh
### BEGIN INIT INFO
# Provides: openerp-web
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OpenERP Web - the Web Client of the OpenERP
# Description: Open ERP is a complete ERP and CRM software.
### END INIT INFO
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
DAEMON="/opt/openerp/web/openerp-web.py"
NAME="openerp-web"
DESC="openerp-web"
# Specify the user name (Default: openerp).
USER=openerp
# Specify an alternate config file (Default: /etc/openerp-web.conf).
CONFIGFILE="/etc/openerp-web.conf"
# pidfile
PIDFILE=/var/run/$NAME.pid
# Additional options that are passed to the Daemon.
DAEMON_OPTS="-c $CONFIGFILE"
[ -x $DAEMON ] || exit 0
[ -f $CONFIGFILE ] || exit 0
checkpid() {
[ -f $PIDFILE ] || return 1
pid=`cat $PIDFILE`
[ -d /proc/$pid ] && return 0
return 1
}
case "${1}" in
start)
echo -n "Starting ${DESC}: "
start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "${NAME}."
;;
stop)
echo -n "Stopping ${DESC}: "
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \
--oknodo
echo "${NAME}."
;;
restart|force-reload)
echo -n "Restarting ${DESC}: "
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} \
--oknodo
sleep 1
start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "${NAME}."
;;
*)
N=/etc/init.d/${NAME}
echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
ファイルを /etc/init.d/openerp-web として配置し、実行権限と所有者を設定します:
sudo chmod 755 /etc/init.d/openerp-web
sudo chown root: /etc/init.d/openerp-web
Web クライアントの起動確認:
sudo /etc/init.d/openerp-web start
アクセス確認: ブラウザで http://
sudo /etc/init.d/openerp-web stop
自動起動登録:
sudo update-rc.d openerp-web defaults
これでサーバー再起動時に OpenERP サーバーと Web クライアントが自動的に開始・停止されるはずです。
追加: systemd 環境での注意点と簡易ユニットファイル
モダンな Ubuntu や多くのディストリビューションは systemd を使用しています。update-rc.d は互換レイヤーで動作することがありますが、systemd ネイティブのユニットファイルを用意するほうが確実です。以下は参考例です(環境に合わせてパスとユーザー、ExecStart の引数を確認してください)。
[Unit]
Description=OpenERP Server
After=network.target
[Service]
Type=simple
User=openerp
Group=openerp
ExecStart=/usr/bin/python /opt/openerp/server/bin/openerp-server.py -c /etc/openerp-server.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
この内容を /etc/systemd/system/openerp-server.service として保存した後、以下で起動登録と起動を行います:
sudo systemctl daemon-reload
sudo systemctl enable openerp-server.service
sudo systemctl start openerp-server.service
同様に openerp-web 用のユニットを作成して管理することを推奨します。
重要: systemd を使う場合、PID 管理やログ(journald)との連携が変わります。init スクリプトと systemd の両方を同時に有効にしないよう注意してください。
トラブルシューティングのチェックリスト
- 権限: /etc/openerp-server.conf および /etc/openerp-web.conf の所有者が openerp:root、パーミッションが 640 になっているか。
- ログ: /var/log/openerp に openerp が書き込みできるか。
- プロセス: ps や systemctl でプロセスが起動しているか。
- ポート: サーバーがリッスンしているポート(8070/8080 等)がファイアウォールでブロックされていないか。
- 依存: 必要な Python ライブラリや拡張がインストールされているか。
- コンフィグ: 設定ファイルのパスやオプション(-c で指定)が正しいか。
セキュリティと権限に関する注意
- 管理者パスワードは強力なものに変更し、設定ファイルのアクセス権を最小限にしてください。
- ログファイルには機密情報が含まれることがあります。ログの保存期間やアクセス制御を検討してください。
- 公開環境では必ずプロキシや TLS を検討し、Web クライアントの通信を暗号化してください。
受け入れ基準
- サーバーと Web クライアントが再起動後に自動で開始する。
- /var/log/openerp に新規ログが出力される。
- 管理者(super admin)パスワードを変更済みで、設定ファイルの権限が制限されている。
- 起動/停止のコマンドが正常終了する(exit code 0)。
役割別チェックリスト(運用担当・開発担当)
運用担当:
- 起動スクリプトの設置、権限設定、ログローテーションの確認。
- systemd ユニットの有効化と監視(service enable, start, status)。
開発担当:
- 設定ファイルの確認と必要に応じたチューニング(スレッド数、タイムアウト)。
- デバッグ時のプロファイラ設定やログレベル調整。
簡易 SOP(新規サーバーへの導入手順)
- 必要パッケージと依存関係をインストールする。
- /opt/openerp 配下にバイナリ/スクリプトを配置する。
- /etc/openerp-server.conf と /etc/openerp-web.conf を配置し、権限を設定する。
- /var/log/openerp を作成し、openerp に書き込み権限を与える。
- /etc/init.d に init スクリプトを置くか systemd ユニットを作成する。
- サービスを起動しログと接続で動作確認をする。
- 自動起動を有効にし、再起動で確認する。
まとめ
- init スクリプトの配置、権限設定、ログディレクトリ作成、起動・停止確認、自動起動登録の順で進める。
- systemd 環境ではネイティブなユニットファイルを使うほうが運用しやすい。
- 管理者パスワードと設定ファイルの権限管理を必ず行い、ログとプロセスの監視を設定してください。
重要: 本稿はサーバーのインストールと起動自動化に焦点を当てています。OpenERP の詳細なアプリケーション設定や業務シナリオの構築は別途行ってください。