CentOS - เป็นลีนุกซ์ที่พัฒนามาจากต้นฉบับ RedHat Enterprise Linux (RHEL) โดยที่ CentOS ได้นำเอาซอร์สโค้ดต้นฉบับของ RedHat มาทำการคอมไพล์ใหม่โดยการพัฒนายังเน้นพัฒนาเป็นซอฟต์แวร์ Open Source ที่ถือลิขสิทธิ์แบบ GNU General Public License ในปัจจุบัน CentOS Linux ถูกนำมาใช้ในการทำ Web Hosting กันอย่างกว้างขวางเนื่องจากเป็นระบบปฏิบัติการที่มีต้นแบบจาก RedHat ที่มีความแข็งแกร่งสูง (ปัจจุบันเน้นพัฒนาในเชิงการค้า) การติดตั้งแพ็กเกจย่อยภายในสามารถใช้ได้ทั้ง RPM, TAR, APT หรือใช้คำสั่ง YUM ในการอัปเดทซอฟต์แวร์แบบอัตโนมัติ
การติดตั้ง OpenERP บน CentOSขั้นที่ 1 สำหรับ CentOS 5 ที่ลงเสร็จใหม่ จะต้องเพิ่ม repo epel เพื่อโหลดคอมโพเน้นท์ที่ต้องการ
โค้ด: เลือกทั้งหมด
[prompt]# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
[prompt]# rpm -ivh epel-release-5-3.noarch.rpm
[prompt]# yum -y update
ขั้นที่ 2 - ติดตั้ง python และ component ที่จำเป็นทั้งหมด
โค้ด: เลือกทั้งหมด
[prompt]# yum install postgresql
[prompt]# yum install
python-lxml
python-psycopg2
pytz.noarch
PyXML
mx
libxslt-python
python-imaging
pygtk2
python-matplotlib
TurboGears
libxml2
python-devel
graphviz
pydot
pychart
pygtk2
pygtk2-libglade
mx
[prompt]# wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el5/en/x86_64/RPMS.dag/python-reportlab-1.20-1.el5.rf.noarch.rpm
[prompt]# rpm -i python-reportlab-1.20-1.el5.rf.noarch.rpm
กรณีของ python-reportlab จะใช้ yum ก็ได้
ขั้นที่ 3 Download OpenERO
โค้ด: เลือกทั้งหมด
[prompt]# wget http://www.openerp.com/download/stable/source/openerp-server-5.0.9.tar.gz
ขั้นที่ 4 ทดสอบการติดตั้ง component และติดตั้ง Server
โค้ด: เลือกทั้งหมด
[prompt]# tar -xzf openerp-server-5.0.0.tar.gz
[prompt]# cd openerp-server-5.0.0/bin
[prompt]# python openerp-server.py
ถ้าหาก component ไม่ครบ จะมี error message แสดงชื่อ component ที่ต้องการ เมื่อแก้ไขปัญหาเสร็จแล้ว ขั้นสุดท้ายให้ทำการติดตั้งเซิร์ฟเวอร์
โค้ด: เลือกทั้งหมด
[prompt]# cd ..
[prompt]# sudo python setup.py install
ขั้นที่ 5 ติดตั้ง postgresql และ การสร้างฐานข้อมูล
โค้ด: เลือกทั้งหมด
[prompt]# yum install postgresql (optional)
[prompt]# chkconfig postgresql on
[prompt]# service postgresql start
[prompt]# su - postgres
สร้าง admin user (root) - ขั้นตอนนี้อาจจะไม่จำเป็น
(ป้อนข้อมูล password สำหรับ role "root")
สร้าง OpenERP user
(ป้อนข้อมูล password สำหรับ role "openerp")
สร้างฐานข้อมูล OpenERP
จากนั้น แก้ไขวิธี authenticate ของ postgresql ให้เป็น MD5 โดย
โค้ด: เลือกทั้งหมด
[prompt]# vi /var/lib/pgsql/data/pg_hba.conf
แก้ Content ให้เป็นตามด้านล่างนี้ File: /var/lib/pgsql/data/pg_hba.conf
โค้ด: เลือกทั้งหมด
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
#local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 md5
#host all all 127.0.0.1/32 ident sameuser
# IPv6 local connections:
host all all ::1/128 md5
#host all all ::1/128 ident sameuser
เสร็จแล้ว restart postgresql
ขั้นที่ 6 สร้าง User และ Initialize ฐานข้อมูล แก้ไขไฟล์ /etc/passwd, /etc/shadow และ /etc/group โดยเพิ่มข้อมูลต่อไปนี้
File: /etc/passwd
openerp:x:56:56::/var/lib/openerp:/bin/bash
File: /etc/shadow
openerp:!!:14773:0:99999:7:::
File: /etc/group
openerp:x:56:
ข้อควรระวังคือ ถ้าหาก uid หรือ gid หมายเลข 56 ถูกใช้งานไปแ้ล้ว จะต้องเปลี่ยนไปใช้ uid/gid ที่ยังว่างอยู่
จากนั้น สร้าง home directory ให้ openerp โดย
โค้ด: เลือกทั้งหมด
[prompt]# mkdir /var/lib/openerp
[prompt]# mkdir /var/lib/openerp/run
[prompt]# mkdir /var/lib/openerp/logs
[prompt]# chown -R openerp.openerp /var/lib/openerp
จากนั้น populate configuration file โดย
โค้ด: เลือกทั้งหมด
[prompt]# su - openerp
[prompt]# openerp-server -s
จากนั้น กด Ctrl-C เพื่อออกจาก server จะได้ไฟล์ config ขึ้นมาใน home directory ของ openerp ให้ทำการแก้ไขโดย
แก้ไขบรรทัดต่อไปนี้ ให้มีค่าเหมือนในตัวอย่าง
โค้ด: เลือกทั้งหมด
admin_passwd = [password สำหรับ super admin]
db_user = openerp
db_password = [password ที่เซ็ตไว้]
db_name = openerp
pid_file = /var/lib/openerp/run/server.pid
logfile = /var/lib/openerp/logs/server.log
ขั้นที่ 7 ติดตั้ง Web Client
โค้ด: เลือกทั้งหมด
[prompt]# wget http://cheeseshop.python.org/packages/source/p/pyparsing/pyparsing-1.5.0.tar.gz
[prompt]# easy_install pyparsing-1.5.0.tar.gz
[prompt]# easy_install -U Babel
[prompt]# easy_install -U Mako
[prompt]# easy_install -U CherryPy
[prompt]# tar -xzf openerp-web-5.0.9.tar.gz
[prompt]# cd openerp-web-5.0.9
[prompt]# sudo python setup.py install
จากนั้น เตรียม config file สำหรับ web client โดย copy ตัวอย่างจาก package
โค้ด: เลือกทั้งหมด
[prompt]# cp /usr/lib/python2.4/site-packages/openerp_web-5.0.11-py2.4.egg/config/openerp-web.cfg .
แก้ไข config ของ web-client ตามต้องการ แล้วเซฟ
ขั้นที่ 8 ติดตั้ง service สำหรับ openerp
ใช้ไฟล์ต่อไปนี้ในการสร้าง service
File: /etc/init.d/openerp
โค้ด: เลือกทั้งหมด
#!/bin/sh
#
# chkconfig: 345 65 35
# description: Starts and stops the OpenERP's server and webclient daemons
#
# pidfile: /var/lib/openerp/run/server.pid
# pidfile: /var/lib/openerp/run/client.pid
# config: /var/lib/openerp/.openerp-serverrc
# /var/lib/openerp/client.cfg
SU="/bin/su"
USER=openerp
ERPHOME="/var/lib/openerp"
PIDFILE="${ERPHOME}/run/server.pid"
#SERVEROPTS="--syslog --log-level=debug --pidfile=${PIDFILE}"
SERVEROPTIONS="--log-level=debug" # remove when done debugging
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 1
fi
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 1
# Check that conf files exist.
[ -f ${CLIENTCFG} ] || exit 6
RETVAL=0
start() {
KIND="Server"
echo -n $"Starting OpenERP $KIND services: "
$SU - ${USER} -c "nohup /usr/bin/openerp-server $SERVEROPTIONS > /dev/null 2>&1 &"
sleep 3
if [ ! -f $PIDFILE -a ! -d /proc/`cat ${PIDFILE}` ] ; then
RETVAL=1
echo_failure
else
RETVAL=0
echo_success
fi
echo
KIND="Web Client"
echo -n $"Starting OpenERP $KIND services: "
for CFG in $ERPHOME/*.cfg
do
daemon --user ${USER} /usr/bin/nohup "/usr/bin/openerp-web -c ${CFG} > /dev/null 2>&1 &"
done
RETVAL2=$?
echo
[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/openerp || \
RETVAL=1
return $RETVAL
}
stop() {
KIND="Server"
echo -n $"Shutting down OpenERP $KIND services: "
killproc -p ${PIDFILE} openerp-server
RETVAL=$?
echo
KIND="Web Client"
echo -n $"Shutting down OpenERP $KIND services: "
killproc openerp-web
RETVAL2=$?
[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/openerp
echo ""
return $RETVAL
}
restart() {
stop
start
}
checkstatus()
{
status -p $PIDFILE openerp
RETVAL=$?
status openerp-web
RETVAL2=$?
if [ $RETVAL2 -ne 0 ]; then
return $RETVAL2
fi
if [ $RETVAL -ne 0 ]; then
return $RETVAL
fi
}
# Check that we can write to it... so non-root users stop here
[ -w ${CLIENTCFG} ] || exit 4
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
checkstatus
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 2
esac
exit $?
เสร็จแล้วทำการ start service โดย
หมายเหตุ: การรันครั้งแรกอาจจะมีข้อความว่าว่า cat: /var/lib/openerp/run/server.pid: No such file or directory ขึ้น เนื่องจาก server จะยังไม่ start ทันที แต่จะต้องทำการ initialize ฐานข้อมูลก่อน ไม่ต้องทำอะไรเพิ่มเติมครับ ทิ้งไว้แบบนั้น ครั้งต่อๆ ไปจะไม่มีข้อความนี้ขึ้น
ที่มา : barameu.blogspot.com
CentOS - เป็นลีนุกซ์ที่พัฒนามาจากต้นฉบับ RedHat Enterprise Linux (RHEL) โดยที่ CentOS ได้นำเอาซอร์สโค้ดต้นฉบับของ RedHat มาทำการคอมไพล์ใหม่โดยการพัฒนายังเน้นพัฒนาเป็นซอฟต์แวร์ Open Source ที่ถือลิขสิทธิ์แบบ GNU General Public License ในปัจจุบัน CentOS Linux ถูกนำมาใช้ในการทำ Web Hosting กันอย่างกว้างขวางเนื่องจากเป็นระบบปฏิบัติการที่มีต้นแบบจาก RedHat ที่มีความแข็งแกร่งสูง (ปัจจุบันเน้นพัฒนาในเชิงการค้า) การติดตั้งแพ็กเกจย่อยภายในสามารถใช้ได้ทั้ง RPM, TAR, APT หรือใช้คำสั่ง YUM ในการอัปเดทซอฟต์แวร์แบบอัตโนมัติ
[b]การติดตั้ง OpenERP บน CentOS[/b]
ขั้นที่ 1 สำหรับ CentOS 5 ที่ลงเสร็จใหม่ จะต้องเพิ่ม repo epel เพื่อโหลดคอมโพเน้นท์ที่ต้องการ
[code][prompt]# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
[prompt]# rpm -ivh epel-release-5-3.noarch.rpm
[prompt]# yum -y update[/code]
ขั้นที่ 2 - ติดตั้ง python และ component ที่จำเป็นทั้งหมด
[code][prompt]# yum install postgresql
[prompt]# yum install
python-lxml
python-psycopg2
pytz.noarch
PyXML
mx
libxslt-python
python-imaging
pygtk2
python-matplotlib
TurboGears
libxml2
python-devel
graphviz
pydot
pychart
pygtk2
pygtk2-libglade
mx
[prompt]# wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el5/en/x86_64/RPMS.dag/python-reportlab-1.20-1.el5.rf.noarch.rpm
[prompt]# rpm -i python-reportlab-1.20-1.el5.rf.noarch.rpm[/code]
กรณีของ python-reportlab จะใช้ yum ก็ได้
[code][prompt]# yum install python-reportlab[/code]
ขั้นที่ 3 Download OpenERO
[code][prompt]# wget http://www.openerp.com/download/stable/source/openerp-server-5.0.9.tar.gz[/code]
ขั้นที่ 4 ทดสอบการติดตั้ง component และติดตั้ง Server
[code][prompt]# tar -xzf openerp-server-5.0.0.tar.gz
[prompt]# cd openerp-server-5.0.0/bin
[prompt]# python openerp-server.py[/code]
ถ้าหาก component ไม่ครบ จะมี error message แสดงชื่อ component ที่ต้องการ เมื่อแก้ไขปัญหาเสร็จแล้ว ขั้นสุดท้ายให้ทำการติดตั้งเซิร์ฟเวอร์
[code][prompt]# cd ..
[prompt]# sudo python setup.py install[/code]
ขั้นที่ 5 ติดตั้ง postgresql และ การสร้างฐานข้อมูล
[code][prompt]# yum install postgresql (optional)
[prompt]# chkconfig postgresql on
[prompt]# service postgresql start
[prompt]# su - postgres[/code]
สร้าง admin user (root) - ขั้นตอนนี้อาจจะไม่จำเป็น
[code][prompt]# createuser root -sdrP[/code]
(ป้อนข้อมูล password สำหรับ role "root")
สร้าง OpenERP user
[code][prompt]# createuser openerp -dP [/code]
(ป้อนข้อมูล password สำหรับ role "openerp")
สร้างฐานข้อมูล OpenERP
[code][prompt]# createdb -O openerp openerp[/code]
จากนั้น แก้ไขวิธี authenticate ของ postgresql ให้เป็น MD5 โดย
[code][prompt]# vi /var/lib/pgsql/data/pg_hba.conf[/code]
แก้ Content ให้เป็นตามด้านล่างนี้ File: /var/lib/pgsql/data/pg_hba.conf
[code]# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
#local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 md5
#host all all 127.0.0.1/32 ident sameuser
# IPv6 local connections:
host all all ::1/128 md5
#host all all ::1/128 ident sameuser[/code]
เสร็จแล้ว restart postgresql
[code]# service postgresql restart[/code]
ขั้นที่ 6 สร้าง User และ Initialize ฐานข้อมูล แก้ไขไฟล์ /etc/passwd, /etc/shadow และ /etc/group โดยเพิ่มข้อมูลต่อไปนี้
File: /etc/passwd
openerp:x:56:56::/var/lib/openerp:/bin/bash
File: /etc/shadow
openerp:!!:14773:0:99999:7:::
File: /etc/group
openerp:x:56:
ข้อควรระวังคือ ถ้าหาก uid หรือ gid หมายเลข 56 ถูกใช้งานไปแ้ล้ว จะต้องเปลี่ยนไปใช้ uid/gid ที่ยังว่างอยู่
จากนั้น สร้าง home directory ให้ openerp โดย
[code][prompt]# mkdir /var/lib/openerp
[prompt]# mkdir /var/lib/openerp/run
[prompt]# mkdir /var/lib/openerp/logs
[prompt]# chown -R openerp.openerp /var/lib/openerp[/code]
จากนั้น populate configuration file โดย
[code][prompt]# su - openerp
[prompt]# openerp-server -s[/code]
จากนั้น กด Ctrl-C เพื่อออกจาก server จะได้ไฟล์ config ขึ้นมาใน home directory ของ openerp ให้ทำการแก้ไขโดย
[code][prompt]# vi ~openerp/.openerp_serverrc[/code]
แก้ไขบรรทัดต่อไปนี้ ให้มีค่าเหมือนในตัวอย่าง
[code]admin_passwd = [password สำหรับ super admin]
db_user = openerp
db_password = [password ที่เซ็ตไว้]
db_name = openerp
pid_file = /var/lib/openerp/run/server.pid
logfile = /var/lib/openerp/logs/server.log[/code]
ขั้นที่ 7 ติดตั้ง Web Client
[code][prompt]# wget http://cheeseshop.python.org/packages/source/p/pyparsing/pyparsing-1.5.0.tar.gz
[prompt]# easy_install pyparsing-1.5.0.tar.gz
[prompt]# easy_install -U Babel
[prompt]# easy_install -U Mako
[prompt]# easy_install -U CherryPy
[prompt]# tar -xzf openerp-web-5.0.9.tar.gz
[prompt]# cd openerp-web-5.0.9
[prompt]# sudo python setup.py install[/code]
จากนั้น เตรียม config file สำหรับ web client โดย copy ตัวอย่างจาก package
[code][prompt]# cp /usr/lib/python2.4/site-packages/openerp_web-5.0.11-py2.4.egg/config/openerp-web.cfg .[/code]
แก้ไข config ของ web-client ตามต้องการ แล้วเซฟ
ขั้นที่ 8 ติดตั้ง service สำหรับ openerp
ใช้ไฟล์ต่อไปนี้ในการสร้าง service
[code][prompt]# vi /etc/init.d/openerp[/code]
File: /etc/init.d/openerp
[code]#!/bin/sh
#
# chkconfig: 345 65 35
# description: Starts and stops the OpenERP's server and webclient daemons
#
# pidfile: /var/lib/openerp/run/server.pid
# pidfile: /var/lib/openerp/run/client.pid
# config: /var/lib/openerp/.openerp-serverrc
# /var/lib/openerp/client.cfg
SU="/bin/su"
USER=openerp
ERPHOME="/var/lib/openerp"
PIDFILE="${ERPHOME}/run/server.pid"
#SERVEROPTS="--syslog --log-level=debug --pidfile=${PIDFILE}"
SERVEROPTIONS="--log-level=debug" # remove when done debugging
# Source function library.
if [ -f /etc/init.d/functions ] ; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 1
fi
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 1
# Check that conf files exist.
[ -f ${CLIENTCFG} ] || exit 6
RETVAL=0
start() {
KIND="Server"
echo -n $"Starting OpenERP $KIND services: "
$SU - ${USER} -c "nohup /usr/bin/openerp-server $SERVEROPTIONS > /dev/null 2>&1 &"
sleep 3
if [ ! -f $PIDFILE -a ! -d /proc/`cat ${PIDFILE}` ] ; then
RETVAL=1
echo_failure
else
RETVAL=0
echo_success
fi
echo
KIND="Web Client"
echo -n $"Starting OpenERP $KIND services: "
for CFG in $ERPHOME/*.cfg
do
daemon --user ${USER} /usr/bin/nohup "/usr/bin/openerp-web -c ${CFG} > /dev/null 2>&1 &"
done
RETVAL2=$?
echo
[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/openerp || \
RETVAL=1
return $RETVAL
}
stop() {
KIND="Server"
echo -n $"Shutting down OpenERP $KIND services: "
killproc -p ${PIDFILE} openerp-server
RETVAL=$?
echo
KIND="Web Client"
echo -n $"Shutting down OpenERP $KIND services: "
killproc openerp-web
RETVAL2=$?
[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/openerp
echo ""
return $RETVAL
}
restart() {
stop
start
}
checkstatus()
{
status -p $PIDFILE openerp
RETVAL=$?
status openerp-web
RETVAL2=$?
if [ $RETVAL2 -ne 0 ]; then
return $RETVAL2
fi
if [ $RETVAL -ne 0 ]; then
return $RETVAL
fi
}
# Check that we can write to it... so non-root users stop here
[ -w ${CLIENTCFG} ] || exit 4
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
checkstatus
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 2
esac
exit $?[/code]
เสร็จแล้วทำการ start service โดย
[code][prompt]# service openerp start[/code]
[u]หมายเหตุ[/u]: การรันครั้งแรกอาจจะมีข้อความว่าว่า cat: /var/lib/openerp/run/server.pid: No such file or directory ขึ้น เนื่องจาก server จะยังไม่ start ทันที แต่จะต้องทำการ initialize ฐานข้อมูลก่อน ไม่ต้องทำอะไรเพิ่มเติมครับ ทิ้งไว้แบบนั้น ครั้งต่อๆ ไปจะไม่มีข้อความนี้ขึ้น
ที่มา : barameu.blogspot.com