OpenERP 서버와 웹 클라이언트 자동 시작 스크립트 설치 및 테스트

개요
이 문서는 OpenERP 서버와 웹 클라이언트를 시스템 부팅 시 자동으로 시작/중지하도록 init.d 스크립트를 설치하고 테스트하는 과정을 다룹니다. 핵심 작업은 다음과 같습니다.
- 부팅 스크립트(openerp-server, openerp-web) 설치
- 스크립트 권한 및 소유권 설정
- 로그 디렉터리 생성 및 권한 설정
- 서비스 수동 시작/중지 테스트
- update-rc.d로 자동 시작 등록
- 웹 클라이언트 설정 및 테스트
중요: 모든 명령은 루트 권한이 필요합니다. sudo를 사용하거나 루트로 실행하세요.
사전 준비
- OpenERP가 /opt/openerp 경로에 설치되어 있어야 합니다.
- 설정 파일: /etc/openerp-server.conf 및 /etc/openerp-web.conf
- openerp 사용자 계정이 존재하고 해당 소유권을 설정할 수 있어야 합니다.
7단계. 부팅 스크립트 설치
다음 쉘 스크립트는 OpenERP 서버를 시작하고 중지하기 위한 init.d 스크립트 예시입니다. 이 파일의 내용을 /etc/init.d/openerp-server로 저장하세요.
#!/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
설치 후 파일 권한을 설정합니다:
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
서버가 시작되지 않으면 이전 단계(권한, 경로, 설정 파일)를 다시 점검하세요. 서버가 정상 동작하면 GTK 클라이언트를 실행하여 새 서버에 접속하면 다음과 유사한 첫 로그인 화면을 볼 수 있습니다.
이 메시지는 서버가 연결을 받고 있지만 아직 데이터베이스가 설정되어 있지 않음을 의미합니다.
권장: 슈퍼 관리자 비밀번호를 변경하세요(기본값: “admin”). GTK 클라이언트에서 파일 메뉴 → Databases → Administrator Password로 변경할 수 있습니다. 이 비밀번호는 /etc/openerp-server.conf에 평문으로 저장되므로 파일 권한으로 접근을 제한해야 합니다.
슈퍼 관리자 비밀번호를 저장하면 OpenERP가 설정 파일을 재작성하여 주석을 제거하고 항목 순서를 바꿀 수 있으니, 변경 후 파일을 검토하세요.
정지 테스트:
sudo /etc/init.d/openerp-server stop
로그와 프로세스 목록으로 정상 종료 여부를 확인하세요.
9단계. OpenERP 자동 시작 등록
모든 테스트가 통과하면 시스템 부팅 시 자동으로 시작되도록 등록합니다.
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 클라이언트로 추가 확인을 수행하세요.
10단계. 웹 클라이언트 설정 및 자동화
웹 클라이언트는 브라우저를 통해 OpenERP를 제공하는 별도의 서버 애플리케이션입니다. 서버와 동일한 호스트에 설치하면 앞서의 단계 6~9를 반복하면 됩니다.
웹 클라이언트 기본 설정 예시(/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
웹 클라이언트용 부팅 스크립트 예시를 /etc/init.d/openerp-web로 저장한 뒤 권한을 설정합니다:
#!/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
권한 설정:
sudo chmod 755 /etc/init.d/openerp-web
sudo chown root: /etc/init.d/openerp-web
웹 서버 시작 테스트:
sudo /etc/init.d/openerp-web start
로그, 프로세스 목록, 브라우저로 접속(http://내-아이피-or-도메인:8080)하여 동작을 확인하세요.
정상 종료 테스트:
sudo /etc/init.d/openerp-web stop
자동 시작 등록:
sudo update-rc.d openerp-web defaults
이제 서버를 재부팅해 두 서비스가 자동으로 시작되는지 확인하세요.
운영 시나리오 및 문제 해결
빠른 점검 체크리스트
- /etc/openerp-server.conf 경로와 내용 확인
- /etc/openerp-web.conf 경로와 내용 확인
- /opt/openerp 경로의 바이너리 실행 권한 확인
- /var/log/openerp 디렉터리 존재 및 소유권(openerp:root) 확인
- /var/run/*.pid 파일 생성 여부 확인
- 서비스가 포트(서버: 8069 기본, 웹: 8080 등)를 바인딩하는지 확인
흔한 오류 및 해결법
- 서버가 시작되지 않음: DAEMON 경로 또는 CONFIGFILE 경로가 정확한지 확인하세요.
- 로그에 권한 관련 오류: 로그 디렉터리와 설정 파일의 소유자 및 권한을 확인하세요.
- PID 파일이 남아 프로세스가 재시작되지 않음: PID 파일을 삭제하고 재시작하세요.
- 포트 충돌: netstat 또는 ss로 포트 사용 여부를 확인하고 충돌하는 프로세스를 종료하세요.
보안 권장사항
- /etc/openerp-server.conf 및 /etc/openerp-web.conf 파일 권한을 640으로 유지하고 소유자를 openerp:root로 설정하세요.
- 슈퍼 관리자 비밀번호를 기본값에서 반드시 변경하세요.
- 외부에 직접 노출되는 경우 방화벽으로 포트(8069/8080 등)를 제한하세요.
- 프로덕션에서는 웹 클라이언트를 Apache/Nginx 프록시 뒤에 배치하고 HTTPS를 적용하세요.
역할별 체크리스트
관리자:
- 슈퍼 관리자 비밀번호 변경
- 데이터베이스 백업 정책 수립
운영팀(시스템 엔지니어):
- 서비스 자동 시작 등록
- 로그 로테이션 설정(/etc/logrotate.d에 항목 추가 권장)
- 모니터링(프로세스/포트/로그 에러 감시)
개발팀:
- 설정 파일의 환경별 분리(dev/stage/prod)
- 로그 레벨과 프로파일링 설정 검토
수용 기준
- 서비스가 시스템 재부팅 후 자동으로 시작되어야 한다.
- /var/log/openerp에 로그가 정상 출력되어야 한다.
- 포트(웹:8080, 서버 기본 포트)는 정상 바인딩되어 접속 가능해야 한다.
- 슈퍼 관리자 비밀번호가 기본값이 아닌 안전한 값으로 변경되어 있어야 한다.
간단 복구/롤백 절차
- 문제가 생기면 먼저 서비스 중지:
sudo /etc/init.d/openerp-server stop
sudo /etc/init.d/openerp-web stop
- 최근 구성 변경 사항을 되돌리고 설정 파일의 권한을 재설정하세요.
- 로그를 확인하여 원인 파악 후 서비스 재시작.
명령 치트시트
- 서비스 시작: sudo /etc/init.d/openerp-server start
- 서비스 중지: sudo /etc/init.d/openerp-server stop
- 자동등록: sudo update-rc.d openerp-server defaults
- 로그 보기: less /var/log/openerp/openerp-server.log
- 프로세스 확인: ps aux | grep openerp
의사결정 흐름도
flowchart TD
A[서비스 시작 실패] --> B{PID 파일 존재?}
B -- 예 --> C[PID 파일 삭제 후 재시작]
B -- 아니오 --> D{로그에 권한 오류?}
D -- 예 --> E[로그/설정 파일 권한 점검]
D -- 아니오 --> F{포트 충돌?}
F -- 예 --> G[충돌 프로세스 종료 또는 포트 변경]
F -- 아니오 --> H[설정 경로 확인 및 재배포]
용어 한 줄 정의
- PID 파일: 실행 중인 프로세스의 프로세스 ID를 기록한 파일
- init.d 스크립트: SysV init 방식에서 서비스 시작/중지를 관리하는 스크립트
마무리 요약
- 부팅 스크립트를 /etc/init.d에 설치하고 실행 권한을 부여하세요.
- 로그 디렉터리와 설정 파일의 소유권/권한을 적절히 설정하세요.
- 수동으로 시작/중지 테스트를 충분히 한 뒤 update-rc.d로 자동 등록하세요.
- 보안(비밀번호, 파일 권한, 방화벽)과 모니터링을 설정하세요.
요약: 이 문서를 따라 하면 OpenERP 서버와 웹 클라이언트를 시스템 부팅 과정에 자동으로 통합할 수 있습니다. 운영 환경에서는 구성 관리, 로그 로테이션, 모니터링을 추가로 적용하세요.