Mendix Server on Linux

วิธีการติดตั้งระบบของ Mendix Server สําหรับใช้งาน Mendix Application บน CentOS โดยจะอธิบายรายละเอียดของโปรแกรมที่ต้องติดตั้ง ขั้นตอนการติดตั้งและคอนฟิคเบื่องต้น การเตรียมไฟล์เพื่อ deploy สู่เซิฟเวอร์และการใช้งาน command ต่าง ๆ ใน m2ee console

PreparingInstallation Packages

ให้ทําการดาวน์โหลดไฟล์ต่าง ๆ เพื่อเตรียมอัพโหลดไปยังเซิฟเวอร์จาก Link และทําการ upload ไปยังเครื่อง Server ที่จะทําการติดตั้ง โดยภายใน link จะประกอบไปด้วย

1. m2ee-packages.zip

2. unzip-6.0-20.el7.x86_64.rpm (เอาไว้ติดตั้ง กรณีที่เซิฟเวอร์ยังไม่มีโปรแกรม unzip

รายละเอียดไฟล์ที่อย่ใูน m2ee-packages.zip

Installation

1. Preparation

ทําการติดตั้งโปรแกรม 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


2.Install Java 11

ใน 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


3.Install m2ee-tools and its dependencies

ทําการติดตั้ง 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


4.Create User and Group for Mendix

ใน 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] 


5.Prepare Deployment Location

ตั้งแต่ขั้นตอนนี้เป็นต้นไป จะต้องใช้สิทธิ์ของ 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.Deploy Mendix App & Runtime

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.Prepare m2ee config

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.Using m2ee-toolsto start Mendix Application

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

After-Installation

*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



Check Port การทำงาน

netstat -tulpn | grep $PORT

เช็ค port การทำงานจากค่า setting ใน $HOME/.m2ee/m2ee.yaml


https://stackoverflow.com/questions/12010631/command-line-for-looking-at-specific-port

License Key Activation on Linux

เข้า m2ee

Check

show_license_information

Input Key

activate_license

กรอก Key ทำการ Stop Start ใหม่อีกรอบ

Note.

วิธีสร้างฐานข้อมูลเพื่มมาเชื่อมต่อกับ 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/

0
981