Thursday, July 30, 2020

Deploy Aplikasi Django di AWS EC2 Bagian 2

Pada tulisan ini akan membahas mengenai setting file static sehingga tampilan web kita menampilkan css sesuai dengan yang diharapkan, Misal saat menampilkan halaman admin masih terlihat seperti gambar dibawah.


Langkah yang dilakukan untuk mengatasi hal tersebut adalah sebagai berikut:

  • Masuk ke ec2 kita dangan menggunakan Git Bash
  • Masuk ke folder virtualenv dan jalankan virtualenv

          ubuntu@ip-172-31-5-17:~$ cd django1
    ubuntu@ip-172-31-5-17:~/django1$ source venv/bin/activate
    (venv) ubuntu@ip-172-31-5-17:~/django1$ cd geodjango1-okus/

  • Jika terdapat perubahan di repository kita maka lakukan pull, ganti <remote> dengan alamat repository github kita

         (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ git pull <remote>

  • Reload supervisor

    (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo supervisorctl reload
    Restarted supervisord
    (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo systemctl reload nginx
  • Setting nginx
   (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo nano /etc/nginx/sites-enabled/django.conf

  • Tambahkan kode di file django.conf . Untuk lokasi file static sesuaikan dengan lokasi folder static anda.
 location /static/ {
        autoindex on;
        alias /home/ubuntu/django1/geodjango1-okus/static/;
}

  • Lakukan perintal collectstatic
    (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ ls
README.md  app.sock  db.sqlite3  django1  djangoapp1  manage.py  static
    (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ python manage.py collectstatic

  • Terakhir buka halaman admin kita, yaitu  <DNS Public>/admin silahkan cek apakah css untuk admin tampak sesuai bekerja seperti terlihat pada gambar di bawah

Oke sampai disini kita telah berhasil secara umum untuk deploy aplikasi django di server ec2. Selanjutnya tinggal melakukan penambahan kode program atau pull perubahan dari aplikasi dari repository kita.

Semoga bermnafaat. @wawanhn

Thursday, July 23, 2020

Deploy Aplikasi Django di AWS EC2 Bagian 1


Amazon Elastic Compute Cloud (Amazon EC2) adalah layanan web yang memberikan kapasitas komputasi yang aman dan berukuran fleksibel di cloud. Amazon EC2 dirancang untuk membuat komputasi cloud berskala web lebih mudah bagi pengembang. Antarmuka layanan web sederhana Amazon EC2 memungkinkan Anda mendapatkan dan mengonfigurasi kapasitas dengan friksi minimal. Amazon EC2 memberikan Anda kendali penuh sumber daya komputasi dan memungkinkan Anda bekerja di lingkungan komputasi Amazon yang telah terbukti [1].

Pada tulisan ini saya akan mencoba berbagi untuk melakukan deploy aplikasi django dengan menggunakan EC2 di AWS. Langkah yang dilakukan adalah sebagai berikut:


  • Buka website AWS dan masuk ke halaman untuk membuat instance dengan EC2 dihalaman ini dan lakukan login, sampai tampil halaman seperti di bawah kemudian klik Launch instance.

  • Pilih Amazon Machine Image (AMI). misal dalam contoh ini saya akan menggunakan Ubuntu Server 18.04 LTS (HVM), SSD Volume Type. kemudian klik button select.

  • Pilih Instance Type, saya pilih t2.micro, lalu klik Review and Launch
  • Tampil halaman Review Instance Launc, pada tahap ini kita selesai melakukan setting secara default untuk instance EC2, langkash selanjutnya klik Launch.  
  • Kemudian tampil halaman untuk memilih atau membuat key pair. Pilih Create a new key pair, isi Key pair name, lalu klik Download Key Pair dan simpan di komputer kita dan klik Launch instances.
  • Setelah itu maka akan menampilkan instance yang sudah dibuat barusan. Saat pertama kali dibuat maka instance state pending, tunggu sampai status menjadi active. Pada halaman ini kita bisa melihat type instance, Public DNS, IP Public dsb. Lalu kita bisa merubah nama instance kita dengan cara klik dibawah kolom name sesuaikan dengan nama instance aplikasi kita. Misal key-django-ec2-1.

Konek ke ec2 dengan menggunakan SSH

Selanjutnya kita akan lakukan konek ke ec2 dengan menggunakan SSH. Langkahnya adalah:
  • Pada halaman seperti gambar diatas pili/chek instance kita lalu klik button Connect yang akan menampilkan alamat keneksi melalui SSH dengan menggunakan PuTTy atau menggunakan Git bash.
          Download PuTTy untuk Windows 10 64 bit disini atau versi lain disini.

          Download Git Bash untuk Windows 10 64 disini atau versi lain disini.

  • Misal dalam contoh kali ini saya menggunakan Git Bash, setelah kita install Git, kemudian kita buka Git masuk ke folder tempat dimana file key pair berada. dan ketikan perintah:
          chmod 400 key-django-ec2-1.pem
  • Kemudian konek ke DNS Public kita dengan perintah:
          ssh -i key-django-ec2-1 ubuntu@<DNS Public>.compute.amazonaws.com
  • Jika koneksi berhasil maka kita bisa masuk ke server ec2 kita dan melakukan konfigurasi seperti ditampilkan pada gambar dibawah ini.
  • Selanjtnya kita lakukan update terhdapat ubuntu server kita dengan perintah
          sudo apt-get update
     
  • sudo apt-get upgrade -y
  • Selanjutnya cek apakah sudah ada python, jika belum maka install python3 dengan perintah

    ubuntu@ip-172-31-5-17:~$ python3 --version

    ubuntu@ip-172-31-5-17:~$ python --version

    ubuntu@ip-172-31-5-17:~$ sudo apt-get install python3
  • Install pip
         ubuntu@ip-172-31-5-17:~$ sudo apt-get install python3-pip 
  • Install Virtual environment
         ubuntu@ip-172-31-5-17:~$ sudo apt-get install python3-venv
  • Buat folder django1
          ubuntu@ip-172-31-5-17:~$ mkdir django1
  • Masuk ke folder django1
          ubuntu@ip-172-31-5-17:~$ cd django1
  • Buat virtualenv dengan nama venv misalnya
    ubuntu@ip-172-31-5-17:~$ python3 -m venv venv
  • Jalankan virtualenv
          ubuntu@ip-172-31-5-17:~$ source venv/bin/activate
          (venv) ubuntu@ip-172-31-5-17:~/django1$
  • Install python
          (venv) ubuntu@ip-172-31-5-17:~/django1$ pip3 install django
  • Selajutnya kita siapkan project django yang disimpan di Github, dan kita akan melakukan clone project kita yang ada di Github
          (venv) ubuntu@ip-172-31-5-17:~/django1$ git clone <alamat github>
  • Install psycopg2, untuk koneksi ke database PostgreSQL
            (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo apt-get install libpq-dev python-dev

          (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo apt-get install python3-psycopg2
  • Install Django-leaflet, untuk menampikan WebGIS
       (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ pip3 install django-leaflet
  • Install GDAL dan OGR
Keluar dari virtualenv

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo add-apt-repository ppa:ubuntugis/ppa

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo apt-get update

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo apt-get install gdal-bin

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ ogrinfo --version
GDAL 2.4.2, released 2019/06/28

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo apt-get install libgdal-dev

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ export CPLUS_INCLUDE_PATH=/usr/include/gdal
ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ export C_INCLUDE_PATH=/usr/include/gdal

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ ogrinfo --version
GDAL 2.4.2, released 2019/06/28
ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ pip3 install GDAL==2.4.2

Cek hasil installan library tersebut

ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ python
Python 2.7.17 (default, Jul 20 2020, 15:37:01)
[GCC 7.5.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gdal
>>> exit()

  • Install pillow, untuk pengelola image
    (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ pip3 install pillow

  • Install gunicorn 
          (venv) ubuntu@ip-172-31-5-17:~/django1$ pip3 install gunicorn
  • Install nginx
    (venv) ubuntu@ip-172-31-5-17:~/django1$ sudo apt-get install -y nginx
  • Jalankan nginx
          (venv) ubuntu@ip-172-31-5-17:~/django1$ sudo nginx
  • Dalam gambar di atas terdapat error, untuk memperbaiki hal tersebut maka, kembali lihat halaman instance kita, dan klik kanan di instance tersebut dan pilih Networking - > Change Security Groups
  • Maka tampil halaman yang manampilkan security group instance kita seperti terlihat dalam gambar dibawah dan perhatikan nama security group tersebut
  • Selanjutnya kembali ke halaman instance sebelumnya, pilih menu Security Group. Pilih atau check security group lalu pilih button Actions dan pilih Edit inbound rules

  • Selanjutnya tambahkan rules dengan memilih Add rule, pilih Type dengan HTTP lalu pilih Source dan pilih Anywhere, lalu klik Save rules. Dan yang jangan lupa tambahkan satu lagi Type isi dengan Custom HTTP, masukan port 8000 (bisa dirubah sesuai dengan nomor port yang kan digunakan oleh django).
  • Selanjutnya kembali ke halaman instance, dan copy alamat Public DNS (IPv4), lalu buka di browser sehingga menampilkan halaman seperti gambar di bawah
Setting gunicorn

Masuk ke folder dimana terdapat file wsyg.py


(venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ ls

db.sqlite3  django1  djangoapp1  manage.py


(venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ gunicorn --bind 0.0.0.0:8000 django1.wsgi:application
[2020-07-22 18:22:30 +0000] [27551] [INFO] Starting gunicorn 20.0.4
[2020-07-22 18:22:30 +0000] [27551] [INFO] Listening at: http://0.0.0.0:8000 (27551)
[2020-07-22 18:22:30 +0000] [27551] [INFO] Using worker: sync
[2020-07-22 18:22:30 +0000] [27554] [INFO] Booting worker with pid: 27554

  • Silahkan cek ke alamat PUBLIC DNS kita dan lihat hasilnya, dan jika berhasil maka akan menampilkan halaman django seperti di bawah ini

Selamat kita telah bisa menjalankan django dengan menggunakan AWS ec2. Kalau masih belum tampil seperti di atas coba cek mungkin ada langkah atau konfigurasi yang keliru.

Install supervisor
  • Install supervisor
          (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ sudo apt-get install -y supervisor


  • Buat file konfigurasi
     
    (venv) ubuntu@ip-172-31-5-17:~/django1/geodjango1-okus$ cd /etc/supervisor/conf.d/
(venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ ls

    (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ sudo touch gunicorn.conf

    (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ ls
gunicorn.conf

    (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ mkdir /var/log/gunicorn

          (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ sudo nano gunicorn.conf

  • Cek lokasi gunicorn, untuk menentukan lokasi command pada file gunicorn.conf
(venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ whereis gunicorn
gunicorn: /home/ubuntu/django1/venv/bin/gunicorn
  • Masukan kedalam file gunicorn.conf
[program:gunicorn]
directory=/home/ubuntu/django1/geodjango1-okus
command=/home/ubuntu/django1/venv/bin/gunicorn --workers 3 --bind unix:/home/ubuntu/django1/geodjango1-okus/app.sock django1.wsgi:application
autostart=true
autorestart=true
stderr_logfile=/var/log/gunicorn/gunicorn.err.log
stdout_logfile=/var/log/gunicorn/gunicorn.out.log

[group:guni]
programs:gunicorn

  • Set supervisor
          (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ sudo supervisorctl reread

    guni: available

    (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ sudo supervisorctl update
    guni: added process group
    
    (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ sudo supervisorctl status
    guni:gunicorn        RUNNING   pid 29381, uptime 0:00:29

    (venv) ubuntu@ip-172-31-5-17:/etc/supervisor/conf.d$ cd

    (venv) ubuntu@ip-172-31-5-17:~$ cd /etc/nginx/sites-available/
          
    ((venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ ls
    default

    ((venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ cat default

    (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo touch django.conf

    (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo nano django.conf

  • Masukan kode program ke file django.conf

server {
listen 80;
<ALAMAT PUBLIC DNS>;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/django1/geodjango1-okus/app.sock;
}
}

  • Test nginx, setelah dilakukan konfigurasi tadi
    (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful


    (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo ln django.conf /etc/nginx/sites-enabled/

(venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo nginx -t
nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 64

  • Pada saat saya coba sudo nginx -t, terdapat error nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 64, hal ini karena nama dns public kita terlalu panjang mak harus dirubah menjadi server_names_hash_bucket_size: 64.Makan perbaikan yang saya lakukan adalah rubah file nginx.conf. langkahnya adalah
         (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ cd ..

         (venv) ubuntu@ip-172-31-5-17:/etc/nginx$ ls
conf.d        fastcgi_params  koi-win     modules-available  nginx.conf    scgi_params      sites-enabled  uwsgi_params
fastcgi.conf  koi-utf         mime.types  modules-enabled    proxy_params  sites-available  snippets       win-utf

         (venv) ubuntu@ip-172-31-5-17:/etc/nginx$ sudo nano nginx.conf

  • Kemudian pada bahian http, hapus komentar untuk perintah server_names_hash_bucket_size 64 menjadi 128;

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        server_names_hash_bucket_size 128;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##

  • Cek kembali nginx
         (venv) ubuntu@ip-172-31-5-17:/etc/nginx$ cd sites-available/

        (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

  • Restart service nginx, samapi tidak ada error
         (venv) ubuntu@ip-172-31-5-17:/etc/nginx/sites-available$ sudo service nginx restart

  • Terakhir cek halam web kita dengan alamat PUBLLIC DNS tanpa nomor Port, jika berhasil maka tampil halaman web django kita

Selamat kita sudah setting django dan server nginx dan gunicorn, sehingga aplikasi web django kita sudah erbhasil di deploy di server AWS ec2. Jika saat mencoba masih ada yang error silahkan di perhatikan lebih detail langkah-langkah diatas.

Jika ingin mendownload tulisan ini silahkan download disini.

Sekian dulu nanti dilanjut untuk tulisan Deploy Aplikasi Django di AWS EC2 Bagian 2. Terimakasih sudah menyimak semoga bermanfaat. @wawanhn

Referensi:
https://aws.amazon.com/id/ec2/
https://mothergeo-py.readthedocs.io/en/latest/development/how-to/gdal-ubuntu-pkg.html
https://www.youtube.com/watch?v=GQkP48X3nUM
https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783555079/1/ch01lvl1sec15/installing-gdal-and-ogr
https://django.readthedocs.io/en/1.4.X/ref/contrib/gis/install.html
https://medium.com/saarthi-ai/ec2apachedjango-838e3f6014ab
https://dev.to/hasanul_islam/geodjango-installation-postgis-and-gdal-36h1
https://stackoverflow.com/questions/14604653/how-to-stop-gunicorn-properly
https://stackoverflow.com/questions/13895933/nginx-emerg-could-not-build-the-server-names-hash-you-should-increase-server

Wednesday, July 22, 2020

Deploy Aplikasi django di AWS Lightsail Bagian 2

Deploy Aplikasi django di AWS Lightsail Bagian 2


Pada tulisan selanjutnya saya sudah membahas bagaimana deploy aplikasi Django di AWS Lightsail sampai kita berhasil menajalankan aplikasi Django di virtual server. Kali ini saya akan coba bahas bagaimana cara mengaksses virtual server AWS Lightsail menggunakan SSH dan Filezilla.

Dalam tulisan ini aplikasi yang dibutuhkan adalah aplikasi FTP untuk download dan upload file dari dan ke virtual server AWS Lightsail. Untuk download aplikasi Filezilla dapat di dapatkan

Versi Windows 64 bit disini 
atau untuk semua Versi OS disini

Langkah yang dilakukan:


  • Download dan install Filezilla, 
  • Kemudian buka website aws lightsail. dan pada bagian atas menu Account 
  • Kemudian tampil halaman seperti di bawah, klik tab SSH Keys, kemudian klik Download, untuk menyimpan file ssh dengan ekstensi .pem 


  • Buka aplikasi filezilla, dan buat koneksi baru dengan cara klik File - > Site Manager.
  • Klik New site, dan pada bagian kanan isikan pada Tab General:
          Protocol            : SFTP - SSH File Transfer Protocol
          Host                  : <alamat IP server lightsail> 
          Logon Type      : Key file
          User                  : <userkita>
          Key file            : <file ssh.pem>


          Setelah semua diisi dengan benar, kemudian klik Connect, lalu OK

       
  • Jika berhasil konek ke virtual server, maka akan menampilkan folder dan data yang terdapat di server.

  • Dalam gambar di atas susunan folder untuk aplikasi django kita adalah sebagai berikut:
          aplikasi django akan disimpan di folder Project (yang dalam gambar ada background biru).               
          Jika anda punya aplikasi django yang dibuat di komputer/lokal maka bisa diupload ke sini.
Dalam langkah selanjutnya bagaimana merubah file settings.py dan mengupload aplikasi django dari komputer lokal
  • Masuk ke folder Project di virtual server dan download file settings.py ke komputer kita. Caranya klik file settings.py dan drag ke bagian kiri komputer lokal kita.
  • Lakukan penyesuaikan/edit file settings.py untuk menambahkan app, setting database, dan static file dll. Misal yang saya lakukan menambahkan kode sintax seperti dibawah ini (ini merupakan cuplikan sebagian kode saja)
import os
import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

...

  • Masukan nama aplikasi kita pada bagian INSTALLED_APPS
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    '<nama app kita>',
]
  • Setting Database, jika misalkan kita menggunakan database di tempat lain
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '<nama database>',
        'HOST': '<host>',
        'PORT': '<port>',
        'USER': '<user>',
        'PASSWORD': '<password>'
    }
}
  • Setting file static
STATIC_URL = '/Project/static/'

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')


  • Set templates
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'Project/templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  • Kemudian upload kembali file settings yang sudah diubah tersebut ke virtual server pilih overwrite (timpa).
  • Langkah selanjutnya adalah copy folder aplikasi dari django kita dan folder lain yang dibutuhkan misal static, template atau folder lain yang terdapat dalam aplikasi yang kita buat di komputer lokal kita.
Lakukan migrasi ke database
  • Buka command promt dengan connect SSH, dan lakukan update sistem dll
  • Misal kita upgrade pip, sudo pip3 install --upgrade pip
  • Setelah semua library terinstal, lakukan migrasi (sintak yang kita tulis yang di border kuning)
bitnami@ip-172-26-15-70:~$ ls
apps  bitnami_application_password  bitnami_credentials  htdocs  stack
bitnami@ip-172-26-15-70:~$ cd apps
bitnami@ip-172-26-15-70:~/apps$ ls
django
bitnami@ip-172-26-15-70:~/apps$ cd django
bitnami@ip-172-26-15-70:~/apps/django$ ls
bin  bnconfig  conf  django_projects  lib  licenses
bitnami@ip-172-26-15-70:~/apps/django$ cd django_projects
bitnami@ip-172-26-15-70:~/apps/django/django_projects$ ls
Project
bitnami@ip-172-26-15-70:~/apps/django/django_projects$ cd Project
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project$ ls
conf  db.sqlite3  gisapp  manage.py  media  Project  static
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project$ python3 manage.py makemigrations

/opt/bitnami/python/lib/python3.7/site-packages/pkg_resources/__init__.py:1243: UserWarnin
g: /opt/bitnami/.tmp is writable by group/others and vulnerable to attack when used with g
et_resource_filename. Consider a more secure location (set with .set_extraction_path or th
e PYTHON_EGG_CACHE environment variable).
  warnings.warn(msg, UserWarning)
Migrations for 'gisapp':
  gisapp/migrations/0006_auto_20200721_1043.py
    - Change managers on sarpras
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project$ python3 manage.py migrate


  • Buat super user
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project$ python3 manage.py createsuperuser
/opt/bitnami/python/lib/python3.7/site-packages/pkg_resources/__init__.py:1243: UserWarnin
g: /opt/bitnami/.tmp is writable by group/others and vulnerable to attack when used with g
et_resource_filename. Consider a more secure location (set with .set_extraction_path or th
e PYTHON_EGG_CACHE environment variable).
  warnings.warn(msg, UserWarning)
Username (leave blank to use 'bitnami'): user1  
Email address: user1@mail.com
Password: 
Password (again): 
Superuser created successfully.
  • Cek tampilan web kita, coba cek halaman admin dengan alamat: NO_IP/Project/admin/  sehingga tampil seperti halaman di bawah dimana stylenya masih belum betul.

  • lakukan perintah collectstatic
python3 manage.py collectstatic

You have requested to collect static files at the destination
location as specified in your settings:

    /opt/bitnami/apps/django/django_projects/Project/static

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
  • Lalu set file configuration
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project$ ls
conf  db.sqlite3  gisapp  manage.py  media  Project  static
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project$ cd conf/
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project/conf$ ls
httpd-app.conf  httpd-prefix.conf  httpd-vhosts.conf
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project/conf$ pwd
/home/bitnami/apps/django/django_projects/Project/conf
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project/conf$ ls
httpd-app.conf  httpd-prefix.conf  httpd-vhosts.conf
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project/conf$ sudo nano httpd-app.conf
  • Kemudian masukan kode ini di paling bawah
Alias /static/ 'opt/bitnami/apps/django/django_projects/static/'
<Directory opt/bitnami/apps/django/django_projects/static>
Require all granted
</Directory>

Alias /media/ 'opt/bitnami/apps/django/django_projects/media/'
<Directory opt/bitnami/apps/django/django_projects/media>
Require all granted
</Directory>
  • Kemudian restart bitnami server
bitnami@ip-172-26-15-70:~/apps/django/django_projects/Project/conf$ sudo /opt/bitnami/ctlscript.sh restart
  • Cek kembali tampilan admin, dan lihat tampilan admin menampilkan style dengan baik.
Demikian tulisan tentang deploying django di AWS Lightsail, silahkan tambahkan dan rubah aplikasi django kita sesuai dengan keinginan.

Terima kasih semoga bermanfaat. @wawanhn

Referensi:




Tuesday, July 21, 2020

Deploy Aplikasi django di AWS Lightsail Bagian 1

Deploy Aplikasi django di AWS Lightsail Bagian 1

Amazon Web Services adalah sekumpulan layanan-layanan berbasis Cloud Computing yang di sediakan oleh Amazon sejak tahun 2002. Meskipun salah satu perusahaan raksasa internet ini sering kita kenal untuk membeli buku dan lagu, tetapi sekarang Amazon telah menambah layanannya dalam hal infrastrutktur cloud computing. Amazon Web Services ini menyediakan layanan-layanan nya yang saling terintegrasi dan mudah kustomisasi. Pada tahun 2006, amazon mengenalkan Amazon’s Elastic Compute cloud (EC2) sebagai commercial web service yang menyediakan akses cloud kepada perusahaan dan individu untuk menyewa komputer storage yang bisa digunakan sebagai platform pengembangan aplikasi secara online, inilah awal dari IaaS, yaitu perusahaan yang menyediakan infrastruktur sebagai sebuah layanan [1].

Salah satu aplikasi dalam AWS adalah Lightsail, yang merupakan platform cloud yang mudah digunakan yang menawarkan Anda semua yang diperlukan untuk merancang aplikasi atau situs web, ditambah dengan paket bulanan yang hemat biaya. Lightsail menawarkan server virtual (instans) yang mudah untuk diatur dan dicadangkan oleh kekuatan dan keandalan AWS. Anda dapat meluncurkan situs web, aplikasi web, atau proyek Anda dalam hitungan menit, dan mengelola instans dari konsol Lightsail atau API yang intuitif. Saat Anda membuat instans, Lightsail memungkinkan Anda mengeklik untuk meluncurkan sistem operasi (OS) sederhana, aplikasi yang dikonfigurasi sebelumnya atau tumpukan pengembangan, seperti WordPress, Windows, Plesk, LAMP, Nginx, dan banyak lagi. Setiap instans Lightsail hadir dengan firewall bawaan yang memungkinkan Anda mengizinkan atau membatasi lalu lintasi di instans Anda berdasarkan IP, port, dan protokol sumber. Setelah instans Anda berjalan, Anda dapat membuat peringatan khusus dan diberi tahu melalui email atau pesan teks ketika terjadi sesuatu yang tidak biasa. [2].

Saat ini kita akan coba untuk deploy aplikasi django dengan menggunakan AWS lightsail, langkah yang dilakukan adalah sebagai berikut:


  • Masuk ke aws dan masuk ke lightsail disini. Kemudian klik Create instance

  • Kemudian, tentukan lokasi server, sistem operasi, aplikasi dalam hal ini django, pilih instance plane, isi nama instance dan terakhir klik Create instance.

  • Setelah berhasil buat instance maka akan ditampilkan instance yang telah dibuat, selanjutnya kita klik nama instance tersebut. Sebagai contoh saya klik di nama instance Geodjango-1.

  • Setelah kita klik nama instance, maka akan menampilkan halaman yang menampilkan alamat IP public dan username untuk kita konek melalui SSH. Selanjutnya kita bisa koneksi ke virtual server melalui SSH dengan cara klik button Connect using SSH.

  • Maka akan menampilkan command line dari virtual server kita dan selanjutnya kita bisa setting server. 

  • Selanjutnya untuk mengetes hasil instalasi atau tampilan aplikasi django, maka buka alamat IP Public untuk lightsail kita yang terlihat pada gambar diatas dan akan menampilkan seperti pada gambar di bawah ini.

  • Jika kita klik Access my application maka kita bisa melihat tampilan dari halaman pertama django.

  • Selamat kita sudah deploy aplikasi django di AWS lightsail bagian 1. Jika Anda ingin mendownload pdf tulisan ini silahkan download disini. Selanjutnya akan dilanjutkan dalam tulisan Deploy Aplikasi django di AWS Lightsail Bagian 2. Terima kasih sudah menyimak semoga bermanfaat. @wawanhn



Referensi:

[1] https://id.wikipedia.org/wiki/Amazon_Web_Services
[2] https://aws.amazon.com/id/lightsail/features/

Membuat Database PostgreSQL Gratis di AWS

Membuat Database PostgreSQL Gratis di AWS
Amazon Web Services adalah sekumpulan layanan-layanan berbasis Cloud Computing yang di sediakan oleh Amazon sejak tahun 2002. Meskipun salah satu perusahaan raksasa internet ini sering kita kenal untuk membeli buku dan lagu, tetapi sekarang Amazon telah menambah layanannya dalam hal infrastrutktur cloud computing. Amazon Web Services ini menyediakan layanan-layanan nya yang saling terintegrasi dan mudah kustomisasi. Pada tahun 2006, amazon mengenalkan Amazon’s Elastic Compute cloud (EC2) sebagai commercial web service yang menyediakan akses cloud kepada perusahaan dan individu untuk menyewa komputer storage yang bisa digunakan sebagai platform pengembangan aplikasi secara online, inilah awal dari IaaS, yaitu perusahaan yang menyediakan infrastruktur sebagai sebuah layanan [1].

Kita dapat mendapatkan layanan gratis (free trial) dengan mendaftar AWS dialamat ini. Saat mendaftar AWS pertama kali selanjutnya untuk mengaktifkan layanan yang bisa kita gunakan dengan gratis, maka pada saat pendaftaran kita akan diverifikasi untuk tagihan atau biling dengan menggunakan kartu kredit dengan sebesar $1.

Oke saat ini, setelah kita punya akun AWS kita akan coba buat database PostgreSQL yang nantinya akan diakses dari client dengan menggunakan PgAdmin. Lankah yang dilakuka adalah:


  • Login ke website AWS
  • Selanjutnya pada halaman utama kita masuk ke RDS.

  • Kemudian setelah tampil halaman RDS, buat database dengan memilih button Create database

  • Kemudian pilih metode pembuatan, misal metode Standard Create, pilih database engine PostgreSQL, versi database dan pilih DB Instance seize Free tier (karena kita pilih yang gratis).
  • Kemudian lakukan setting DB instance identifier untuk menentukan nama database.
  • Pada bagian Credentials settings, tentukan nama user dan password untuk mengakses database.
  • Selanjutnya pada bagian Additional Connectivity Configuration, pilih yes pada bagian setting publicly accessible sehingga bisa diakses dari client.
  • Setelah selesai semua setting lalu pilih Create database, tunggu proses pembuatan database yang bisa berlangsung beberapa waktu. Dan jika berhasil maka database kita bisa dilihat di halaman database seperti ini.

  • Selanjutnya klik button View credential details untuk melihat infomasi database kita. Terdapat informasi: nama database, user, dan endpoint (host dari database kita), dan satu lagi data yang dibutuhkan yaitu port (dimana defaultnya 5432).

  • Selanjutnya dalam tutorial selanjutnya kiata akan menggunakan SQL Workbench dan pgAdmin untuk mengakses database tersebut. Jika belum punya pgAdmin maka download dari sini  sesuai dengan jenis sistem operasi dan install di komputer kita.

sekian dulu tulisan ini semoga bermanfaat. @wawanhn


Referensi:
[1] https://id.wikipedia.org/wiki/Amazon_Web_Services