Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Penyebaran Situs Web Cepat Dengan Django, Heroku & New Relic

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Performance Monitoring With New Relic.
Optimizing Application Performance with New Relic for iOS
Front-End Monitoring with New Relic Browser

Indonesian (Bahasa Indonesia) translation by Ilham Saputra (you can also view the original English article)

Pengembangan yang cepat dan penyebaran aplikasi dengan cepat menjadi kebutuhan dan tujuan untuk banyak proyek, lama dan baru. Untungnya, sejumlah besar opsi bermunculan bagi para pengembang untuk memanfaatkan sumber daya penyebaran dan integrasi yang erat dengan bahasa pemrograman pilihan Anda. Cloud deployments, di mana perusahaan menawarkan sejumlah besar perangkat keras yang dapat Anda skala sesuai kebutuhan Anda, menjadi semakin populer karena fleksibilitas dan efektivitas biaya mereka dalam mengikuti pembayaran ketika Anda menggunakan model.

Salah satu perubahan yang lebih mengasyikkan yang dibawa oleh platform cloud ini, terutama dalam kasus proyek yang lebih kecil, adalah bahwa banyak awan menyediakan kesempatan penyebaran gratis meskipun dengan penggunaan perangkat keras yang minimal. Hal ini memungkinkan hosting gratis aplikasi prototipe misalnya atau produk beta memberi Anda contoh aplikasi langsung, yang berjalan yang dapat Anda sediakan bagi siapa pun yang Anda sukai, dengan cepat. Demikian pula, ia bekerja dengan sempurna untuk situs web apa pun yang menerima jumlah lalu lintas yang moderat, seperti bisnis lokal kecil atau bahkan situs web portofolio tempat Anda dapat memamerkan beberapa pekerjaan Anda.

Pengenalan

Artikel ini berfokus pada pengalaman saya dalam mengembangkan situs web portofolio dengan cepat menggunakan Python dan kerangka kerja web Django yang populer menggunakan beberapa template bootstrap untuk menata situs tersebut. Dengan situs yang rapi yang dapat memamerkan hasil kerja, saya akan menunjukkan cara menambahkannya ke sistem pengelolaan konten (CMS) buatan Django, serta cara mudah untuk menerapkannya ke Heroku untuk hosting situs Anda dan lalu memonitor lalu lintas, kesalahan, dan waktu respons menggunakan Heroku yang dibuat dalam integrasi New Relic. Semuanya gratis, dalam beberapa jam kerja.

Buat Situs Web Anda

Pertama-tama, Anda perlu proyek yang ingin Anda hosting di cloud. Seperti yang disebutkan sebelumnya, proyek saya adalah dengan cepat membuat situs web portofolio untuk memamerkan artikel saya dan proyek lain, bersama dengan C.V dan informasi kontak saya. Python dan Django menawarkan kecocokan sempurna untuk persyaratan ini dan Anda dapat dengan cepat mulai membangun situs web dinamis dengan Django dan desain ORM-nya, menyediakan integrasi yang mudah antara templat web Anda dan data yang mendasarinya yang disimpan dalam basis data.

Sebelum menulis kode apa pun, Anda harus membuat lingkungan virtual Python untuk proyek Anda, untuk menjaga dependensi untuk proyek ini terpisah dari yang lain. Di bawah kap, virtualenv secara efektif menyalin instalasi Python global Anda ke folder .virtualenvs di bawah direktori bernama untuk virtualenv Anda. Ini kemudian menambahkan lokasi ini ke depan jalan Anda sehingga sistem Anda menggunakan instalasi Python ini untuk proyek Anda. Semua dependensi kemudian dipasang di sini, bukan secara global. Anda dapat melakukan ini dengan terlebih dahulu menginstal virtualenv dan virtualenvwrapper menggunakan "pip" manajer paket Python.

