Upload
peter-d-smith
View
241
Download
0
Embed Size (px)
Citation preview
การตดตงโปรแกรม 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 ไมตองสนใจ
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="" />
ลบ 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 ผานไปเลย
ระบบจะมการสราง 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
* ถาใสผด ตองการลบ 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 ดงรป
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
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.
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.
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
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 ตามทเหนบนหนาจอ
จะเขาสหนาจอของระบบดงรป
ในการเขาใชงานครงแรกจะตองท าดงน ระหวางการใชงานในครงแรกน ทานอาจจะเปดหนาจอเพอ tail log ของ pdn2013 ไวอกหนาตางหนง เพอด
ผลทเกดขนในระหวางการท างาน เปลยนรหสผานของ user province
o ใชเมน ตงคา => เปลยนรหสผาน นบจ านวนขอมลใน HDC
o ใชเมน ประมวลผลขอมล => นบจ านวนขอมล Provis ใหม o ท าการงานนอาจจะใชเวลาซกพกหนง ขนอยกบปรมาณขอมลในฐาน
เมอกลบมาทหนาจอหลก จะพบจ านวนขอมลทมากขนดงรป
และจะเหนจ านวนขอมลในแตละตารางดงรป
ทดสอบท าการ sync กบฐานขอมล HDC ในครงแรก
o ใชเมน จดการ sync ขอมลกบ Provis o กดปม ท าการ sync ขอมลทนท o บนหนาจอจะแสดงผลระหวางการท างาน และ refresh โดยอตโนมต