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.
 
 
 

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