Setelah menginstal alat virtualenv Anda kemudian harus menambahkan baris sumber ke .bashrc Anda di direktori rumah Anda (Linux/Mac OS X), yang memungkinkan skrip virtualenvwrapper pada baris perintah, memungkinkan untuk penciptaan, aktivasi, dan penghapusan mudah dari lingkungan virtual. Anda dapat membuat virtualenv sebagai berikut.

Dengan pengaturan lingkungan Anda, Anda kemudian dapat menginstal Django yang akan Anda gunakan untuk menentukan aplikasi web. Django dapat diinstal dengan mengeksekusi perintah berikut.

Dengan dependensi di tempat, langkah pertama Anda dalam menciptakan proyek Django Anda adalah membuat direktori untuk menyimpan file Anda mengikuti struktur yang cukup standar seperti yang ditunjukkan di bawah ini. Untungnya, Django membantu untuk mengotomatiskan proses ini dengan penggunaan alat baris perintah django-admin.py. Jalankan yang berikut untuk membuat proyek dan direktori aplikasi Anda.

Ini akan menghasilkan struktur berikut.

Anda dapat membaca lebih lanjut tentang pengaturan aplikasi Django di dalam dokumentasi resmi Django, tetapi ringkasan dasar dari file-file tersebut adalah sebagai berikut:

  • settings.py - konfigurasi untuk aplikasi Django Anda, seperti koneksi database dan aplikasi (lihat di bawah).
  • urls.py - rute yang tertaut ke berbagai bagian situs Anda.
  • wsgi.py - file untuk memungkinkan permulaan aplikasi Anda oleh server web seperti Apache.

Proyek yang dibuat sejauh ini hanyalah wadah luar untuk aplikasi web Anda yang sebenarnya. Daging kode harus tinggal di dalam aplikasi dan Anda dapat kembali menggunakan metode pembantu Django untuk membuat struktur aplikasi untuk Anda.

Ini akan menambahkan berikut ini ke struktur direktori kami secara keseluruhan.

Dengan aplikasi Anda dibuat, Anda perlu mendaftarkannya ke proyek Django Anda. Buka settings.py dan tambahkan "portfolio" ke tuple INSTALLED_APPS:

Untuk memeriksa semuanya berfungsi, masukkan perintah berikut dan kunjungi http://localhost:8000 di browser Anda. Anda harus melihat halaman seperti yang ditunjukkan pada gambar di bawah ini.

Mendefinisikan Model

Sekarang setelah direktori proyek Anda diatur, mari kita mulai menyempurnakan kode. Seperti yang kita ketahui jenis data yang ingin kita tambahkan ke situs portofolio, kita bisa mulai mendefinisikan model. Ini menjelaskan data kami dalam database dan memungkinkan Django untuk terus maju dan membuat bidang dan tabel yang sesuai dalam database untuk kami. Di situs web kami, kami akan memasukkan entri untuk artikel, buku, dan materi tesis. Masing-masing dapat memiliki model tersendiri jika Anda ingin memberi mereka bidang data unik yang tidak berlaku untuk jenis entri lainnya. Namun untuk situs web ini, setiap entri akan diberi nama, tanggal publikasi, deskripsi, dan URL. Dalam file models.py di bawah direktori aplikasi portofolio, Anda dapat menentukan data entri ini sebagai:

Dengan model yang ditentukan, Anda kemudian dapat menghasilkan ini dalam database menggunakan Django yang dibangun di alat baris perintah yang tersedia untuk Anda setelah instalasi. Jika Anda menggunakan file manage.py lagi, Anda juga dapat menggunakan perintah syncdb untuk menangani pengaturan database untuk Anda. Jika Anda mengeluarkan perintah berikut, Anda akan diperlihatkan opsi yang tersedia yang disediakan alat admin ini.

