Deployment
Adalah tahapan persiapan server produksi, semua service development akan diganti dengan service produksi yang stabil
MapProxy
Kita akan membuat script deployment dari MapProxy dengan cara:
# mapproxy-util create -t wsgi-app -f agm.yaml config.py
Didalam file config.py berisi
from mapproxy.wsgiapp import make_wsgi_app
application = make_wsgi_app(r'/var/mymapproxy/agm.yaml')
#application = make_wsgi_app(r'/var/mymapproxy/agm.yaml', reloader=True)
script yang bawah adalah script yang saya tambahkan jika anda ingin reload otomatis MapProxy apabila ada perubahan di file config agm.yaml
gunicorn
gnunicorn merupakan python web server yang berbasiskan Asyncrhonous. Kita akan menggunakan gunicorn untuk menjalankan script server config.py pastikan gunicorn sudah diinstall terlebih dahulu, yang kemudian dialnjutkan dengan instalasi eventlet:
# pip install gunicorn
# pip install eventlet
Jika gunicorn dan eventlet sudah terinstall maka jalankan script server config.py
# gunicorn -k eventlet -w 3 -b :8080 config:application
Jika berjalan sempurna dan bisa diakses maka kita akan membuat service gunicorn di sistem operasi pada centos 6 kita
spawning
Jika gunicorn mengalami masalah load peta anda bisa mencari solusi lainnya dengan menggunakan spawning. Spawning merupakan aplikasi wsgi. install spawning menggunakan pip
# pip install spawning
jalankan spawning
# spawning config.application --threads=8 --processes=4 --port=8080
uwsgi
jika anda memiliki ram kecil dan pengunjung mapproxy yang sedikit, anda bisa menggunakan uwsgi. terlebih dahulu lakukan instalasi dengan pip dan jalankan.
# pip install uwsgi
# uwsgi --http :8080 --wsgi-file config.py
Untuk melengkapi parameter lainnya kita buatkan terlebih dahulu file mapproxy.ini yang berisi parameter uwsgi
[uwsgi]
http = 0.0.0.0:8080
chdir = /var/mymapproxy/
module = config:application
#threads = 2
master = true
processes = 5
uid = awangga
vacuum = true
die-on-term = true
Sehingga kita bisa menjalankannya dengan perintah
# uwsgi mapproxy.ini
untuk menjalankan dibelakang layang tambahkan tanda ampersand (&) dibelakang perintah kemudian pasang nohup agar aplikasi tetap terus berjalan
# nohup uwsgi mapproxy.ini &
supervisor
Supervisor berfungsi untuk mengawasi proses suapaya tetap jalan, jika sebuah aplikasi mati maka supervisor akan menjalankannya kembali. Pertama kita install supervisor.
# easy_install supervisor
sekarang kita akan menambahkan uwsgi yang kita pakai untuk menjalankan layanan mapproxi ke dalam pengawasar supervisor.
buat file di /etc/init/mapproxy.conf
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid awangga
setgid awangga
chdir /var/mymapproxy
exec gunicorn -k eventlet -w 8 -b :8080 application \
>>/var/log/mapproxy/gunicorn.log 2>&1
Nginx Proxy
Cek terlebih dahulu selinux agar nginx bisa membaca socket
# tail /var/log/audit/audit.log
# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive
# systemctl restart nginx
Setelah itu buka selinux agar mengijinkan nginx membaca soket secara permanen
# yum install policycoreutils-python
# grep nginx /var/log/audit/audit.log | audit2allow
# grep nginx /var/log/audit/audit.log | audit2allow -m nginx
# grep nginx /var/log/audit/audit.log | audit2allow -M nginx
# semodule -i nginx.pp