Deploy OpenAset di Linux Mint 19
Bismillah,
Ini adalah catatan ringkas, sebagai pengingat bagi diri saya pribadi khususnya, proses deploy aplikasi OpenAset di Linux Mint. Mengapa memilih Linux ketika ini? Jawabannya adalah, agar bisa di lihat bahwa aplikasi ini tidak hanya bisa jalan di OpenBSD saja.
Catatan ini saya buat lebih ringkas dari tulisan saya sebelumnya, yang mana di sini saya tidak menampilkan output dari perintah yang saya jalankan, kecuali sebagian kecilnya saja.
Versi Linux Mint yang di gunakan:
$ cat /etc/linuxmint/info | grep Linux
DESCRIPTION="Linux Mint 19 Tara"
GRUB_TITLE=Linux Mint 19 MATE
Ganti vim default di sistem dengan vim yang lebih lengkap fitur nya.
$ sudo apt remove vim-tiny
$ sudo apt install vim
Install CVS, inilah yang saya gunakan untuk mendevelop aplikasi ini:
$ sudo apt install cvs
Saya mengenal Git juga, blog saya ini di bangun dengan jekyll yang di hosting di Github Pages sebagaimana saya kisahkan, yang mana tentunya menggunakan git untuk menampilkan postingan blog, namun karena CVS adalah pengelola source code yang pertama saya kenal, jadi sulit berpindah dari cinta pertama, he…he…
Install OpenSSH server dan jalankan:
$ sudo apt install openssh-server
$ sudo systemctl restart sshd
Install PostgreSQL versi 10:
$ sudo apt install postgresql-10
$ sudo apt install postgresql-server-dev-10
Sepertinya server PostgreSQL langsung jalan setelah terinstall, nah, inilah salah satu kelemahan Linux Mint ini menurut saya, karena seharusnya, admin lah yang menjalankan suatu server, bukan otomatis setelah di install langsung jalan, he…he…
Install Python pip, program ini untuk menginstall Aplikasi python lainnya:
$ sudo apt install python-pip
$ sudo pip install --upgrade pip
$ pip2 --version
pip 19.2.3 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
Python versi 2 akan berakhir masa aktif nya pada 1 Januari 2020, oleh karena ini, saya merencanakan, insyaAllah, menggunakan python versi 3 pada OpenBSD 6.6.
Install Django:
$ sudo pip2 install Django==1.11.24
$ django-admin --version
1.11.24
Buat ssh publik key, upload ke server cvs, untuk mengambil aplikasi OpenAset nantinya:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/muntaza/.ssh/id_rsa):
Bahkan pernah saya tegaskan bahwa seharusnya, koneksi ke ssh hanya bisa dengan publik key saja, dan menonaktifkan metode authentication lainnya.
Install apache-httpd2 dan mod-wsgi:
$ sudo apt install apache2 libapache2-mod-wsgi
Mod-wsgi ini sebagai driver yang menghubungkan Python dengan Apache Web Server.
Install PHP7.2 dan modul pendukungnya:
sudo apt install php7.2
sudo apt install php7.2-pgsql
sudo apt install php7.2-xml
sudo apt install php7.2-gd
Termasuk di dalamnya mod-php, yang merupakan driver yang menghubungkan PHP ke Apache Web server.
Install Psycopg2 yang merupakan driver penghubung Python ke Database PostgreSQL:
$ sudo pip2 install setuptools
$ sudo pip2 install psycopg2-binary
Buat direktori /home/django, untuk menempatkan aplikasi OpenAset:
$ cd /home
$ sudo mkdir django
$ sudo chown muntaza:www-data django
Berpindah ke server cloud, saya membuat sertifikat ssl dari Let’s Encrypt menggunakan server cloud saya (dengan sistem operasi OpenBSD), sertifikat ini untuk domain openaset.muntaza.net sehingga aplikasi OpenAset ini juga disetting dengan perlindungan ssl.
Adapun langkahnya, yaitu dengan menambahkan baris dibawah ini pada file /etc/httpd.conf:
server "openaset.muntaza.net" {
listen on 103.56.207.72 port 80
root "/htdocs/openaset.muntaza.net"
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
location * {
block return 302 "https://$HTTP_HOST$REQUEST_URI"
}
}
Menambahkan juga baris dibawah ini pada file etc/acme-client.conf:
domain openaset.muntaza.net {
domain key "/etc/ssl/private/openaset.muntaza.net.key"
domain certificate "/etc/ssl/openaset.muntaza.net.crt"
domain full chain certificate "/etc/ssl/openaset.muntaza.net.fullchain.pem"
sign with letsencrypt
}
OK, restart httpd service:
muhammad$ doas rcctl restart httpd
httpd(ok)
httpd(ok)
Kemudian, buat sertifikat tersebut:
muhammad$ doas acme-client -vAD openaset.muntaza.net
Nah, sudah di dapat sertifikat nya, tinggal di copy aja sertifikat tadi ke server Linux Mint. Hal penting lain, sertifikat ini memiliki masa aktif 3 (tiga) bulan, sehingga untuk saat ini, saya nonaktifkan domain openaset.muntaza.net dan setting di file /etc/httpd.conf nya, kemudian pastikan restart lagi server httpd nya.
muhammad$ doas rcctl restart httpd
httpd(ok)
httpd(ok)
Setting Apache Web Server:
$ ls -l ssl* sochache*
lrwxrwxrwx 1 root root 36 Sep 21 14:23 sochache_shmcb.load -> ../mods-available/socache_shmcb.load
lrwxrwxrwx 1 root root 26 Sep 21 14:20 ssl.conf -> ../mods-available/ssl.conf
lrwxrwxrwx 1 root root 26 Sep 21 14:20 ssl.load -> ../mods-available/ssl.load
aktifkan modul ssl dan modul shmcb, dengan membuat file soft link di folder mods-enabled ke folder mods-available seperti contoh di atas.
Aktifkan konfigurasi ssl config, dengan membuat file soft link di folder sites-enabled ke folder sites-available seperti contoh di bawah, dan isi sertifikat ssl sesuai dengan file sertifikat yang kita buat dari Let’e Encrypt tadi.
/etc/apache2/sites-enabled$ ls -l
total 0
lrwxrwxrwx 1 root root 35 Sep 20 22:08 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 35 Sep 21 14:21 default-ssl.conf -> ../sites-available/default-ssl.conf
/etc/apache2/sites-enabled$ cat default-ssl.conf | grep openaset
SSLCertificateFile /etc/ssl/openaset.muntaza.net.fullchain.pem
SSLCertificateKeyFile /etc/ssl/private/openaset.muntaza.net.key
Ini isi lengkap file default-ssl.conf
Setting Database PostgreSQL.
Pindah ke user postgres, buat user kabupaten, dan buat Database kabupaten:
$ sudo su - postgres
$ id
uid=122(postgres) gid=130(postgres) groups=130(postgres),110(ssl-cert)
$ createuser -U postgres kabupaten -P
$ createdb -O kabupaten kabupaten
Restore global Database, yang meliputi pembuatan seluruh user, kemudian baru restore database kabupaten:
$ psql -U postgres template1 < global_2019-09-21_13_12.sql
$ psql -U postgres kabupaten < kabupaten_2019-09-21_00_10.sql
Restart Apache Web Server:
$ sudo systemctl restart apache2
Setting PHP
Saat instalasi PHP, modul mod-php sudah otomatis di aktifkan di Linux Mint ini, untuk melihatnya, bisa di cek yaitu:
$ pwd
/etc/apache2/mods-enabled
$ ls| grep php
php7.2.conf
php7.2.load
Saya buat script phpinfo.php yang berguna untuk menvalidasi setting PHP, dan juga memastikan bahwa Modul php-pgsql dan php-pdo-pgsql sudah aktif. Ini isi script nya:
<?php
phpinfo();
?>
Setelah PHP sudah di validasi, tinggal ambil archive laporan dari server, dan untar di folder /var/www/html.
Selesai sudah proses deploy OpenAset di Linux Mint ini. Semoga bermanfaat.