Menggunakan metode syncdb memungkinkan Django untuk membaca model yang baru kita buat dan mengatur struktur yang benar untuk menyimpan data ini dalam database. Karena ini adalah pertama kalinya Anda menjalankan perintah ini, Django juga akan meminta Anda untuk menjawab beberapa pertanyaan. Ini akan mencakup item seperti membuat superuser untuk database (pada dasarnya administrator) memungkinkan Anda untuk melindungi kata sandi terhadap membuat pembaruan dan perubahan ke database. Pengguna ini juga akan membentuk pengguna pertama yang dapat masuk ke CMS yang akan dihasilkan untuk situs web setelah kami memiliki templat dan menjalankannya.

Dengan pengaturan pengguna, perintah harus kembali menunjukkan bahwa ia telah mengeksekusi SQL terhadap database. Langkah selanjutnya adalah sekarang dapat mengakses data yang akan disimpan untuk membuat front end dinamis yang ingin Anda tampilkan kepada pengguna. Untuk mencapai hal ini, Anda perlu menambahkan kode ke tampilan untuk mengakses data yang akan Anda simpan dalam basis data. Dengan data yang tersedia untuk dilihat, ia dapat meneruskannya ke templat yang dapat diartikan sebagai informasi kepada pengguna akhir. Dalam hal ini, ini akan dalam bentuk halaman HTML untuk browser web. Namun, perlu dicatat bahwa pola ini dapat digunakan untuk jenis aplikasi lain seperti memproduksi JSON atau XML, yang lagi hanya akan menggunakan model untuk menentukan dan memindahkan data, dan pandangan yang menyajikannya, dalam format JSON yang benar / XML sebagai lawan HTML.

Pandangan kami

Dalam pandangan, Anda akan menggunakan data yang akan disimpan dalam database untuk ditampilkan kepada pengguna. Untuk melakukan ini, kita mengimpor kelas Item untuk mengakses model itu (dengan Django menangani akses database di bawahnya) dan menyediakan data sebagai variabel ke "template" yang akan dibuat Django. Template sebagian besar adalah HTML statis, dengan tambahan kemampuan untuk mengeksekusi sekumpulan kode Python yang terbatas untuk memproses data Anda dan menampilkannya sesuai kebutuhan. Misalnya, Anda dapat meneruskan seluruh daftar objek item ke templat, tetapi kemudian menggulir daftar itu di dalam templat untuk mendapatkan hanya nama dari setiap item dan menampilkannya dalam tag H1. Semoga ini akan menjadi lebih jelas dengan bantuan contoh di bawah ini.

Buka file views.py yang telah dibuat untuk Anda sebelumnya, dan tambahkan kode berikut yang akan dieksekusi ketika mengakses halaman home (atau indeks) dari situs web Anda.

Ini akan mengumpulkan semua item yang disimpan dalam database, memesannya dengan bidang tanggal publikasi, memungkinkan Anda untuk menampilkan yang paling baru pertama dan kemudian meneruskannya ke template yang akan Anda buat segera. Kamus yang diteruskan ke metode render dikenal sebagai konteks dan Anda akan dapat mengakses objek konteks ini dengan mudah di template untuk menampilkan data yang diperlukan.

Template

Django memanfaatkan perpustakaan template Jinja2 untuk menangani pemrosesan templatnya dan sangat bagus untuk digunakan, karena sintaksnya sangat mudah dan kemampuannya cukup kuat untuk menghasilkan apa yang Anda butuhkan. Namun perlu dicatat, jebakan yang paling banyak dilanggar oleh pengembang ketika bekerja dengan Jinja2 adalah melakukan terlalu banyak logika dalam template. Sementara Jinja2 memberi Anda sejumlah besar operasi standar Python, ini dimaksudkan untuk pemrosesan sederhana untuk mendapatkan data dalam format untuk ditampilkan. Logika untuk mengambil dan menyusun data seharusnya semuanya telah dilakukan dalam pengontrol dan atau tampilan. Anda akan tahu ketika Anda telah jatuh ke dalam perangkap ini ketika Anda mengkodekan banyak di dalam template dan menjadi frustrasi karena kesalahan output Jinja2 atau data yang ditampilkan tidak akan muncul seperti yang Anda inginkan. Pada titik ini, ada baiknya meninjau kembali tampilan untuk melihat apakah Anda dapat melakukan lebih banyak pemrosesan di depan, sebelum meneruskannya ke templat.

