การติดตั้งโปรแกรม pdn 2013

12
การติดตั้งโปรแกรม PDN 2013 ตัวอย่าง network layout แสดงการเชื่อมโยงองค์ประกอบของระบบ Install Client Install Client PDN 2013 PDN 2013 HDC database HDC database TCP 3306 (read only) TCP 443 (HTTPS) TCP 22 (install only) PDN2013 database PDN2013 database TCP 3306 (read/write) PDG 2013 PDG 2013 TCP 9913 (PDG) (encrypted) ขั้นตอนการติดตั้งระบบ 1. ตรวจสอบ config พื้นฐานของ OS ปิด SELinux โดยควรมี config ลักษณะดังนี# cat /etc/selinux/config SELINUX=disabled optimize sysctl # vi /etc/sysctl.conf เพิ่มบรรทัดนี้ที่ท้ายไฟล์ vm.swappiness = 10 ทาการ load config ขึ้นมาใหม่ # sysctl -p config iptables ให้สามารถ connect เข้าหา port 443 (HTTPS) ได้ 2. ติดตั้ง Java7 (RPM) # rpm -Uvh jdk-7u13-linux-x64.rpm ถ้าเตือน error ติดตั้ง pack file ไม่ต้องสนใจ

Upload: peter-d-smith

Post on 02-Jan-2016

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: การติดตั้งโปรแกรม PDN 2013

การตดตงโปรแกรม PDN 2013 ตวอยาง network layout แสดงการเชอมโยงองคประกอบของระบบ

Install ClientInstall Client

PDN2013

PDN2013

HDCdatabase

HDCdatabase

TCP3306

(read only)

TCP 443(HTTPS)TCP 22

(install only)

PDN2013database

PDN2013database

TCP 3306(read/write)

PDG2013

PDG2013

TCP 9913(PDG)

(encrypted)

ขนตอนการตดตงระบบ

1. ตรวจสอบ config พนฐานของ OS ปด SELinux โดยควรม config ลกษณะดงน

# cat /etc/selinux/config … SELINUX=disabled

optimize sysctl # vi /etc/sysctl.conf เพมบรรทดนททายไฟล vm.swappiness = 10 ท าการ load config ขนมาใหม # sysctl -p

config iptables ใหสามารถ connect เขาหา port 443 (HTTPS) ได

2. ตดตง Java7 (RPM) # rpm -Uvh jdk-7u13-linux-x64.rpm ถาเตอน error ตดตง pack file ไมตองสนใจ

Page 2: การติดตั้งโปรแกรม PDN 2013

config JAVA_HOME environment # vi /etc/profile --- เพมขอความนททายไฟล export JAVA_HOME=/usr/java/jdk1.7.0_13 export PATH=$JAVA_HOME/bin:$PATH

run ค าสง export ทงสองบน command line เพอใหมผลทนท # export JAVA_HOME=/usr/java/jdk1.7.0_13 # export PATH=$JAVA_HOME/bin:$PATH

3. ตดตง tomcat

# cd /usr/local # gzip -dc ~/pdn2013/apache-tomcat-7.0.35.tar.gz |tar xf - # ln -s apache-tomcat-7.0.35/ apache-tomcat7 # cd ~/pdn2013/ # cp tomcat732 /etc/init.d/tomcat7 # chmod 755 /etc/init.d/tomcat7 # chkconfig --add tomcat7 # chkconfig --list tomcat7

แกไข bin/catalina.sh แลวท าการเพมทบรเวณหลง comment ดานบน # cd /usr/local/apache-tomcat7 # vi bin/catalina.sh ไปททาย comment แรก แลวเพม config ดงน CATALINA_OPTS="-server -noverify -Xms512M –Xmx4G -XX:MaxPermSize=256M

-XX:PermSize=256M -XX:+UseParallelGC" (บรรทดเดยวกน) * จงหวดทมฐานขอมลขนาดใหญสามารถขยายจ านวน memory ท tomcat ใชไดท parameter -Xmx

