Posts

Showing posts from June, 2017

Gagal Import Database MySQL Karena Berbeda Versi

Ceritanya mau pindahan server, dan karena versi OS lebih rendah, otomatis versi MySQL juga lebih lawas, dan masalah muncul ketika mau import database ke server baru. Solusi? Install paket mysql-apt-config dari tautan berikut: https://dev.mysql.com/downloads/repo/apt/ Install, dan jalankan apt-get update && apt-get upgrade -y Done

Menambahkan SSH Key ke Git Provider (Github, Bitbucket)

Capek bolak-balik mengetik password? Solusinya adalah dengan menambahkan ssh key dari server/localhost ke git provider, semisal github atau bitbucket, caranya? Generate ssh-key ssh-keygen Ketik enter ketika prompt meminta passphrase, biar tidak usah mengetik password lagi. Setelah itu, copy isi dari file ~/.ssh/id_rsa.pub Kemudian paste ke git provider settings. Selesai

Ganti Password Root di Ubuntu

Ketikkan perintah berikut di root (su): passwd Masukkan password baru dan... selesai... simple...

URL - Sebaiknya Relative atau Absolute?

What? Yah itulah kenyataan di dunia SEO, bagi engineer, penggunaan absolute URL tentu bukan best practices, kenapa? Karena tidak dinamis, jika kita mengganti nama domain, maka perlu penyesuaian di sana sini untuk bisa menyesuaikan dengan domain baru. Ini tentu berarti tambahan pekerjaan... Tapi dari kacamata SEO, beda lagi... Best practice untuk SEO adalah menggunakan absolute URL, ini terkait dengan utamanya crawler budget. Silakan baca tautan berikut untuk penjelasan lebih lanjut... Should I Use Relative or Absolute URLs? - Whiteboard Friday Why relative URLs should be forbidden for web developers

Install supervisor - the right way

The right way ini maksudnya mirip-mirip best practice lah.. Yakni dengan tidak menggunakan super user (sudo), caranya bagaimana? Cukup tambahkan parameter --user ke perintah pip Anda... $ pip install supervisor --user Instalasi terletak di direktori home Anda ~/.local/bin/ Bagaimana jika meng-install sebagai super user? Tidak ada masalah sih, bisa aja, namun Anda harus tahu bahwa instalasi pip menggunakan sudo tidak disarankan dari sisi keamanan sebuah sistem.

Mudah Mengelola Long-running Processes dengan supervisor

Anda memiliki banyak long-running process dalam satu mesin? Misal running beberapa aplikasi django? Gunakan supervisorctl kalau Anda tidak ingin repot. Setelah terpasang dan konfigurasi berjalan dengan baik, mengelola banyak aplikasi menjadi mudah, cukup dengan reread, stop, start... reread Perintah ini untuk membaca ulang isi dari supervisord.conf update Perintah ini untuk menambahkan proses baru kedalam supervisord start/stop Perintah ini untuk memulai/menghentikan sebuah proses status Perintah ini untuk melihat status dari masing-masing proses yang kita miliki.

Jangan Pernah Melakukan pip install Menggunakan Root / Super User

Terus caranya bagaimana? Cukup tambahkan parameter --user, misal saya ingin meng-install supervisor, tanpa sudo, besar kemungkinan hasilnya error permission denied, untuk itu, lakukan perintah berikut: pip install supervisor --user Jika Anda pengguna ubuntu, maka lokasi instalasi ada di ~/.local/bin Untuk lebih memudahkan, Anda dapat membuat alias sederhana di .bashrc: alias supervisord="/home/kholidfu/.local/bin/./supervisord" alias supervisorctl="/home/kholidfu/.local/bin/./supervisorctl" Selamat mencoba

Supervisord, Supervisorctl, Nginx, Gunicorn dan Django

