10 KiB
layout | type | title | date | tags |
---|---|---|---|---|
post | handbook | PSISv2 Setup | 2014-11-13 | admin setup |
การติดตั้งระบบ PSIS v2
ระบบ PSIS v2 นั้นจะรองรับเครื่องแม่ข่ายที่สามารถใช้งาน Python
และฐานข้อมูล PostgreSQL
หรือ MySQL
หรือ Oracle
ได้ แต่อย่างไรก็ดีเครื่องแม่ข่ายที่แนะนำในการใช้งานกับ PSIS v2 นั้นจะเป็นระบบปฏิบัติการใดๆ ก็ตามที่ทำงานบน Linux kernel ไม่ว่าจะเป็น Debian, Ubuntu, CentOS, RedHat, Arch ตามแต่ความถนัดของผู้ปฏิบัติการ ซึ่งเอกสารนี้จะใช้ระบบปฏิบัติการ Ubuntu 12.04 เป็นตัวอย่าง
ความต้องการของระบบ PSIS v2
- Python 2.7.x หรือใหม่กว่า
- PostgreSQL 9 หรือใหม่กว่า
- nginx 1.0.0 หรือใหม่กว่า
ขั้นตอนการติดตั้งระบบ PSIS v2
หลังจากติดตั้งระบบปฏิบัติการ Ubuntu 12.04 เรียบร้อยแล้ว จะต้องมีการติดตั้งโปรแกรมที่จำเป็นในการใช้งานของระบบ PSIS v2 ดังนี้ ติดตั้งความพร้อมของระบบที่ต้องใช้เพิ่มเติมจากระบบปฏิบัติการ
# apt-get update
# apt-get install postgresql mongodb nginx python python-pip git mercurial nodejs npm mysql-client
# npm install -g bower
ติดตั้งส่วนของ PSIS v2
การติดตั้งส่วนนี้จะไม่มีหลักเกณฑ์ที่แน่นอนในการติดตั้ง แต่เอกสารนี้จะสิ่งที่เกี่ยวข้องกับโปรแกรมทั้งหมดใน /opt/
เพื่อความสะดวกในการอธิบาย ซึ่งจะสามารถเปลี่ยนแปลงได้ตามความเหมาะสม
# mkdir -p /opt/psis-v2/
# cd /opt/psis-v2
ทำการคัดลอกไฟล์มายังไดเรกทอรี่นี้
# bzip2 -d psis-v2-app.bz2
จะได้ไดเรกทอรี่ /opt/psis-v2/app/
เพิ่มขึ้นมาซึ่งเป็นส่วนของโปรแกรมนั้น จากนั้นจะต้องทำการสร้างไดเรกทอรี่แยกเพื่อให้เป็น root ของ nginx
เพ่ื่อความปลอดภัยของไฟล์โปรแกรมหลัก
# mkdir -p /opt/psis-v2/static/
# ln -s /opt/psis-v2/app/static /opt/psis-v2/static
สร้างไดเรกทอรี่สำหรับเก็บ log
# mkdir -p /opt/psis-v2/log
จากนั้นจะต้องลง virtualenv
และ virtualenvwrapper
โดยใช้คำสั่ง
# pip install virtualenv virtualenvwrapper
หลังจากลงโปรแกรมที่จำเป็นต่อระบบ จะยังต้องลง library ที่ PSIS v2 ใช้งานด้วย
# apt-get build-dep python-mysqldb
# apt-get install graphviz libgraphviz-dev pkg-config
และ
$ cd /opt/psis-v2/
$ pip install -r requirements.txt
$ bower install
ถ้าไม่มี error อะไรก็จะเป็นการเสร็จสิ้นการติดตั้งเราสามารถทดสอบว่าใช้งานได้หรือไม่ด้วยคำสั่ง
$ ./manage.py runserver
เมื่อใช้งานได้แล้ว ก็สามารถปิดการทำสอบได้จาก ctrl+C
ติดตั้งส่วนของ nginx
หลังจากส่วนนี้ก็จะต้องทำการปรับแต่งค่าของ nginx เพื่อให้เป็น proxy server และ media server ของระบบ PSIS v2
# vim /etc/nginx/sites-available/psis
โดยมีข้อมูลดังนี้
server {
listen 80;
server_name psisapp.com psis.opec.go.th;
access_log /opt/psis-v2/log/nginx_access.log;
error_log /opt/psis-v2/log/nginx_error.log;
root /opt/psis-v2/static/;
location ~* \.html$ {
expires -1;
}
location ~* \.(css|js|gif|jpe?g|png)$ {
expires 168h;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location /media/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location /static/ {
# if asset versioning is used
if ($query_string) {
expires max;
}
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 15;
proxy_read_timeout 45;
proxy_pass http://localhost:8000/;
}
}
จากนั้นจะต้องสร้าง symbolic link ไปยัง /etc/nginx/sites-enabled/
เพื่อให้ nginx
ได้ทำงานตามที่เราต้องการ
# ln -s /etc/nginx/sites-available/psis /etc/nginx/sites-enabled/psis
จากนั้นเราสามารถตรวจสอบว่าไฟล์ที่เราทำนั้นมีความถูกต้องหรือไม่จาก
# service nginx configtest
เมื่อตรวจสอบแล้วไม่พบข้อผิดพลาดใดๆ จะขึ้นว่า Testing nginx configuration: nginx.
และจากนั้นก็สามารถทดสอบได้จากคำสั่ง
# service nginx reload
ติดตั้งส่วนฐานข้อมูล
ระบบ PSIS v2 นั้นจะใช้ฐานข้อมูล 2 ชนิดด้วยกันคือ
PostgreSQL ซึ่งจะเป็นฐานข้อมูลหลักสำหรับข้อมูลปัจจุบันทั้งหมด
MongoDB ใช้สำหรับเก็บข้อมูลที่ได้ประมวลผลแล้ว
PostgreSQL
หลังจากติดตั้งไปแล้วในส่วนติดตั้งเพื่อความพร้อมของระบบปฏิบัติการ การเปิดใช้งานก็จะใช้คำสั่งง่ายๆ คือ
# service postgresql start
MongoDB
หลังจากติดตั้งไปแล้วในส่วนติดตั้งเพื่อความพร้อมของระบบปฏิบัติการ การเปิดใช้งานก็จะใช้คำสั่งง่ายๆ คือ
# service mongodb start
ติดตั้งส่วน upstart
ในส่วนนี้จะเป็นส่วนที่ทำให้เราสามารถเปิดปิดการทำงานของระบบ PSIS v2 ได้โดยคำสั่งง่ายๆ ดังนี้
# start psis_app
# stop psis_app
ส่วนที่เกี่ยวข้องสำหรับ upstart
นั้นจะมี 2 ส่วน คือ script สำหรับเรียก gnuicorn
และ upstart
script ของระบบปฏิบัติการในไดเรกทอรี่ /etc/init/
ส่วนแรก คือ ส่วนไฟล์สคริปสำหรับ gunicorn
คือ แอปพริเคชันสำหรับเรียกใช้งาน wsgi
โดยสร้าง bash script ดังนี้
# vim /opt/psis-v2/run_app.sh
โดยจะมีรายละเอียดดังนี้
#!/bin/bash
set -e
LOGFILE=gunicorn_django.log
LOGDIR=$(dirname $LOGFILE)
NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES
VENV_DIR=/home/psisapp/.virtualenvs/psis
DJANGO_DIR=/opt/psis-v2/app
#we don't want to run this as root..
USER=psisapp
GROUP=psisapp
cd $DJANGO_DIR
source $VENV_DIR/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
#exec gunicorn_django -w $NUM_WORKERS -b 0.0.0.0:8000
exec gunicorn core.wsgi:application -w $NUM_WORKERS -b 0.0.0.0:8000
--log-level=debug
--log-file=$LOGFILE 2>>$LOGFILE
--user=$USER --group=$GROUP
ในส่วนของไฟล์ upstart
จะต้องสร้างไฟล์ psis_app.conf
# vim /etc/init/psis_app.conf
โดยจะมีรายละเอียดเป็นดังนี้
description "PSIS v2 Application"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /opt/psis-v2/run_app.sh
ข้างต้นจะเป็นวิธีทั้งหมดในการติดตั้งระบบ PSIS v2 เพื่อให้ใช้งานได้จากคำสั่ง 2 คำสั่งง่ายๆ
$ sudo start psis_app
$ sudo stop psis_app
ซึ่งในการใช้งานจริงอาจจะใช้ crontab
โดย root เพื่อทำให้ระบบ PSIS v2 ทำงานได้อัตโนมัติ เช่น
@reboot start psis_app