วิธีการติดตั้งระบบของ Mendix Server สําหรับใช้งาน Mendix Application บน CentOS โดยจะอธิบายรายละเอียดของโปรแกรมที่ต้องติดตั้ง ขั้นตอนการติดตั้งและคอนฟิคเบื่องต้น การเตรียมไฟล์เพื่อ deploy สู่เซิฟเวอร์และการใช้งาน command ต่าง ๆ ใน m2ee console
ให้ทําการดาวน์โหลดไฟล์ต่าง ๆ เพื่อเตรียมอัพโหลดไปยังเซิฟเวอร์จาก Link และทําการ upload ไปยังเครื่อง Server ที่จะทําการติดตั้ง โดยภายใน link จะประกอบไปด้วย
1. m2ee-packages.zip
2. unzip-6.0-20.el7.x86_64.rpm (เอาไว้ติดตั้ง กรณีที่เซิฟเวอร์ยังไม่มีโปรแกรม unzip
ทําการติดตั้งโปรแกรม Unzip ด้วยคําสั่ง เพื่อเตรียมแตกไฟล์
sudo rpm -ivh unzip-6.0-20.el7.x86_64.rpm
จากนัfนทําการรันคําสั่ง จะได้โฟลเดอร์ชื่อ Packages ขึfนมา
unzip m2ee-packages.zip
เข้าไปในโฟลเดอร์ Packages ด้วยคําสั่งด้านล่าง เพื่อแสดงไฟล์ที่อยู่ในโฟลเดอร์นี้
cd Packages ls -l
จากตรงนี้ สามารถรันคําสั่ง จะมีคําสั่งต่างๆ ที่ใช้ในการติดตั้งโดยสรุปอยู่ภายใน
cat installation-notes.sh
ใน Mendix Application version 8.0 ขึfนไป ตัวโปรแกรมจะเปลี่ยนมาใช้งาน Java version 11 ให้ทําการติดตัfงโดยใช้คําสั่ง
sudo rpm -ivh jdk-11.0.7_linux-x64_bin.rpm
เมื่อติดตั้งเรียบร้อยแล้ว ให้ทําการทดสอบโดยรันคําสั่งเช็คเวอร์ชั่น java -version หากได้ผลลัพท์ดังนี้แสดงว่า ติดตั้งสําเร็จแล้ว
java -version
ทําการติดตั้ง Dependencies ของ m2ee-tools โดยรันคําสั่งดังต่อไปนี้ตามลําดับ
sudo rpm -ivh libyaml-0.1.4-11.el7_0.x86_64.rpm sudo rpm -ivh PyYAML-3.10-11.el7.x86_64.rpm sudo rpm -ivh python-httplib2-0.9.2-1.el7.noarch.rpm sudo rpm -ivh unzip-6.0-20.el7.x86_64.rpm sudo rpm -ivh telnet-0.17-64.el7.x86_64.rpm sudo rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
เมื่อติดตัfง Packages ข้างต้นครบทั้งหมดแล้ว จึงทําการรันคําสั่งติดตั้ง m2ee-tools ซึ่งเป็นเครื่องมือหลัก สําหรับรัน Mendix Runtime Server
sudo rpm -ivh m2ee-tools-7.0.1-1.el7.noarch.rpm
ใน Documentation ของ Mendix ได้แนะนําเอาไว้ว่าจะต้องสร้าง User ใน Linux ขึfนมา 1 ตัวเพื่อรัน Mendix Application เพื่อแยก process ในการทำงานและสิทธิ์ในการเข้าถึงไฟล์ต่างๆ เป็นรายโปรเจกต์
ให้ทําการสร้าง Group และ User สําหรับรัน Mendix App โดยใช้คําสั่ง
sudo groupadd mendix sudo useradd -g mendix mxadmin
หมายเหตุ: กรณีที่ต้องการรัน Mendix Application มากกว่า 1 ตัวในเครื่องเดียวกัน ให้รันคําสั่งนี้และทําตาม step 5เป็นต้นไปอีกครั้ง
sudo useradd -g mendix [new-mx-user]
ตั้งแต่ขั้นตอนนี้เป็นต้นไป จะต้องใช้สิทธิ์ของ root ในการจัดการไฟล์ โดยรันคําสั่งนี้และใส่พาสเวิร์ด root ของ เครื่องเซิฟเวอร์ลงไป
sudo su
ให้ทําการรันคําสั่งเหล่านี้เพื่อเตรียมสร้าง Filesystem สําหรับ Deploy Mendix Application
mkdir -p /srv/mendix/ mkdir /srv/mendix/runtimes/ mkdir /srv/mendix/web/ mkdir /srv/mendix/model mkdir /srv/mendix/data mkdir /srv/mendix/data/database mkdir /srv/mendix/data/files mkdir /srv/mendix/data/model-upload mkdir /srv/mendix/data/tmp mkdir /srv/mendix/data/ssl mkdir /srv/mendix/log touch /srv/mendix/log/application.log
จากนั้นทำการให้สิทธิ์ภายในในโฟลเดอร์แก่ user ของ mxadmin ด้วยคําสั่งดังนี้
chown -R mxadmin:mendix /srv/mendix chmod 700 /srv/mendix/model /srv/mendix/data
หลังจากสร้าง mendix filesystem เรียบร้อยแล้ว ให้รันโปรแกรม tree เพื่อเช็คดู จะได้ผลลัพท์ดังรูป
tree /srv/mendix
6.1 Deploy Mendix Application
ในการ deploy ให้ทําการ upload ไฟล์.mda เข้าไปบน Mendix Server และทําการ copy ไปวางไว้ที่โฟลเดอร์ model-upload ใน filesystem ของ project พร้อมทั้งให้ สิทธิ์ user mxadmin โดยใช้คําสั่งดังนี
cp [mendix-deployment-package].mda /srv/mendix/data/model-upload chown -R mxadmin:mendix /srv/mendix/data/model-upload/
เมื่อเสร็จแล้ว ให้เช็คความเรียบร้อยด้วยคําสั่ง
ls -l /srv/mendix/data/model-upload/
6.2 Deploy Mendix Runtime
ไฟล์ของ Mendix Runtime จะอยู่ในโฟลเดอร์ Packages ที่เรา unzip ออกมาใน step 1 ให้กลับไปที่โฟลเดอร์ นั้นและรันคำสั่ง เหล่านี้ เพื่อแตกไฟล์และให้สิทธิ์ในการจดัการแก่ user mxadmin
tar -xvzf mendix-8.5.0.64176.tar.gz -C /srv/mendix/runtimes/ chown -R mxadmin:mendix /srv/mendix/runtimes/
เมื่อเสร็จแล้ว ให้เช็คความเรียบร้อยด้วยคําสั่ง
ls -l /srv/mendix/runtimes/
7.1 Create m2ee.yaml
ในขั้นตอนนี้จะเป็นการเตรียม config เพื่อเตรียม start Mendix App ด้วย m2ee-tools โดย default นั้น m2ee จะอ่านคอนฟิคจากไฟล์ $HOME/.m2ee/m2ee.yaml ของ user ที่ใช้รัน Mendix
ในขั้นแรก จาก user root, ให้ทําการเข้าใช้งาน user mxadmin ด้วยคําสั่ง
su - mxadmin
จากนั้น ทําการสร้างโฟลเดอร์ $HOME/.m2ee ขึ้นมาและสร้างไฟล์ m2ee.yaml ของเราขึ้นมาจากไฟล์ ตัวอย่าง ด้วยคําสั่ง
mkdir $HOME/.m2ee cp /usr/share/doc/m2ee-tools-7.0.1/examples/user-specific-m2ee.yaml /home/mxadmin/.m2ee/m2ee.yaml
เมื่อเสร็จแล้ว ให้เช็คความเรียบร้อยด้วยคําสั่ง
ls -l $HOME/.m2ee/
7.2 Modify m2ee.yaml
เมื่อได้ไฟล์ m2ee.yaml มาแล้ว ให้เข้าไปแก้ไขคอนฟิคข้างในให้สอดคล้องกับ Mendix Application โดยส่วน ทีต้องแก้ไข ตัวอย่างตามไฟล์ด้านล่าง
nano $HOME/.m2ee/m2ee.yaml
..
m2ee: app_name: My App Name app_base: /srv/mendix # m2ee http admin interface and password admin_port: 9000 admin_pass: Password1234 # mxruntime web interface port runtime_port: 8000 # Application Runtime port # set to * if you want to have the public runtime port accessible from other # hosts than localhost (Mendix >= 4.3.0) runtime_listen_addresses: "*" # Uncomment บรรทัดนี 1เพื#อเปิดให้ภายนอกเข้าถึง Runtime port ได้ # custom java options, like -Xmx256m or -Djava.foo=bar javaopts: [ # Xmx.= Max Heap Memory, Xms = Min Heap Memory - ระบุmemory ที#จะให้Java process จองไว้ใช้งาน "-Dfile.encoding=UTF-8", "-XX:MaxPermSize=128M", "-Xmx4096M", "-Xms1024M", "-Djava.io.tmpdir=/srv/mendix/data/tmp", ] logfile: /srv/mendix/log/application.log logging: - # example of file logging by the platform itself name: FileSubscriber type: file autosubscribe: INFO filename: /srv/mendix/log/application.log max_size: 10485760 # bytes(!!) max_rotation: 7 mxruntime: # Database login credentials DatabaseType: SQLSERVER DatabaseHost: "127.0.0.1:1433" # IP และ port ของ database ปลายทาง DatabaseName: dbname # ชื#อ Database สําหรับ app ตัวนี 1 DatabaseUserName: dbusername DatabasePassword: dbpassword ConnectionPoolingMaxActive: 50 MicroflowConstants: #ใส่ค่าตามที่รัน m2ee ครั้งแรกเลยว่า .mda required อะไรบ้าง จะฟ้องใน error ตอน compile # แก้ไข ScheduledEvent (ถ้ามี) # ScheduledEventExecution can be set to ALL, NONE (default) or SPECIFIED ScheduledEventExecution: NONE # When using ScheduledEventExecution SPECIFIED, provide a list of actions to # enable: MyScheduledEvents: - Module1.Event1 - Module2.Event2 - Module3.Event3
แก้ไข MicroflowConstants ตามที่ .mda required ตาม error ตอนรัน m2ee
แก้ไข port mendix แก้ในไฟล์ m2ee/m2ee.yaml
7.3 Prepare CA Certificate for Mendix Application
หากมีการใช้ CA Certificate ในการ call API ระหว่าง App ให้ทําการ upload ไฟล์ CA Certificate ไปที่ path: /srv/mendix/data/ssl และให้สิทธิ์ในการจัดการแก่ user mxadmin ด้วยคําสั่ง
cp your-certificate.cer /srv/mendix/data/ssl/your-certificate.cer chown -R mxadmin:mendix /srv/mendix/data/ssl
เมื่อเสร็จแล้ว ให้เช็คความเรียบร้อยด้วยคําสั่ง
ls -l /srv/mendix/data/ssl
เมื่อเตรียมไฟล์เสร็จแล้ว ให้เพิ่มคอนฟิคสีแดงนี้เข้าไปใน m2ee.yaml เพื่อให้ Mendix App ดึงไฟล์ Certificate นี้มาใช้
nano $HOME/.m2ee/m2ee.yaml
..
m2ee: … mxruntime: … # หากมีการใช้CA Certificate ในการ call API ระหว่าง App ให้ทําการ upload ไปที# path: /srv/mendix/data/sslและใส่คอนฟิ คนี 1เพิ#มเติม CACertificates: - /srv/mendix/data/ssl/aaa-ca.cer - /srv/mendix/data/ssl/other.cer
8.1 Starting Mendix Application
เมื่อเตรียมทุกอย่างเรียบร้อยแล้ว ให้ทําการพิมพ์คําสั่ง m2ee ด้วย user mxadmin เพื่อเข้าสู่หน้า console ของ m2ee-tools โดยจะมีหน้าตาดังภาพ
m2ee
ขั้นแรกให้รันคําสั่ง unpack ไฟล์.mda ที่เราอัพโหลดไปใส่ไว้ใน path: /srv/mendix/data/model-upload จาก step 6.1 เพื่อแตกไฟล์ Mendix Application
m2ee(mxadmin): unpack xxx.mda
ก่อนจะ Start Mendix App ให้เปิด log เพื่อ debug กรณีเกิดปัญหา
m2ee(mxadmin): log
รันคําสั่ง start เพื่อ Start Mendix Application ขึ้นมา โดยระหว่างนั้นหาก Application ต่อ Database สําเร็จ แล้วจะมี Option ขึfนมาดังภาพ ให้พิมพ์ e เพื่อให้ Mendix Application เข้าไปจัดการ Database ได้
m2ee(mxadmin): start
หาก Application สามารถ start ขึ้นได้โดยไม่ติดปัญหาใด ๆ จะได้ Output ว่า MxRuntime is fully started now
หมายเหตุ: เมื่อทําการ Start Mendix Application โดยไม่มี License ตัว Application จะรันอยู่เป็นเวลา 3 ชั่วโมงก่อนที่จะถูก shutdown โดยอัตโนมัติ
เมื่อทําทุกอย่างเสร็จเรียบร้อยแล้ว ให้ใช้คําสั่ง exit เพื่อออกจาก m2ee console
m2ee(mxadmin): exit
ลองเข้าไปที่ IP ของ server ด้วย port ของ runtime หากไม่ติด firewall จะพบว่าเข้าใช้งาน Mendix Application ได้แล้ว
http://localhost:8080/
8.2 Frequently Used Commandsin m2ee console
สรุปคําสั่งที่ใช้บ่อยใน m2ee console
*Setup cronjob to auto start Mendix Server after reboot
หลังจากติดตั้งทุกอย่างเรียบร้อยแล้ว ให้ทําการใส่คําสั่ง cronjob เพื่อ Start Mendix Server ทุกครั้งที่มีการ reboot โดยรันคําสั่งดังนี้
sudo echo -n '@reboot /usr/bin/m2ee start' >> /etc/crontab sudo systemctl restart crond.service
เมื่อเสร็จแล้ว สามารถตรวจสอบการตั้งค่าในไฟล์ crontab ได้ด้วยคําสั่งนี้ จะได้ผลลัพธ์ดังภาพ แสดงว่าสคริป พร้อมใช้งานแล้ว
cat /etc/crontab
netstat -tulpn | grep $PORT
เช็ค port การทำงานจากค่า setting ใน $HOME/.m2ee/m2ee.yaml
https://stackoverflow.com/questions/12010631/command-line-for-looking-at-specific-port
เข้า m2ee
Check
show_license_information
Input Key
activate_license
กรอก Key ทำการ Stop Start ใหม่อีกรอบ
วิธีสร้างฐานข้อมูลเพื่มมาเชื่อมต่อกับ mendix server อย่าลืมเช็คเวอร์ชั่นให้ทาง mendix แจ้งด้วยนะครับ ไม่ตรงรันไม่ขึ้นแน่นอน
ตอน new sql อย่าลืม ใช้ค่านี้เท่านั้น
SQL_Latin1_General_CP1_AS
SQL SERVER 2019 หรือ SQL SERVER 2017
https://docs.mendix.com/developerportal/deploy/setting-up-a-new-sql-server-database
https://docs.mendix.com/refguide/system-requirements
ดูข้อมูลติดตั้งเพิ่มเติมได้ที่ลิ้ง https://docs.mendix.com/developerportal/deploy/