Dengan metode index kami yang menangani akses data, yang tersisa hanyalah menentukan template untuk menampilkan item kami. Seperti yang disarankan oleh metode index, Anda perlu menambahkan file index.html dalam aplikasi portofolio untuk membuatnya. Tambahkan file itu dengan kode berikut.

Ini adalah halaman HTML dasar yang akan berulang dan menghasilkan daftar poin-poin dari nama item. Anda tentu saja dapat gaya ini sesuai keinginan Anda dan saya sangat merekomendasikan penggunaan template bootstrap jika Anda ingin mendapatkan sesuatu yang profesional dan berjalan dengan cepat. Lihat lebih lanjut di situs web Bootstrap.

URLs

Bagian terakhir untuk melihat apakah semuanya bekerja, adalah untuk terus maju dan menambahkan URL root untuk menunjuk pada template ini untuk diberikan. Di bawah direktori aplikasi "tuts" buka urls.py dan tambahkan direktif URL berikut ke contoh yang dibuat secara otomatis dan URL admin.

Terakhir, buka admin.py untuk memaparkan kelas Item ke admin CMS, memungkinkan Anda memasukkan data untuk ditampilkan di beranda.

Anda kemudian harus dapat memulai situs Anda (menggunakan menjalankan server seperti sebelumnya) dan melakukan tugas-tugas berikut.

  1. Buka beranda dan lihat bahwa tidak ada item yang ditampilkan.
  2. Buka http://localhost:8000/admin dan masukkan kredensial yang dibuat menggunakan syncdb sebelumnya.
  3. Buka item dan tambahkan item baru yang mengisi isian.
  4. Kunjungi penghormatan dan Anda akan melihat nama item sebagai titik peluru.

Coba akses aspek lain dari data item dalam template. Misalnya, ubah kode di dalam titik peluru untuk menambahkan tanggal publikasi juga. Sebagai contoh:

Anda sekarang memiliki situs kerja yang membutuhkan beberapa styling dan lebih banyak konten untuk dapat berfungsi sebagai situs web portofolio kerja.

Menyebarkan ke Heroku

Heroku adalah platform cloud hebat yang tersedia bagi semua pengembang dan perusahaan, sebagai layanan hosting kelas perusahaan yang dirancang untuk memenuhi semua persyaratan hosting. Dari situs web hobi, semua jalan sampai ke lalu lintas tinggi, situs web bisnis penting, Heroku dapat menangani semuanya. Yang terbaik dari semuanya, struktur harga mereka termasuk tingkat gratis yang lebih dari mampu menjalankan situs web kecil seperti situs web portofolio yang telah kami bangun.

Heroku memanfaatkan alat manajemen kode sumber Git yang populer sebagai mekanisme untuk mengontrol penyebaran ke platform. Yang Anda butuhkan untuk memulai adalah sebuah proyek, git yang diinstal dan akun Heroku yang dapat diperoleh dengan mengunjungi halaman pendaftaran.

Setelah Anda mendaftar, masuk ke akun Heroku Anda dan buat aplikasi dengan satu "web dyno". Heroku menyediakan satu dyne gratis, yang mampu menjalankan contoh aplikasi tunggal dan lalu lintas sedang ke instance itu. Berikan nama pada aplikasi Anda atau biarkan Heroku menugaskan satu untuk Anda. Karena kita perlu menggunakan database untuk aplikasi kita, masuk ke Add-Ons dan pasang contoh PostgreSQL gratis ke aplikasi Anda.

Dengan aplikasi Anda dibuat, cukup ikuti langkah-langkah ini untuk menyiapkan repositori git Anda dan tekan ke Heroku.