แกไข conf/context.xml # vi conf/context.xml ลบ comment ทครอมบรรทดนออก <Manager pathname="" />

Page 3: การติดตั้งโปรแกรม PDN 2013

ลบ default app ทมากบ tomcat ออกใหหมด (ใน <tomcat>/webapps) ใหเหลอแต ROOT ตวเดยว # cd webapps # ls # rm -rf docs examples host-manager manager

4. config tomcat SSL

ตรวจสอบวา set environment JAVA_HOME แลวหรอไม # echo $JAVA_HOME ถาไมม ให set แบบ manual ส าหรบการ login ครงน # export JAVA_HOME=/usr/java/jdk1.7.0_13 * เปลยน directory ตามทอยจรงของ JDK

ไปอยใน path ทจะเกบไฟล certificate กอน # cd ~/pdn2013

สราง public key pair ส าหรบ server # keytool -genkey -alias tomcat -validity 3650 -keyalg RSA ใส password เชน pdn2013xxxxx (ใสรหส สสจ. แทน xxxxx)

เมอถาม first and last name ใหใส localhost และปอนขอมลอนใหตรงกบจงหวดของตนเอง ตวอยางการปอนรายละเอยด เชน What is your first and last name? [Unknown]: localhost What is the name of your organizational unit? [Unknown]: IT What is the name of your organization? [Unknown]: MOPH_SSJ_xxxxx <<=============== เปลยนเปนรหส สสจ. What is the name of your City or Locality? [Unknown]: Muang <<=============== เปลยนเปนชออ าเภอ What is the name of your State or Province? [Unknown]: Bangkok <<=============== เปลยนเปนชอจงหวด What is the two-letter country code for this unit? [Unknown]: TH Is CN=localhost, OU=IT, O=MOPH_SSJ_xxxxx, L=Muang, ST=Bangkok, C=TH correct? ถาม password ครงทสอง ให enter ผานไปเลย

Page 4: การติดตั้งโปรแกรม PDN 2013

ระบบจะมการสราง file .keystore ท home directory ของ user root ( /root ) # ls –l ~root/.keystore

# keytool -export -alias tomcat -file server.crt ปอนรหสผานเหมอนเดม (pdn2013xxxxx) จะไดไฟลชอ server.crt บนเครอง

Import key เพอให Java ยอมรบ key ใหมทสรางขน # keytool -import -file server.crt -keystore "$JAVA_HOME/jre/lib/security/cacerts" ปอนรหสผานเปน changeit แลวตอบ yes ตวอยางหนาจอเปนลกษณะดงน # keytool -import -file server.crt -keystore "$JAVA_HOME/jre/lib/security/cacerts" Enter keystore password: Owner: CN=localhost, OU=IT, O=MOPH_SSJ_xxxxx, L=Muang, ST=Bangkok, C=TH Issuer: CN=localhost, OU=IT, O=MOPH_SSJ_xxxxx, L=Muang, ST= Bangkok, C=TH Serial number: b647ae3 Valid from: Tue Feb 05 14:46:09 ICT 2013 until: Fri Feb 03 14:46:09 ICT 2023 Certificate fingerprints: MD5: F4:86:C7:DC:EC:5E:B7:94:EA:… SHA1: AD:DB:85:CD:41:A2:3C:F0:87:8E:… SHA256: 29:4D:D8:D3:3B:3A:AF:F4:FD:21:44: … Signature algorithm name: SHA256withRSA Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: E4 7A 2A … ] ] Trust this certificate? [no]: yes Certificate was added to keystore

Page 5: การติดตั้งโปรแกรม PDN 2013

* ถาใสผด ตองการลบ key ออกใหใชค าสง # keytool -delete -alias mykey -keystore "$JAVA_HOME/jre/lib/security/cacerts"

แกไข <tomcat>/conf/server.xml ซงจะมตวอยาง config ของ port 8443 อย ใหแกเปนดงน # vi /usr/local/apache-tomcat7/conf/server.xml <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"

scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"

enableLookups="false" maxThreads="150" acceptCount="100" minSpareThreads="25" keystoreFile="/root/.keystore" keystorePass="pdn2013xxxxx" /> * เปลยน xxxxx เปนรหส สสจ.

restart tomcat # service tomcat7 restart

ตรวจสอบวาม process java ท าการเปด port 443 อยหรอไม # netstat -atnp |grep LIST

เปด browser แลวทดลอง connect เขา tomcat server port 443 เชน https://xx.xx.xx.xx (เนนวาเปน https) จะตองเหนหนา tomcat ดงรป

Page 6: การติดตั้งโปรแกรม PDN 2013

5. สราง และ restore database ส าหรบ pdn2013 # mysqladmin –u <user> –h <ip> –p create pdn2013 ใสรหสผาน # mysql –u <user> –h <ip> –p pdn2013 < pdn2013-db-20130201.sql ใสรหสผาน

ทดสอบ connect เขาฐานขอมล pdn2013 วามตารางหรอไม # mysql –u root –p pdn2013 mysql> show tables mysql> exit * ชอฐานขอมลสามารถตงชอไดตามความสะดวก ชอ pdn2013 เปนเพยงตวอยางเทานน

6. ตดตงโปรแกรม pdn web application copy ไฟล config 4 files ไปยง /etc/pdn2013 # mkdir /etc/pdn2013 # cp dbms.properties provisDbms.properties pdn2013.properties /etc/pdn2013/

แกไขรายละเอยดในแตละไฟลดงน - pdn2013.properties

# cd /etc/pdn2013 # vi pdn2013.properties แกรหส สสจ. # SSJ service place ID provinceServicePlaceID = xxxxx

- dbms.properties

# vi dbms.properties แกไข IP, ชอ database, username, password ของ pdn2013 dataSource.driverClassName=com.mysql.jdbc.Driver dataSource.url=jdbc:mysql://127.0.0.1/pdn2013?useUnicode=yes&characterEncoding=UTF-8 dataSource.username=xxxx dataSource.password=xxxxxxxxx

- provisDbms.properties

# vi provisDbms.properties แกไข IP, ชอ database, username, password ของ HDC

Page 7: การติดตั้งโปรแกรม PDN 2013

dbmsServer = xxxxx databaseName = xxxxx dbmsUsername = xxxxx dbmsPassword = xxxxx

ตดตง pdn key ทไดจากสวนกลาง ( pdnkey-XXXXX.jks (XXXXX => รหส สสจ) ) (ไฟลน แตจะจงหวดจะไดไมเหมอนกน และใชงานขามจงหวดกนไมได กรณาตดตอสวนกลาง หากทานยงไมไดไฟลน) # cp pdnkey-xxxxx.jks /etc/pdn2013

สดทายจะม config ไฟลทงหมด 4 ไฟล # ls –l /etc/pdn2013 -rw-r--r-- 1 root root 201 Feb 5 15:09 dbms.properties -rw-r--r-- 1 root root 917 Feb 5 15:06 pdn2013.properties -rw-r--r-- 1 root root 2551 Feb 5 15:20 pdnkey-xxxxx.jks -rw-r--r-- 1 root root 349 Feb 5 15:19 provisDbms.properties

deploy โปรแกรมลงใน tomcat # cd ~/pdn2013 # cp pdn-YYYYMMDD.war /usr/local/apache-tomcat7/webapps/pdn2013.war

ทดลอง monitor log ของ pdn2013 เพอดวาสามารถท างานไดถกตองหรอไม โดยในการเปดโปรแกรมในชวงแรกจะใชเวลานาน เนองจากโปรแกรมจะตรวจสอบโครงสราง HDC วามตารางครบตามมาตรฐานหรอไม # cd /usr/local/apache-tomcat7/logs # tail –f pdn2013.log ตวอยางการเรมตนโปรแกรมจะม log ลกษณะดงน StdlibBootStrap 1- Stdlib BootStrap initialized AppBootStrap 1- start AppBootStrap... Class 1- AppConfig initialize() start... ProvisStatusUpdateJob 1- update provis raw status done... Class 1- loading config from /etc/pdn2013/pdn2013.properties Class 1- [config] using default pdgServerPort [9913] Class 1- [config] using default logStdSyncBeanDetail [false] Class 1- [config] using default provisStructureType [STANDARD] Class 1- [config] using default checkCaptcha [true] Class 1- load config from file done.

