Installing & Compiling OpenGTS Tracking System~!

Opengts

# Project ကလုပ္ခဲ့တာ ၁ႏွစ္ေက်ာ္ေက်ာ္ေလာက္ေတာ့ ရွိပီဗ်။ အဲ့တုန္းက လုပ္ထားတဲ့ Documentation ကိုပဲ ျပန္တင္တာပါ။

# မဟုတ္ရင္ ၾကာရင္ ေမ့သြားမွာစိုးတာရယ္၊ တျခား reference လုပ္လိုတဲ့သူေတြအတြက္ Share လိုက္ပါတယ္။

# GPS Tracking System နဲ႕ပတ္သက္ရင္ ဒီ OpenGTS တစ္ခုတည္းပဲ ရွိတာေတာ့ မဟုတ္ဖူးဗ်။ တျခား OpenSource  (or) CloseSource ေတြ အမ်ားအျပားရွိပါေသးတယ္။

Ok! let’s start.

Preparing & Setting Environment Variables

  1. ပထမဆံုး jdk-7u72-windows-x64 ကိုသြင္းပါ(default)။ ၿပီးရင္ Java run၊ မ run cmd ထဲမွာ စစ္ပါ။

java –version

  ( make sure it says “Java™” & “Java Hotspot™ Client VM” )

  1. mail-1.5.2.jar ဖိုင္ကို C:\Program Files\Java\jdk1.7.0_72\jre\lib\ext ထဲသို႕ Copy ကူးပါ။
  2. Apache “Ant” Folder ကို C:\Program Files\apache-ant ေအာက္သို႕ ေရြ႕ပါ။
  3. Apache-Tomcat Folder ကို C:\Program Files\apache-tomcat ေအာက္သို႕ေရြ႕ပါ။
  4. mysql-5.6.22-winx64 ကို Default feature အတိုင္း သြင္းပါ။
  5. mysql-connector-java-5.1.34 ဖိုင္ကို C:\Program Files\Java\jdk1.7.0_72\jre\lib\ext ထဲသို႕ Copy ကူးထည့္ပါ။
  6. 5.7 Folder ကို C:\OpenGTS_2.5.7 ေအာက္သို႕ ကူးထည့္ပါ။
  7. ၿပီးရင္ Variables ေတြ ေပါင္းသတ္မွတ္ပါမယ္။
  8. Run box ထဲမွာ sysdm.cpl ဟုရိုက္ပါ။ Advanced Tab ကိုသြားပါ။ Environment Variables ကို ႏိွပ္ပါ။
  9. System Variable ထဲမွာ New ကိုႏွိပ္ပါ။ Variable name ကို JAVA_HOME ဟုေပးပါ။ (capital letters)
  10. Variable Value မွာ C:\Program Files\Java\jdk1.7.0_72 ကိုထည့္ပါ။
  11. OK ႏွိပ္ပါ။ ဆက္လက္ၿပီး New ကိုႏွိပ္ပါ။
  12. Variable Name ကို ANT_HOME ေပးပါ။ Variable value ေနရာတြင္ C:\Program Files\apache-ant ထည့္ပါ။
  13. OK ႏွိပ္ပါ။ ဆက္လက္ၿပီး New ကိုႏွိပ္ပါ။
  14. Variable Name ကို CATALINA_HOME ေပးပါ။ Value ေနရာတြင္ C:\Program Files\apache-tomcatထည့္ပါ။
  15. OK ႏွိပ္ပါ။ ဆက္လက္ၿပီး New ကိုႏွိပ္ပါ။
  16. Variable Name ကို GTS_HOME ဟုေပးပါ။ Value ေနရာတြင္ C:\OpenGTS_2.5.7 ကိုထည့္ေပးပါ။
  17. System Variable ထဲမွာ Path ကိုရွာပါ။ Select ေပးၿပီး Edit ႏွိပ္ပါ။
  18. Variable Value ၏ ေနာက္ဆံုးေနရာမွာ semicolon [;] ခံၿပီး C:\Program Files\MySQL\MySQL Server 5.6\bin ကို ထည့္ပါ။
  19. Semicolon[;] ထပ္ခံၿပီး %JAVA_HOME%\bin ကိုဆက္ထည့္ပါ။
  20. Semicolon[;] ထပ္ခံၿပီး %ANT_HOME%\bin ကိုဆက္ထည့္ပါ။ [semicolon ခံစရာမလိုေတာ့ပါ။ OK ႏွိပ္ပါ။

 

Installing NT Service & Compiling OpenGTS Tracking System

  1. Run box ထဲကေန cmd ေခၚပါ။
  2. mysqld ကိုရိုက္ၿပီး enter ေခါက္ပါ။ TimeStamp error ျပေနပါလိမ့္မည္။ သို႕ေပမဲ့ Run ပါသည္။
  3. Run မ Run ကို Task Manager ေခၚၿပီး Process ထဲတြင္ ၾကည့္ပါ။ mysqld ဆိုပီး ေပၚေနပါလိမ့္မည္။
  4. cmd ကုိ ပိတ္မပစ္ဘဲ ဆက္ Run ထားပါ။ ေနာက္တခု cmd ထပ္ေခၚပါ။
  5. mysqld –install ဟုရိုက္ၿပီး Enter ေခါက္ပါ။ Successfully installed Service ဆိုပီး ေပၚလာပါလိမ့္မည္။
  6. MySQL သည္ default အားျဖင့္ password မပါပါ။ password ခ်ိန္းပါမယ္။
  7. mysql –uroot –p ဟုရိုက္ပါ။
  8. Enter Password ဟုေပၚလွ်င္ ဘာမွမရိုက္ဘဲ Enter ေခါက္ပါ။
  9. mysql > prompt ေပၚေနပါလိမ့္မည္။
  10. update mysql.user set password=password(‘password’)where user=’root’;
  11. ဟုရိုက္ပါ။ မ်က္ေတာင္ အဖြင့္အပိတ္ျပထားေသာ password ေနရာတြင္ password ကိုရိုက္ထည့္ပါ။

(root ေနရာတြင္ ဒီအတိုင္း ထားပါ။ မေျပာင္းပါႏွင့္)

  1. Query OK ဘာညာဆိုပီး ျပေနပါလိမ့္မည္။ ေနာက္တေၾကာင္းတြင္ flush privileges; ဟုရိုက္ထည့္ပါ။
  2. Effect ျဖစ္သြားပါလိမ့္မည္။ quit ရိုက္ပီးထြက္ပါ။ အဆင့္ ၇ မွ ျပန္၀င္ၿပီး Password ေျပာင္းမေျပာင္းစမ္းသပ္ပါ။
  3. Apache-Tomcat အားNT Service သြင္းရန္ cd %CATALINA_HOME%\bin ဟုရိုက္ပါ။
  4. bat install ဟုရိုက္ပါ။ (Run box ထဲမွ services.msc ေခၚၿပီး ၀င္၊ မ၀င္ၾကည့္ႏိုင္သည္။)
  5. cmd ထဲမွဆက္လက္ၿပီး openGTS compiling လုပ္ရန္ cd %GTS_HOME% ဟုရိုက္ကာ Directory ခ်ိန္းပါ။
  6. OpenGTS Folder လမ္းေၾကာင္းသုိ႕ေရာက္သြားပါလိမ့္မည္။ ant all ဟု ရိုက္ပါ။
  7. Build Sucessful ဟုေပၚလာပါလိမ့္မည္။ (error ျပေနလည္း ကိစၥမရွိပါ။)
  8. OpenGTS Database ေဆာက္ဖို႕အတြက္ db ကို import လုပ္ပါမယ္။
  9. cd %GTS_HOME%\bin ေအာက္သို႕ျပန္၀င္ပါ။
  10. bat “-rootUser:root” “-rootPass:password” 

    ဟုရိုက္ၿပီးEnter ေခါက္ပါ။

(password ေနရာတြင္ ေျပာင္းထားေသာ password ကို ထည့္ေပးပါ။)

  1. db ေတြ Create လုပ္သြားတာ ျမင္ရပါလိမ့္မည္။
  2. Web Interface ကို Access လုပ္ရန္ system account တခု ဖြင့္ပါမယ္။
  3. bat Account –account:sysadmin –pass:password –create

(password ေနရာတြင္ကိုယ္ႀကိဳက္တာေပးပါ။)

  1. openGTS ထဲက ဖိုင္ကို Tomcat server ထဲထည့္ပါမယ္။ Build ေအာက္တြင္ track.war ကိုရွာပါ။
  2. cd %GTS_HOME%\bin ဟုျပန္ရိုက္ပီး ant track.war ဟုျပန္ရိုက္ပါ။

(PDF ထဲတြင္ မည္သည့္ xml, conf ဖိုင္မ်ားကို ျပင္ပီးတိုင္း compile ျပန္လုပ္ေပးရမယ္လို႕ ေျပာထားပါတယ္)

  1. Compile ၿပီးသြားလွ်င္ Build\track.war ဖိုင္ကို C:\Program Files\apache-tomcat\webapps ေအာက္သို႕ Copy ကူးထည့္ပါ။
  2. Browser ေခၚၿပီး http://localhost:8080/track/Track ကိုေခၚၾကည့္ပါ။

MySQL Replication

sqlreplicate

ခုရက္ပိုင္းေပ်ာက္ေနျပန္ပါၿပီ။ မအားလပ္တာကတေၾကာင္း၊ 4Mbps Fiber Optics ကိုယ္တိုင္ကိုက SEA GAME အေၾကာင္းျပသျဖင့္လား၊ ဘာလားမသိပါ။ တခါ တခါ လံုး၀ကို Request Time Out က်သြားပါတယ္။ ငုတ္တုတ္ထိုင္ေနရတဲ့ရက္က မ်ားပါတယ္။  IT Director က ကၽြန္ေတာ့္ကို MySQL Database Server ကို Sync လုပ္ရန္ တာ၀န္ေပးပါတယ္။ ဒီထဲမွာ အဲဒီအပိုင္းကိုပဲ တာ၀န္ယူရပါတယ္။  ဒီထဲမွာ ဆိုတာက အမွန္က Database Server က Microsoft SQL Server ကိုသံုးထားပါတယ္။ အဲဒီ Database ကို opensource တခုျဖစ္တဲ့ MySQL ထဲကို ေျပာင္းထဲ့ပါမယ္။ အဲဒီ MySQL Server ကိုမွ ကၽြန္ေတာ္က ရံုးက MySQL Server ထဲကို လွမ္းၿပီးေတာ့ (Sync) Replicate လုပ္ေပးရမွာဗ်။ ကဲ.. စၾကရေအာင္။ အေျခခံေတာ့ရွိရမွာေပါ့ဗ်ာ။ ထပ္ေျပာမေနေတာ့ပါဘူး။ကၽြန္ေတာ္က ေရာသမေမႊ လုပ္တတ္ပါတယ္။ ဘာပဲျဖစ္ျဖစ္ အဆင္ေျပရင္ၿပီးတာပါပဲ။ GUI ေကာ၊ CUI ေကာ ခ်မယ္ေနာ္။ Ready !!!

ရွင္းရွင္းလင္းလင္းျဖစ္သြားေအာင္ Server Site (Remote Site) နဲ႕ Client Site ဆိုပီးခြဲေျပာပါမယ္။ Server Site က Master Server ျဖစ္ၿပီးေတာ့၊ Client Site ကေတာ့ Slave Server ေပါ့။ Master Server က DB တစ္ခုလံုးကို Slave Server က လွမ္းၿပီး Sync လုပ္မယ္။ ဘယ္ platform ပဲျဖစ္ျဖစ္ဒီနည္းသံုးလို႕ရပါတယ္။ Linux ပဲျဖစ္ျဖစ္၊ Windows ပဲျဖစ္ျဖစ္ပါ။ သံုးတတ္ရင္လြယ္ပါတယ္ :P(မသံုးတတ္ရင္ မလြယ္ ဘူးေပါ့)။ ကၽြန္ေတာ္လုပ္တုန္းကေတာ့ Master Server က Windows 7 ပါ။ Slave Server ကေတာ့ Ubuntu Server ပါ။ အဲ့ေတာ့ကာ ေျပာရင္ရႈပ္ေနမွာဆိိုးလို႕ Windows to Windows ဟာပဲ ေျပာျပပါမယ္။

# ပထမဆံုး XAMPP ကို Install လုပ္လိုက္ပါ။

# ၿပီးေတာ့ phpmyadmin လည္းသံုးပါမယ္။ အဲ့ဒီအတြက္ေၾကာင့္ MySQL Setting ကို နည္းနည္းျပင္ဖို႕လိုပါမယ္။ XAMPP ရဲ႕ default MySQL Password က blank ပါ။ အဲေတာ့ Security ရွိသြားေအာင္ Password ထည့္မယ္၊ေျပာင္းပါမယ္။ ၿပီးရင္အဲ့ေျပာင္းထားတဲ့ Password ကို xampp\phpmyadmin\config.inc.php ထဲမွာ သြားေပးရပါမယ္။ နည္းနည္းေတာင္ အေသးစိတ္ေနပါပီ။ တိုတိုေျပာရရင္ phpmyadmin သံုးလို႕ရေအာင္ အရင္လုပ္ပါမယ္။ MySQL Server ကို stop အရင္လုပ္လိုက္ပါမယ္။

# အခုေျပာေနတာ Master Server ဘက္ျခမ္းေရာ၊ Slave Server ဘက္ျခမ္းအထိပါ လုပ္ေပးရမွာပါ။ ကဲ… ၿပီးရင္ Master Server ဘက္ျခမ္းရဲ႕ MySQL ကို Master ျဖစ္ေအာင္ လုပ္မွာျဖစ္တဲ့အတြက္ config ခ်ပါမယ္။ အေသးစိတ္သိခ်င္ ရင္ေတာ့ official site မွာသြားဖတ္ၾကည့္ႏိုင္ပါတယ္။

# XAMPP ရဲ႕ MySQL Config ဆိုတာေလးကို ကလစ္တခ်က္ႏွိပ္လိုက္ပါ။ အဲဒီမွာ my.ini ဆိုတာေလးကို ႏွိပ္လိုက္ပါ။ notepad နဲ႕တက္လာပါလိမ့္မယ္။

# အဲဒီမွာ [mysqld] section မွာ ႏွစ္ေၾကာင္းသြားေရးပါမယ္။ log-bin=mysql-bin နဲ႕ server-id=1 ဆိုပီးသြားေရးေပးရပါမယ္။ နမူနာေအာက္မွာျပထားပါတယ္။

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port= 3306
socket = “C:/xampp/mysql/mysql.sock”
basedir = “C:/xampp/mysql”
tmpdir = “C:/xampp/tmp”
datadir = “C:/xampp/mysql/data”
pid_file = “mysql.pid”
log-bin=mysql-bin
server-id=1

# ၿပီးရင္ save လိုက္ပါ။ log-bin=mysql-bin ဆိုတာက Master ျဖစ္ဖို႕အတြက္ binlogging က enable ျဖစ္ေနရပါမယ္။ ဒါမွ Slave က Sync လွမ္းလုပ္တဲ့အခါက်ရင္ တိုက္ၾကည့္စစ္ေဆးႏိုင္ေအာင္အတြက္ျဖစ္ပါတယ္။ ေနာက္က server-id=1 ဆိုတာကေတာ့ ကၽြန္ေတာ္တို႕ Computer မွာသံုးတဲ့ Internet Protocol (IP) နဲ႕တူပါတယ္။ တစ္စက္နဲ႕ တစ္စက္ လွမ္းခ်ိတ္ဖို႕ IP လိုသလိုမ်ိဳးေပါ့။ သူကေတာ့ server-id နဲ႕သြားပါတယ္။ my.ini မွာ လုပ္ဖို႕လိုတာဒါအကုန္ပါပဲ။

# သာမန္ဆိုရင္ေျပာတာပါ။ တျခား အသံုးျပဳလို႕ရတဲ့ inno_db_flush ဆိုပီး အမ်ားႀကီး ရွိပါေသးတယ္။ MySQL Server ကို start ျပန္လုပ္လိုက္ပါ။ မွားၿပီး config ခ်မိရင္ status မွာ နီနီစာသားေတြ ေပၚလာပီး debug error ထုတ္ျပပါလိမ့္မယ္။

# Master ထဲက database ေတြကို အရင္ဆံုး dump လုပ္ပါမယ္။ ၿပီးရင္ slave ထဲထည့္ဖို႕ေပါ့။ dump လုပ္ရျခင္းအေၾကာင္းအရင္းကေတာ့ ခုနက Master ရဲ႕ bin-log ေတြနဲ႕ tables postion စတာေတြကို slave မွာ connect မလုပ္ခင္ တူေနဖို႕အတြက္ပါပဲ။ MySQL ထဲကို ၀င္ပါမယ္။

# > myql -uroot -p

# database ကို လက္ရွိရွိေနတဲ့ tables position နဲ႕ bin log မွာ ရပ္ေနေစဖို႕အတြက္ lock ခ်ပါမယ္။

# mysql > flush tables with read lock;

# mysql > show master status; ဆိုပီးလုပ္လိုက္ရင္ master-log-file နဲ႕ master-log-pos ရဲ႕ data ေတြကိုလာျပပါလိမ့္မယ္။ အဲတာေတြကို စာရြက္မွာ မွတ္လိုက္ပါ။ ဒါဆို အိုေကပါပီ။ၿပီးရင္….

# quit နဲ႕ထြက္လိုက္ပါ။ စတင္ၿပီး dump လုပ္ပါမယ္။

> mysqldump -uroot -p –all-databases –master-data > fulldb.db

ဆိုပီး shell ထဲမွာ Enter ေခါက္လိုက္ပါ။ ဒါဆို shell ရဲ႕ path လမ္းေၾကာင္းထဲမွာ ခုနက dump ေဒတာ ေရာက္ရွိေနပါလိမ့္မယ္။ ၿပီးရင္ lock ျပန္ျဖည္ေပးရပါမယ္။ ကၽြန္ေတာ္ကေတာ့ slave server ဘက္ျခမ္းမွာ db ကို execute လုပ္ၿပီးမွ unlock tables; လုပ္ပါတယ္။ error တက္ဖူးထားလို႕ပါ 😛

> unlock tables;

# ဒါဆိုရင္ေတာ့ Master ဘက္အျခမ္းကၿပီးသင့္သေလာက္ၿပီးပါၿပီ။ ကိုယ့္ကို လာခ်ိတ္ထားတဲ့ slave host ကို ၾကည့္တာေလာက္ပဲ က်န္ပါေတာ့တယ္။

# Slave ဘက္အျခမ္းကို သြားက်အံုးစို႕။ ခုနက Master အတိုင္း my.ini မွာ ႏွစ္ခုပဲ သြားျပင္ပါမယ္။ ဘာျဖစ္မယ္လို႕ ထင္ပါသလဲ။ server-id ပါ။ မတူတာေပးလိုက္ပါ။ ကၽြန္ေတာ္ကေတာ့ server-id=2 လို႕ေပးပါတယ္။ၿပီးရင္ report-host ထည့္ပါမယ္။ အဲဒီလိုထည့္ပါမွ phpmyadmin မွာတက္ၾကည့္ရင္ေပၚပါလိမ့္မယ္။ report-host=sql-slave ေပါ့။ (sql-slave) ဆိုတာ local မွာဆိုရင္ေတာ့ computer name ေပါ့၊ Internet မွာဆိုရင္ေတာ့ Host Name ေပါ့ဂ်ာ။ (ေမာလိုက္တာ…   :P)

# ကဲ.. ၿပီးရင္ ခုနက Master Server က dump ကုိ Slave Server ထဲ Execute လုပ္ပါမယ္။

> mysql -uroot -p < fulldb.db

ဒါဆိုရင္ Master Server ထဲက db ေတြ အကုန္ေရာက္ကုန္ပါပီ။ Master Server ကိုခ်ိတ္ဖို႕အတြက္ လိုအပ္တဲ့ MySQL Entry ေတြရိုက္ထည့္ရပါဦးမယ္။ Master Server မွာေပးထားတဲ့ password ပါျဖစ္သြားပါမယ္။ လိုအပ္တဲ့အတြက္ MySQL Service ကို restart လုပ္ေပးသင့္ရင္ လုပ္ေပးပါ။

# mysql> use mysql;

# mysql> change master to

> master_log_file = ‘mysql-bin.0004’ ,

> master_log_pos = 199;

ဆိုပီး ခုနက Master Server မွာ Show Master Status လုပ္တုန္းက ေပၚလာတဲ့ entry ေတြကို ထည့္ေပးရပါမယ္။ ကၽြန္ေတာ္ခုထည့္ထားတဲ့ဟာက အစမ္းပါ။ ကိုယ့္ဖာသာေပၚလာတဲ့ဟာကို ေျပာင္းထည့္ေပးရပါမယ္။

# ၿပီးရင္ Master Server ကိုသြားလိုက္ပါ။ phpmyadmin သံုးပါမယ္။

# ၀င္၀င္ခ်င္းမွာပဲ Replication ဆိုတဲ့ Tab ကိုရွာလိုက္ပါ။ မေတြ႕ဘူးဆိုရင္more နဲ႕ ဆက္ၾကည့္ပါ။ ၿပီးရင္ ႏွိပ္ပါ။

# Master Replication ဆိုတဲ့ေနရာမွာ ေပၚေနမွာျဖစ္ပါတယ္။ Replication User တစ္ခုေဆာက္လုိက္ပါ။ အဲဒီအေကာင့္နဲ႕ Slave Server မွာ phpmyadmin ဆက္သံုးပါမယ္။

# Slave Server မွာလဲ ခုနအတိုင္းလုပ္ပါ။ ဒါေပမဲ့ ခ်ိတ္ရမဲ့ host, username, password တို႕လာေတာင္းပါလိမ့္မယ္။ host ကေတာ့ Master Server ရဲ႕ name  ေပါ့။ username ကေတာ့ ခုနက Master မွာလုပ္ခဲ့တဲ့ Replication အေကာင့္ပါ။ ၿပီးရင္ GO လိုက္ပါ။

# shell ထဲက၊ MySQL prompt ထဲကေန …

# mysql > start slave; ဆိုပီး ရိုက္ထည့္လိုက္ပါ။ ဒါဆိုရင္ စတင္ အလုပ္လုပ္ပါၿပီ။

# phpmyadmin မသံုးခ်င္ဘဲ CUI သမားမ်ားကေတာ့ ခုနက change master to ဆိုတဲ့ေနရာမွာ master-host, master-user, master-password ဆိုပီးထည့္ႏိုင္ပါတယ္။

# report-host ထည့္ထားတဲ့အတြက္ေၾကာင့္ phpmyadmin မွာ slave host ဆို ပီးျပေနပါလိမ့္မယ္။

# Slave Server ကေန Master Server ဆီ အလုပ္၊လုပ္မလုပ္ လွမ္းၾကည့္ လို႕ရပါတယ္။

# mysql > show slave status\G; ဆိုပီး Enter ေခါက္လိုက္ပါ။

master-host ဆိုတဲ့ ေနရာမွာ Waiting for sync from master server လို႕ေပၚေနရင္ အိုေကေနပါၿပီ။

# Master Server ကေနလဲ ကိုယ့္ဆီ Connected ျဖစ္ေနတဲ့ Slave ကိုၾကည့္လို႕ရပါတယ္။

# mysql > show slave hosts;

ဒါဆိုရင္ေတာ့ Master Server ဆီက ဘယ္ Database ပဲ create လုပ္လုပ္၊ drop လုပ္လုပ္ အၿမဲတမ္း Sync ျဖစ္ေနတဲ့အတြက္ေၾကာင့္ Slave Server ဆီမွာ effective ျဖစ္ေနမွာပါ။ 🙂