Instal Toolbelt Django yang dapat Anda temukan di bagian pengembang situs web Heroku.

Inisialisasi Git repo di direktori proyek Anda dengan mengeluarkan perintah berikut:

Dengan repositori Git di tempat, tambahkan remote aplikasi Heroku sehingga Anda dapat mendorong kode ke heroku.

Heroku harus tahu perintah untuk bagaimana cara memulai aplikasi Anda. Untuk ini, Anda perlu menambahkan "Procfile". Tambahkan file bernama "Procfile" ke dalam akar direktori proyek Anda, dengan isi berikut.

Agar aplikasi Heroku dapat terhubung ke instance basis data yang dilampirkan ke aplikasi Anda di cloud, Anda perlu menambahkan baris berikut ke settings.py. Ini berarti Anda tidak perlu melakukan hard-code konfigurasi apa pun dan Heroku akan menangani koneksi untuk Anda.

Dengan membungkus pengaturan koneksi database ini dalam pernyataan if, itu memungkinkan konfigurasi untuk bekerja seperti pada mesin lokal Anda tetapi setup database dengan benar ketika di Heroku.

Anda juga perlu menambahkan requirements.txt, yang menentukan dependensi Python Anda untuk aplikasi sehingga Heroku dapat menginstalnya ke lingkungan yang dibuat. Tambahkan requirements.txt pada tingkat yang sama dengan Procfile dengan isi berikut:

Dengan file-file yang dibuat, tambahkan ke Git dan kemudian dorong ke remote Heroku, di mana ia akan diterima dan dimulai.

Anda akan melihat beberapa output saat dikirim ke Heroku dan akan selesai dengan pesan berikut:
"http://APP_NAME.herokuapp.com/ dikirim ke Heroku"

Jika Anda adalah untuk memukul URL sekarang, Anda akan melihat pesan kegagalan. Jika Anda ingat pada komputer lokal Anda, Anda perlu menjalankan syncdb untuk membuat tabel dalam database untuk aplikasi untuk menggunakan. Anda perlu mereproduksi perilaku ini pada contoh Heroku kami. Untungnya, Heroku menyediakan cara sederhana untuk menjalankan perintah ini terhadap contoh aplikasi Anda di sabuk alat yang Anda instal sebelumnya.

Anda kemudian harus dapat mengunjungi tautan Anda dan melihat situs web yang berjalan di Heroku, gratis. Coba tambahkan beberapa item ke database Anda dengan cara yang sama seperti yang Anda lakukan secara lokal, untuk memastikan bahwa database sudah diatur dengan benar.

Menambahkan New Relic

Dengan aplikasi Anda berhasil dikerahkan ke platform Heroku, Anda sekarang dapat mulai melihat banyak pengaya yang disediakan. Heroku menyediakan sejumlah besar pengaya mulai dari basis data, alat pemantauan, alat log canggih, analitik, penyedia email, dan banyak lagi. Pengaya adalah salah satu aspek hebat dari menghosting aplikasi Anda di Heroku karena mereka dapat dengan cepat dan mudah ditugaskan ke aplikasi Anda dan dalam beberapa menit, dikonfigurasikan dan berfungsi. Heroku telah mempersingkat proses untuk menambahkan alat-alat ini dan dibutuhkan banyak pekerjaan dari tangan Anda sehingga Anda dapat fokus pada pengiriman produk Anda.

Salah satu pengaya yang akan menjadi fokus artikel ini adalah melampirkan alat pemantauan dan analisis hebat, New Relic. New Relic memiliki banyak kemampuan untuk menggali ke dalam aplikasi Anda dan menyediakan statistik dan data seputar item seperti permintaan per menit, kesalahan, waktu respons, dan banyak lagi. Yang terbaik dari semuanya, Heroku sekali lagi memberikan tier gratis untuk menambahkan ke situs web Anda untuk pergi bersama dengan hosting gratis yang kami miliki saat ini.

