You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
10 KiB

---
layout: post
type: handbook
title: "PSISv2 Setup"
date: 2014-11-13
tags: 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