Bingung mau ngasih judul apa, intinya saya mau setup django yang menggunakan gunicorn dan di run secara daemon menggunakan supervisor. Sebelumnya pastikan Anda sudah memasang supervisor di komputer (mengikuti tutorial dari sini ): pip install supervisor echo_supervisord_conf > supervisord.conf Jalankan supervisor supervisor -c supervisord.conf Jika tidak ada pesan kesalahan, sekarang tambahkan command gunicorn di bagian paling bawah dari file supervisord.conf tadi. Di saya berikut ini perintah untuk gunicorn: [program:kesuwen] command=/Users/macbookpro/git/kesuwen/bin/gunicorn --env DJANGO_SETTINGS_MODULE=/Users/macbookpro/git/kesuwen/app --pythonpath=/Users/macbookpro/git/kesuwen/ --bind=127.0.0.1:8000 app Jalankan lagi supervisor, dan django + gunicorn sekarang sudah di run via supervisor. Anda dapat juga mencoba supervisorctl untuk fleksibilitas yang lebih, misalnya untuk start/stop program tertentu. Caranya adalah dengan sebelumnya masuk dulu ke console supervisorctl dengan meng

Membuat Image Sitemap di Django

Sudah pernah dengar istilah image sitemap? Saya sendiri baru saja praktik membuat image sitemap dengan menggunakan bantuan jinja2. Sitemap ini intinya adalah memberi tahu Google sebagai mesin pencari bahwa pada sebuah kita memiliki daftar gambar yang "layak" untuk dimasukkan ke dalam index.

Mengganti IP Address Ubuntu Server 16.04

Seringkali jika kita order dedicated server, kita akan dapat IP address lebih dari satu, dan kadang karena pertimbangan tertentu, kita ingin mengganti IP ke IP lain. Bagaimana caranya? Sunting berkas /etc/network/interfaces , sesuaikan IP address dengan yang baru kemudian jalankan perintah: ifdown eth0; ifup eth0 Kalau sedang login via ssh, maka terminal session pasti nge-freeze, karena koneksi terputus, tidak apa-apa, tunggu beberapa saat kemudian lakukan login kembali menggunakan IP yang baru. Jangan lupa untuk melakukan restart service2 yang terkait dengan IP lama, misal nginx, dan lain sebagainya. Reference:  Configure Networking on Ubuntu

Auto-restart Gunicorn Setiap Menerima Request

Tentu ini bukan untuk production ya, hanya trik untuk level development sehingga tidak perlu capek2 Ctrl+c kemudian running ulang si gunicorn. Caranya adalah dengan menambahkan parameter: --max-request 1 Jadi perintah utuhnya adalah bin/gunicorn --log-file=-1 --max-request 1 Atau kalau cuma ingin melakukan restart sesekali, gunakan perintah ini: pkill -HUP -f gunicorn Selamat mencoba!

Melakukan Debug di Django Form

Pusing karena django form tidak valid? Apa yang salah? Bagaimana cara melakukan debug terhadap django form di template? Cukup tambahkan dua baris berikut di template form HTML Anda: {{ form.errors }} {{ form.non_field_errors }} Dan error di form Anda akan muncul... Selamat mencoba

Memilih option selected di Django Template

Bayangkan Anda memiliki HTML form berikut: <select> <option>Madiun</option> <option>Sleman</option> </select> Tugas Anda sekarang adalah meng-assign Madiun sebagai selected tanpa harus menggunakan javascript, cukup dengan logic di views dan template django saja. Gimana caranya? Pertama di views, kita sudah set variabel kota misal ke madiun dan pass variabel tersebut ke template: # views.py def awesome_city(request): kota = 'Madiun' return render(request, 'form.html', {'kota': kota}) Sekarang saatnya menambahkan logika if else sederhana di Django template untuk memilih kota sesuai dengan yang sudah ditentukan di views.py <select> <option {% if kota == 'Madiun' %}selected{% endif %}>Madiun</option> <option {% if kota == 'Sleman' %}selected{% endif %}>Sleman</option> </select> Karena untuk memilih option select itu cukup dengan menambahkan parameter selected di b