Menambahkan Relik Baru ke aplikasi Heroku Anda sederhana dan mengharuskan Anda untuk masuk ke halaman manajemen akun Heroku Anda. Sesampai di sana, klik ke dalam aplikasi yang ingin Anda tambahkan dan pilih "+ Get Add-Ons". Anda kemudian akan disajikan dengan beragam add-on yang disediakan Heroku. Cari melalui untuk "New Relic" dan klik di atasnya. Halaman yang menunjukkan deskripsi dan harga akan ditampilkan dan rincian fitur diaktifkan pada setiap tingkat harga. Untuk tier gratis, Anda pada dasarnya mendapatkan akses ke hampir semua fitur tetapi terikat hanya pada data tujuh hari terakhir. Dari New Relic add on page, Anda cukup salin dan tempel kode untuk melampirkan New Relic ke aplikasi Anda dan jalankan di baris perintah.

Dengan itu ditambahkan, Anda kemudian dapat mengunjungi kembali halaman aplikasi Anda dalam akun Heroku Anda dan Anda sekarang harus melihat New Relic yang tercantum di bawah database Anda. Klik untuk memulai pengaturan dalam akun New Relic Anda. Di sini Anda harus menerima syarat dan ketentuan dan kemudian mengikuti instruksi untuk menginstal New Relic ke dalam aplikasi Django Anda. Ini adalah sebagai berikut:

  1. Tambahkan "newrelic" untuk requirements.txt Anda dan kemudian jalankan:
    $ pip install -r requirements.txt
  2. Jalankan perintah ini menggantikan kunci lisensi yang ditunjukkan kepada Anda:
    $ newrelic-admin generate-config YOUR_LICENCE_KEY newrelic.ini
  3. Buka newrelic.ini yang baru dibuat dan ubah "app_name" menjadi sesuatu yang berarti bagi Anda, misalnya "Django Tuts" atau "Django Portfolio"
  4. Edit Procfile untuk memasukkan awal agen New Relic dengan server:
    NEW_RELIC_CONFIG_FILE=newrelic.ini newrelic-admin run-program gunicorn tuts.wsgi
  5. Berkomitmen dan dorong perubahan ini ke Heroku dan Anda harus mulai melihat pelaporan data aplikasi ke New Relic segera.
    $ git add.
    $ git commit -m "Added New Relic config."
    $ git push heroku master
  6. Setelah mengklik tombol "Connect App" pada Relik Baru dan mengirim beberapa permintaan ke aplikasi, Relik Baru harus menampilkan bahwa aplikasi telah terhubung dan Anda dapat mengklik ke dashboard Anda untuk melihat data.

Bungkus

Hanya itu saja! Dalam waktu sekitar 15 menit, Anda dapat memiliki pemantauan aplikasi New Relic lengkap yang terlampir pada aplikasi Anda, sekali lagi secara gratis.

Tuts+ baru-baru ini memiliki beberapa artikel bagus yang memperkenalkan New Relic dan menunjukkan beberapa teknik dan penggunaan lebih lanjut untuk alat pemantauan. Anda dapat menemukan berbagai artikel lengkap atau alternatifnya, Anda dapat langsung melanjutkan ke artikel saya yang lain tentang pengujian kinerja menggunakan New Relic dan JMeter.

Semoga Anda menemukan tutorial ini informatif dan sesuatu yang dapat Anda selami dan cobalah sendiri dalam satu atau dua jam cadangan. Dengan sedikit gaya dan beberapa konten yang dimasukkan melalui halaman admin Django, Anda dapat dengan cepat mengembangkan situs profesional, dihosting dan dipantau secara gratis.

Checkout situs web saya di profil penulis saya yang ditulis dalam Django, diselenggarakan oleh Heroku dan dipantau oleh New Relic, yang mengilhami penulisan artikel ini.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.