Digital Ocean
Bagi yang bekerja dalam dunia cloud pasti sudah sering mendengan Digital Ocean sebagai perusahaan yang menyediakan layanan berbasis cloud salah satunya untuk infrastruktur website. Digital Ocean merupakan server cloud yang menggunakan SSD sebagai penyimpanan sehingga mempercepat akses data. Dengan menggunakan cloud juga kita bisa dengan mudah melakukan upgrade untuk menaikan spek layanan ataupun downgrade untuk menurunkan layanan dengan cepat dan mudah.
Digital Ocean menyediakan layanan VPS dengan paket yang murah dan user friendly. Perusahaan ini menurut sya dalam layanan cloud VPS hampir sebanding dengan layanan Amazon Web Service. Beberapa alasan untuk memilih menggunakan VPS dari Digital Ocean adalah sebagai berikut:
- Control Panel yang sederhana,
- Komunitas developer yang banyak tersedia,
- Harga cukup terjangkau dari mulai $5 untuk hosting VPS
- Kemudahan dalam instalasi
Step 1 — Membuat Droplet
Step 2 — Koneksi ke VPS menggunakan MobaXterm
Step 3 — Konfigurasi Server
Step 4 — Creating the PostgreSQL Database and User
Dalam langkah ini akan membuat sebuah database dan user database untuk aplikasi Django dengan menggunakan aplikasi RDBMS PostgrSQL dan ekstensi Postgres untuk mengolah data spasial.
Secara standarnya user Postgres digunakan sebagai sebuah skema autentifikasi yang dinamakan peer authentication untuk dalam koneksi lokal. Artinya jika user pengguna sistem operasi sesuai dengan username Postgres maka user dapat login tanpa autentifikasi lebih lanjut.
Selama proses instalasi Postgres, sebuah username dengan nama postgres dibuat sebagai user postgres PostgreSQL. User ini akan dapat digunakan untuk melakukan operasi administrasi database. Untuk bisa login ke sesi interkatif Postgres digunakan sudo dan memasukan username dengan menuliskan perintah opsi -u:
root@ubuntu-s-1vcpu-1gb-intel-nyc1-01:~# sudo -u postgres psql
Perintah diatas akan menampilkan prompt PostgreSQL untuk setup kebutuhan dalam mebuat projek database. Pertama buat database baru dengan nama myproject.
postgres=# CREATE DATABASE myproject;
Selanjutnya, buat user untuk database tersebut dan tentukan password yang aman:
postgres=# CREATE USER myprojectuser WITH PASSWORD 'password';
Kemudian, lakukan sedikit modifikasi paramter koneksi untuk user yang sudah dibuat. Hal ini akan mempercepat operasi database sehingga nilai yang tepat tidak akan ditanyakan dan disetel setiap koneksi tersambung.
Set nilai encoding ke UTF-8, yang diharapkan aplikasi Django.
postgres=# ALTER ROLE myprojectuser SET client_encoding TO 'utf8';
Kemudian set skema standar isolasi transaksi menjadi read committed
untuk membaca commit dan mencegah pembacaan dari transaksi uncommitted:
postgres=# ALTER ROLE myprojectuser SET default_transaction_isolation TO 'read committed';
UTC
, set zona waktu yang relevan:Langkah-langkah diatas merupakan hal yang direkomendasikan dalam sebuah aplikasi Django. Sekarang berikan akes user yang dibuat ke datase yang ditentukan:
postgres=# GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
Jika langkah-langkah tersebut sudah selesai, untuk keluar dari prompt PostgreSQL gunakan perintah berikut:
postgres-# \q
Step 5 — Membuat User di VPS
Step 6 — Membuat Virtual Environment untuk Project Python
Setelah selesai membuat database, selanjutnya siap untuk mempersiapkan proyek aplikasi Django. Untuk membuat aplikasi Django sebaiknya menggunakan sebuah virtual environment untuk efiensi managemen paket library yang digunakan. Menginstal Django dalam sebuah virtual environment memungkinkan sebuah proyek aplikasi Django terpisah dari aplikasi lain yang secara khusus menggunakan library-library versi terntentu. Dengan virtual environment dalam sebuah sistem operasi memungkinkan membuat beragam aplikasi Django dalam berbagai versi yang membutuhkan tipe atau versi library yang berbeda-beda sesuai kebutuhan dari aplikasi Django.
Untuk melakukan ini, dibutuhkan untuk library virtualenv
menggunakan pip
:
Upgrade pip:
root@ubuntu-s-1vcpu-1gb-intel-nyc1-01:~# sudo -H pip3 install --upgrade pip
Instal paket virtulaenv:
(myprojectenv)user@host:~/myprojectdir$
.Dengan aktifnya virtual environment selanjutnya install Django, Gunicorn, and the psycopg2 PostgreSQL adaptor:
(myprojectenv) root@ubuntu-s-1vcpu-1gb-intel-nyc1-01:/home/user1/myprojectdir# pip3 install django(myprojectenv) root@ubuntu-s-1vcpu-1gb-intel-nyc1-01:/home/user1/myprojectdir# pip3 install psycopg2-binary
(myprojectenv) root@ubuntu-s-1vcpu-1gb-intel-nyc1-01:/home/user1/myprojectdir# python3 -m django startproject myproject ../myprojectdir
# ALLOWED_HOSTS = ['.example.com', '203.0.113.5']
ALLOWED_HOSTS = ['159.223.181.170','localhost']
. . .
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myproject',
'USER': 'myprojectuser',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '5432',
}
}
. . .
. . .
STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Step 7 — Menyelesaikan Setup Initial Project
8000
:Step 8 — Testing Gunicorn’s agar Aplikasi Django sebagai Server
Step 9 — Membuat File systemd Socket and Service untuk Gunicorn
- $ sudo nano /etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=user1
Group=www-data
WorkingDirectory=/home/user1/myprojectdir
ExecStart=/home/user1/myprojectdir/myprojectenv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/gunicorn.sock \
myproject.wsgi:application
[Install]
WantedBy=multi-user.target
Jalankan socket Gunicorn socket yang akan menghasilkan file socket di /run/gunicorn.sock
:
- $ sudo systemctl start gunicorn.socket
Lalu enable gunicorn socket, systemd secara otomatis akan menjalankan gunicorn.service
:
- $ sudo systemctl enable gunicorn.socket
Step 10 — Checking for the Gunicorn Socket File
- https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04