Page 8: การติดตั้งโปรแกรม PDN 2013

Class 1- loading provis config from /etc/pdn2013/provisDbms.properties Class 1- province spCodeList #1 size = 177 Class 1- province spCodeList #2 size = 167 Class 1- loading provis structure from /usr/local/apache-tomcat7/webapps/pdn2013/WEB-INF/resource/provis-structure.groovy Class 1- provis table entries = 43 Class 1- parse provis structure done. all ok = true Class 1- load provis structure done. Class 1- AppConfig initialize() done. AppBootStrap 1- == config detail == appVersion : 5.0.0b (1/1/2556/01) provinceServicePlaceID : xxxxx provisStructureType : STANDARD provisSyncTime : 21:00:00 provisSyncAllowDate : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ...] provisSyncFromYear : 2556 startProvisThreadOnStartup : true startStdSyncThreadOnStartup : true provisSyncBatchSize : 500 pdgServerAddress : 164.115.5.56 pdgServerPort : 9913 pdgSendSize : 1000 pdgSyncOnStartup : true logStdSyncBeanDetail : false checkCaptcha : true provinceServicePlaceCodeList : 177 sp(s) provinceServicePlaceCodeList2: 167 sp(s) provinceCode : xx runtimeDataPath : /usr/local/apache-tomcat7/temp/pdn2013 runtimeImagePath : /usr/local/apache-tomcat7/temp/pdn2013/image runtimeProvisSyncResultPath : /usr/local/apache-tomcat7/temp/pdn2013/provisSync provisSyncProgressFilePath : /usr/local/apache-tomcat7/temp/pdn2013/provisSyncProgress.properties cacertsFilePath : /usr/local/apache-tomcat7/webapps/pdn2013/WEB-INF/resource/mycacerts.jks pdnKeyFilePath : /etc/pdn2013/pdnkey-xxxxx.jks AppBootStrap 1- initial cache done.

Page 9: การติดตั้งโปรแกรม PDN 2013

StdSyncDataRegistry 1- StdSyncDataRegistry init done. ProvisService 1- update raw provis table status: PERSON status = OK ProvisService 1- update raw provis table status: ADDRESS status = OK ProvisService 1- update raw provis table status: DEATH status = OK ProvisService 1- update raw provis table status: CARD status = OK ProvisService 1- update raw provis table status: DRUGALLERGY status = OK ProvisService 1- update raw provis table status: HOME status = OK ProvisService 1- update raw provis table status: SERVICE status = OK ProvisService 1- update raw provis table status: APPOINTMENT status = OK ProvisService 1- update raw provis table status: ACCIDENT status = OK ProvisService 1- update raw provis table status: DIAGNOSIS_OPD status = OK ProvisService 1- update raw provis table status: PROCEDURE_OPD status = OK ProvisService 1- update raw provis table status: DRUG_OPD status = OK ProvisService 1- update raw provis table status: CHARGE_OPD status = OK ProvisService 1- update raw provis table status: ADMISSION status = OK ProvisService 1- update raw provis table status: DIAGNOSIS_IPD status = OK ProvisService 1- update raw provis table status: PROCEDURE_IPD status = OK ProvisService 1- update raw provis table status: DRUG_IPD status = OK ProvisService 1- update raw provis table status: CHARGE_IPD status = OK ProvisService 1- update raw provis table status: SURVEILLANCE status = OK ProvisService 1- update raw provis table status: WOMEN status = OK ProvisService 1- update raw provis table status: FP status = OK ProvisService 1- update raw provis table status: EPI status = OK ProvisService 1- update raw provis table status: NUTRITION status = OK ProvisService 1- update raw provis table status: PRENATAL status = OK ProvisService 1- update raw provis table status: ANC status = OK ProvisService 1- update raw provis table status: LABOR status = OK ProvisService 1- update raw provis table status: POSTNATAL status = OK ProvisService 1- update raw provis table status: NEWBORN status = OK ProvisService 1- update raw provis table status: NEWBORNCARE status = OK ProvisService 1- update raw provis table status: DENTAL status = OK ProvisService 1- update raw provis table status: SPECIALPP status = OK ProvisService 1- update raw provis table status: NCDSCREEN status = OK ProvisService 1- update raw provis table status: CHRONIC status = OK ProvisService 1- update raw provis table status: CHRONICFU status = OK ProvisService 1- update raw provis table status: LABFU status = OK

