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/

Wednesday, June 10, 2020

Membuat Aplikasi WebGIS dengan Menggunakan Geodjango di Linux

Membuat Aplikasi WebGIS dengan Menggunakan Geodjango di Linux

Selamat datang kembali di blog wawanhn.com, saat ini saya akan berbagi bagaimana langkah-langkah untuk untuk membuat aplikasi WebGIS menggunakan geodjango dan PostgreSQL. Mungkin bagi beberapa orang aplikasi WebGIS dengan teknologi django dan PostgreSQL yang berbasis bahasa pemrograman python merupakan salah satu aplikasi yang sangat menarik. Dalam tulisan ini saya buat sebagian-sebagian dalam sela kesibukan sehari-hari, jadi mohon maaf jika belum langsung sampai selesai.. Silahkan menyimak..
  • Install pip3
          wawanhn@Linux1:~$ sudo apt-get install python3-pip
  • Install virtualenv Python 3
          wawanhn@Linux1:~$ pip3 install virtualenv
  • Membuat folder kerja misal dengan nama pypython
          wawanhn@Linux1:~$ mkdir pypython
  • Masuk ke direktori pypython
          wawanhn@Linux1:~$ cd pypython
  • Membuat virtualenv
          wawanhn@Linux1:~/pypython$ virtualenv -p python3 venv
  • Masuk ke virtualenv venv
          wawanhn@Linux1:~/pypython$ . venv/bin/activate
  • Setelah masuk ke virtualnev, maka cek versi python. Dalam hal ini versi Python saya Python 3.6.9
         (venv) wawanhn@Linux1:~/pypython$ python --version
         Python 3.6.9
  • Untuk keluar dari virtualenv ketikan perintah deactivate
         (venv) wawanhn@Linux1:~/pypython$ deactivate
  • Jika OK semua, kembali kita masuk ke virtualenv venv dengan perintah seperti sebelumnya . venv/bib/activate
          wawanhn@Linux1:~/pypython$ . venv/bin/activate
  • Maka kita terdapat dalam virtualenv venv dan siap membuat aplikasi django
          (venv) wawanhn@Linux1:~/pypython$
  • Untuk membuat aplikasi django pertama-tama install django
          (venv) wawanhn@Linux1:~/pypython$ pip install django==3.0
  • Buat folder untuk aplikasi django kita, misal geoapp1
          (venv) wawanhn@Linux1:~/pypython$ mkdir geoapp1
  • Masuk ke folder tesebut 
         (venv) wawanhn@Linux1:~/pypython$ cd geoapp1/
         (venv) wawanhn@Linux1:~/pypython/geoapp1$ 
  • Buat proejct django, misal (venv) wawanhn@Linux1:~/pypython/geoapp1$ django-admin startproject geodjango1sdjk
          (venv) wawanhn@Linux1:~/pypython/geoapp1$ django-admin startproject geodjango1
          
  • Masuk ke folder aplikasi geodjango1
          (venv) wawanhn@Linux1:~/pypython/geoapp1$ cd geodjango1
  • Cek hasil perintah membuat aplikasi django, dimana terdapat folder root direktori geodjango1 dan file manage.py
         (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ ls
         geodjango1  manage.py

  • Masuk ke folder geodjango1
          (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ cd geodjango1
          geodjango1  manage.py

  • Kemudian cek hasil install django dengan mengetikan perintah 
          (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ python manage.py runserver
  • Kemudian buka alamat 127.0.0.1/8000/
  • Hasilnya dapat dilihat seperti ini, kita berhasil menginstal dan menjalankan django di server.

Install PostgreSQL

  • Jika dalam komputer kita belum ada postgresql maka install postgresql terelbih dahulu lihat ini.
  • Atau singkatnya seperti ini
  • Install postgresql
          wawanhn@Linux1:~$ sudo apt-get install postgresql
  • Buat user untuk postgres
          wawanhn@Linux1:~$ sudo -u postgres psql postgres
          psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1))
          Type "help" for help.

          postgres=# \password postgres
          Enter new password: 
          Enter it again: 
          postgres=# \q

          wawanhn@Linux1:~$ sudo apt update
          wawanhn@Linux1:~$ sudo apt install pgadmin4 pgadmin4-apache2

          selama install akan ditanyakan user dan password untuk masuk ke PgAdmin



  • Kemudian ketikan perintah 
          wawanhn@Linux1:~$ sudo ufw allow http
          [sudo] password for wawanhn: 
          Rules updated
          Rules updated (v6)
          wawanhn@Linux1:~$ sudo ufw allow https
          Rules updated
          Rules updated (v6)

  • Setelah itu buka browser dan ketikan http://localhost/pgadmin4. Masukan user dan password yang dimasukan pada saat install pgadmin

  • Jika tampil halaman ini maka kita berhasil mejalankan apache untuk menampilkan PgAdmin

  • Kemudian ketikan kembali localhost/pgadmin4 di browser sehingga tampil halaman PgAdmin untuk koneksi ke database PostgreSQL. dan buat koneksi ke server dengan cara klik kanan pada bagian Browser di Servers -> Create -> Server. Isikan data user database (yang sudah kita buat) dan database yang kita buat (yang sudah dibuat postgres)
          isi bagian General

         dan pada bagian connection



  • Jika benar maka akan tampil seperti gambar

  • Kemudian buat database dengan nama db_map1, dengan cara klik kanan di Databases - > Create -> Database .. 


Install Plugin atau Ekstensi Postgis
PostGIS digunakan untuk mengelola data spasial di database PostgreSQL. Cara nya ketikan perintah untuk install PostGIS diluar virtualenv. sudo apt-get install postgis



Install Library Psycopg2
  • Dengan menggunakan terminal ketikan perintah (saya install di luar virtualenv supaya bisa dijalankan di virtualenv lain yang dibuat).
          wawanhn@Linux1:~/$ pip install psycopg2-binary

  • Atau jika nanti saat menjalanakan django erdapat error modul psycopg2, maka silahkan install psycopg2 dalam virtualenv dengan perintah tersebut







Membuat Aplikasi di Django
  • Buat aplikasi dengan mengetikan perintah di terminal (dalam folder root)

          (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ python manage.py startapp maps1
     (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ ls
     db.sqlite3  geodjango1  manage.py  maps1
     
Membuat koneksi ke database
selanjutnya kita daftarkan aplikais maps1 dan seting koneksi ke database dengan cara menambahkan kode program di file settings.py yang berada pada project folder geodjango1

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'maps1',
]

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'db_map1',
'USER': 'postgres',
'PASSWORD': '<password>',
'HOST': 'localhost',
'PORT': '5432',

}
}


  • Kemudian jalankan server lagi dengan mengetikan perintah


          (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ python manage.py runserver


  • maka tampil halaman django seperti sebelumnya tanpa perubahan, karena memang kita belum merubah tampilan halaman depan.
  • Dalam gambar diatas ada informasi teks warna merah yang menunjukan bahwa kit belum memuat tabel2 kedalam database. Maka selanjutnya kita akan melakukan migrasi dengan menambahkan tabel2 yang dibutuhkan untuk aplikasi kita misal tabel user, admin, session dsb.
  • Untuk melakukan migrasi ketika perintah: migarte dan makemigrations
   (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ python manage.py migrate
       (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ python manage.py makemigrations


    •  Selanjutnya jalankan lagi server dan cek browser, dan buka juga alamat 127.0.0.1:8000/admin maka akan menampilkan halaman admin.

    • Selanjutnya kita akan buat user admin, ketikan perintah python manage.py createsuperuser
    (venv) wawanhn@Linux1:~/pypython/geoapp1/geodjango1$ python manage.py createsuperuser


    • Silahkan coba lagi masuk ke halaman 127.0.0.1/admin dan masukan username dan password yang sudah dibuat, sehingga tanpil halaman admin

    Oke sekian dulu nanti dilanjut, dan mohon maaf tulisan masih berantakan karena. Nanti akan dirapihkan dan disusun ulang supaya enak dibaca dan terstruktur.

    Semoga bermanfaat. @wawanhn






    referensi:

    Alternatif IDE untuk Programming Python di Linux dan Windows

    Alternatif IDE untuk Programming Python di Linux dan Windows
    Saya akan berbagi list IDE yang bisa digunakan dalam membuat pemrograman menggunakan python yang sangat handal dan bisa digunakan di Windows dan Linux.

    1. Visual Studio Code



    Bisa di download disini Download

    2. Atom

    Bisa di download disini Download

    3.  Anaconda



    Bisa di download disini Download

    Semoga bermanfaat. @wawanhn

    Referensi:
    https://linuxhint.com/python_ide_ubuntu/