Tugas membangun backend system untuk sebuah webmap project adalah sebuah tedious work dan seringkali menjadi "lempar-lemparan" antara GIS Specialists dan staf TI (mulai dari devops, system administrators, techleads, hingga programmers). Orang GIS bilang: "...wah, itu yang tahu dan bisa hanya orang TI." Sementara orang TI juga bilang: "...saya nggak tau geografi. Kerjaan itu sudah sangat spesifik. Coba tanya sama orang-orang GIS." -- Wah, kalau gini caranya, bakalan nggak selesai-selesai webmap project-nya. Dan ini belum sampai ke pertanyaan yang lebih klasik lagi: "...yang tugas maintain sistemnya siapa nih?", saat sistemnya trouble. Membingungkan dan overwhelming, tapi ini sering sekali terjadi.
Tapi kalau nggak dimulai sekarang juga, ya kapan terwujudnya? Keburu disamber sama "tuan singh" dan konco-konco-nya nanti. Let's make a quickstart, berdarah-darah dikit dulu nggak apa-apa, asal ngelmu Geomatika kita terus berkembang maju!
Asumsi #1: Skenario development ecosystem akan kita bangun adalah:
dimana: Development workstation IP address: 192.168.1.2/24, OS: Windows 10. Pada workstation ini akan terpasang beberapa software yang umum digunakan untuk webmap development, seperti Quantum GIS, PostGIS Shapefile and DBF Loader/Exporter, Microsoft Visual Studio Code (atau Notepad++), Postman, PgAdmin, MySQL Workbench, SQLite DB Browser, MongoDB Compass Community Edition, PuTTy dan WinSCP.
Webmap Development Server IP address: 192.168.1.23/24, hostname: nusantara, default user: rinjani.
Asumsi #2: Instalasi OS (Fedora Server versi 30) pada Webmap Development Server sudah dilaksanakan, dengan tidak lupa untuk mengganti hostname dan setting IP address secara manual, sehingga bisa diakses dari Development Workstation dengan menggunakan PuTTy atau WinSCP. Adapun mode instalasi OS yang disarankan adalah Minimal Installation. Untuk langkah-langkah instalasinya, Anda bisa mengacu pada dokumentasi-nya di situs Fedora.
Sebagai catatan tambahan, Anda bisa/boleh menggunakan Oracle VirtualBox atau VMware Workstation Player untuk hosting Fedora Linux-nya di workstation Anda.
Untuk menjalankan langkah-langkah post-installation, ecosystem ini harus terhubung dengan Internet!
Aktifkan PuTTy pada workstation Anda, dan buka akses ke Webmap Development Server (host: 192.168.1.23, port: 22, user: rinjani), dan setelah Anda masukkan password-nya muncul shell:
[rinjani@nusantara ~]$
masuk ke mode superuser dan update dulu sistemnya:
[rinjani@nusantara ~]$ sudo su
[root@nusantara rinjani]# dnf update
[root@nusantara rinjani]# reboot
Setelah server di-reboot, login lagi, dan langkah pertama yang dilakukan adalah men-disable fitur SELinux. Langkah ini ditempuh supaya handling filesystem tidak ribet. Walaupun SELinux bersifat mandatory untuk production server, tapi untuk sementara dapat diabaikan dulu.
[rinjani@nusantara ~]$ sudo nano /etc/sysconfig/selinux
Ubah:
SELINUX=enforcing
Menjadi:
SELINUX=disabled
[save + exit]
[rinjani@nusantara ~]$ sudo reboot
Karena SELinux nya di-disable, maka sekarang pengamanan server akan diserahkan pada service firewalld. Untuk memeriksa apakah firewall sudah terinstall dan aktif, jalankan shell command:
[rinjani@nusantara ~]$ sudo firewall-cmd --list-all-zones
Jika service firewalld belum terinstall karena suatu hal, maka langkah-langkah instalasinya adalah sebagai berikut:
[rinjani@nusantara ~]$ sudo dnf install firewalld
[rinjani@nusantara ~]$ sudo systemctl unmask firewalld
[rinjani@nusantara ~]$ sudo systemctl enable firewalld.service
[rinjani@nusantara ~]$ sudo systemctl start firewalld.service
[rinjani@nusantara ~]$ sudo dnf install git binutils gcc kernel-headers kernel-devel virtualenv
[rinjani@nusantara ~]$ sudo dnf install java-1.8.0-openjdk-*
Test instalasi OpenJDK dengan shell command:
[rinjani@nusantara ~]$ java -version
[rinjani@nusantara ~]$ sudo dnf install python3-policycoreutils policycoreutils-python-utils policycoreutils-devel policycoreutils-newrole policycoreutils-sandbox
[rinjani@nusantara ~]$ sudo dnf install gdal gdal-libs gdal-devel gdal-doc gdal-java gdal-perl gdal-python3 python3-networkx-geo geos geos-devel proj proj-devel hdf5 hdf5-devel
Untuk test GDAL, jalankan shell command:
[rinjani@nusantara ~]$ gdalinfo --version
[rinjani@nusantara ~]$ sudo dnf install GMT GMT-common GMT-doc GMT-devel gshhg-gmt-nc4 gshhg-gmt-nc4-full gshhg-gmt-nc4-high dcw-gmt
Untuk test GMT, jalankan shell command:
[rinjani@nusantara ~]$ gmt
atau langsung saja cek versi GMT:
[rinjani@nusantara ~]$ gmt --version
[rinjani@nusantara ~]$ sudo dnf install postgresql postgresql-server postgresql-pgpool-II postgresql-contrib postgresql-devel postgresql-docs postgresql-pgpool-II-extensions postgresql-pgpool-II-devel postgresql-odbc postgresql-jdbc python3-postgresql postgresql-test
[rinjani@nusantara ~]$ sudo dnf install pgaudit pg_top pg_view
[rinjani@nusantara ~]$ sudo dnf install postgis pgRouting readosm osmpbf osmpbf-java osmpbf-devel osmctools osmium-tool osm2pgsql
Sebaiknya, cek terlebih dahulu versi termutakhir di situsnya MySQL.
[rinjani@nusantara ~]$ sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-fc30-1.noarch.rpm
[rinjani@nusantara ~]$ sudo dnf update
[rinjani@nusantara ~]$ sudo dnf install mysql-community-server mysql-community-client mysql-community-common mysql-community-libs mysql-community-test mysql-community-devel
Biar nggak jadi dinosaurus, nge-hype sedikit pasang NoSQL juga: MongoDB.
[rinjani@nusantara ~]$ sudo nano /etc/yum.repos.d/mongodb.repo
dan masukkan entry:
[Mongodb]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
Save + exit, lalu update dan install MongoDB nya:
[rinjani@nusantara ~]$ sudo dnf update
[rinjani@nusantara ~]$ sudo dnf install mongodb-org mongodb-org-server mongodb-org-mongos mongodb-org-shell mongodb-org-tools
[rinjani@nusantara ~]$ sudo dnf install tomcat tomcat-webapps tomcat-admin-webapps
[rinjani@nusantara ~]$ sudo dnf install php php-fpm php-devel php-bcmath php-dba php-dbg php-exif php-gd php-gmp php-interbase php-mbstring php-pecl-mcrypt php-mysqlnd php-odbc php-opcache php-pdo php-pdo-dblib php-pear php-pecl-selinux php-pecl-redis php-pgsql php-process php-soap php-xml php-xmlrpc
[rinjani@nusantara ~]$ sudo dnf install composer samba* nginx pure-ftpd nodejs golang
[rinjani@nusantara ~]$ sudo npm install -g nodemon
[rinjani@nusantara ~]$ sudo curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
[rinjani@nusantara ~]$ sudo dnf install yarn
😁 Sampai pada tahap ini, geostack Anda sudah siap untuk dikonfigurasi seluruh komponen terkait nya.
Instalasi dan konfigurasi sebuah tech-stack adalah sebuah craftmanship -- semakin mendalam Anda memahami bagaimana sebuah komponen bekerja dalam ekosistemnya, in-and-out, maka semakin paham pula Anda terhadap seluruh ketidaksempurnaan yang pernah Anda jumpai dalam hidup.
- Part 1: Post-Installation / OS Configuration (this file)
- Part 2: Configuring Apache Tomcat for GeoServer
- Part 3: GeoServer Installation / Configuration
- Part 4: Configuring PostgreSQL and PostGIS
- Part 5: Configuring MySQL Database
- Part 6: Configuring PHP, PHP-FPM and Nginx
- Part 7: Configuring Nginx as a Reverse-Proxy
- Part 8: Configuring Pure-FTPd