Page 10: การติดตั้งโปรแกรม PDN 2013

ProvisService 1- update raw provis table status: COMMUNITY_SERVICE status = OK ProvisService 1- update raw provis table status: DISABILITY status = OK ProvisService 1- update raw provis table status: ICF status = BAD_STRCTURE ProvisService 1- update raw provis table status: FUNCTIONAL status = OK ProvisService 1- update raw provis table status: REHABILITATION status = OK ProvisService 1- update raw provis table status: VILLAGE status = OK ProvisService 1- update raw provis table status: COMMUNITY_ACTIVITY status = OK ProvisService 1- update raw provis table status: PROVIDER status = OK AppBootStrap 1- start ProvisSyncThread done. StdSyncThread 1- [sct] pdg-sync thread initialized AppBootStrap 1- start StdSyncThread done. StdSyncThread 1- [sct] starting pdg-sync thread... AppBootStrap 1- set StdSyncThread data sync = true AppBootStrap 1- fix workingSp of user province to be xxxxx. done. AppBootStrap 1- App BootStrap init done. Class 1- [pvt] this location (xxxxx) covers area [...] Class 1- [pvt] allow date list: [1, 2, 3, 4, 5, 6, 7, 8, ...] Class 1- [pvt] sync from year : 2556 Class 1- [pvt] sync time : 21:00:00 Class 1- [pvt] num all sp list: 167 Class 1- [pvt] initialize done.

7. เขาใชงานระบบ Login เขาสระบบ โดยใช browser เขาไปยง URL ดงน https://xxx.xxx.xxx.xxx/pdn2013 จะไดลกษณะหนาจอดงน

ระบ username เปน province ระบ password (default) เปน pdn20138141 ระบ captcha ตามทเหนบนหนาจอ

Page 11: การติดตั้งโปรแกรม PDN 2013

จะเขาสหนาจอของระบบดงรป

ในการเขาใชงานครงแรกจะตองท าดงน ระหวางการใชงานในครงแรกน ทานอาจจะเปดหนาจอเพอ tail log ของ pdn2013 ไวอกหนาตางหนง เพอด

ผลทเกดขนในระหวางการท างาน เปลยนรหสผานของ user province

o ใชเมน ตงคา => เปลยนรหสผาน นบจ านวนขอมลใน HDC

o ใชเมน ประมวลผลขอมล => นบจ านวนขอมล Provis ใหม o ท าการงานนอาจจะใชเวลาซกพกหนง ขนอยกบปรมาณขอมลในฐาน

เมอกลบมาทหนาจอหลก จะพบจ านวนขอมลทมากขนดงรป

Page 12: การติดตั้งโปรแกรม PDN 2013

และจะเหนจ านวนขอมลในแตละตารางดงรป

ทดสอบท าการ sync กบฐานขอมล HDC ในครงแรก

o ใชเมน จดการ sync ขอมลกบ Provis o กดปม ท าการ sync ขอมลทนท o บนหนาจอจะแสดงผลระหวางการท างาน และ refresh โดยอตโนมต