Heroku adalah salah satu platform cloud paling populer sebagai layanan (PaaS). Kami dapat menggunakannya untuk menyebarkan dan mengelola aplikasi Anda dengan cara yang sederhana dan nyaman. Tutorial ini memandu Anda melalui langkah-langkah penerapan Node. js di Heroku dengan database ClearDB dan MySQL. Penyebaran akan dilakukan menggunakan Git dan Heroku CLI
Pos terkait
– Bangun Node. js Rest API dengan Express & MySQL
– simpul. Contoh js Rest API dengan Express, Sequelize, dan MySQL
– Dockerisasi Node. Contoh js Express dan MySQL – Docker Compose
Isi
Buat Node. aplikasi js untuk penerapan
Dalam tutorial sebelumnya, kami telah membuat Restful CRUD API dengan Node. js, Ekspres dan MySQL
Rute untuk menangani semua operasi CRUD terlihat seperti ini
MethodsUrlsActionsGET/customersget all CustomersGET/customers/42get Customer with id=42POST/customersadd new CustomerPUT/customers/42update Customer with id=42DELETE/customers/42remove Customer with id=42DELETE/customersremove all Customers
Struktur proyek kami seperti
[email protected] _
Siapkan Git dan Buat aplikasi Heroku
Arahkan prompt perintah ke direktori root proyek kami, lalu buat repositori Git
$ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit"Buat aplikasi Heroku dengan perintah. $ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" _3
Sekarang kami telah menginisialisasi aplikasi Heroku baru, kami juga membuat repositori jarak jauh di Heroku
$ cd nodejs-express-mysql
$ git init
$ git add .
$ git commit -m "initial commit"
_4
Jika kami tidak memberikan nama, jalankan saja perintahnya. $ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" 5, Heroku akan menghasilkan nama acak
$ heroku create Creating app.. done, ⬢ tranquil-woodland-06325 //tranquil-woodland-06325.herokuapp.com/ | //git.heroku.com/tranquil-woodland-06325.gitDan kita perlu mengganti nama aplikasi menggunakan $ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" 6
$ heroku apps:rename --app tranquil-woodland-06325 bezkoder-nodejs-mysql _Anda dapat memeriksa hasil dari langkah ini dengan $ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" 7
$ git remote -v heroku //git.heroku.com/bezkoder-nodejs-mysql.git (fetch) heroku //git.heroku.com/bezkoder-nodejs-mysql.git (push)Terapkan aplikasi ke Heroku
Kita dapat dengan mudah menggunakan Node.js kita. js ke Heroku dengan mendorong kode ke repositori jarak jauh yang kami buat pada langkah sebelumnya. Heroku akan secara otomatis mendeteksi bahwa ini adalah Node. js app dan membuatnya sesuai
$ git push heroku master Enumerating objects: 16, done. Counting objects: 100% (16/16), done. Delta compression using up to 4 threads Compressing objects: 100% (13/13), done. Writing objects: 100% (16/16), 3.41 KiB | 290.00 KiB/s, done. Total 16 (delta 0), reused 0 (delta 0) remote: Compressing source files.. done. remote: Building source: remote: remote: -----> Node.js app detected remote: remote: -----> Creating runtime environment remote: remote: NPM_CONFIG_LOGLEVEL=error remote: NODE_ENV=production remote: NODE_MODULES_CACHE=true remote: NODE_VERBOSE=false remote: remote: -----> Installing binaries remote: engines.node (package.json): unspecified remote: engines.npm (package.json): unspecified (use default) remote: remote: Resolving node version 10.x... remote: Downloading and installing node 10.16.3... remote: Using default npm version: 6.9.0 remote: remote: -----> Installing dependencies remote: Installing node modules (package.json) remote: added 59 packages from 48 contributors and audited 171 packages in 2.351s remote: found 0 vulnerabilities remote: remote: remote: -----> Build remote: remote: -----> Pruning devDependencies remote: audited 171 packages in 1s remote: found 0 vulnerabilities remote: remote: remote: -----> Caching build remote: - node_modules remote: remote: -----> Build succeeded! remote: -----> Discovering process types remote: Procfile declares types -> (none) remote: Default types for buildpack -> web remote: remote: -----> Compressing... remote: Done: 20M remote: -----> Launching... remote: Released v3 remote: //bezkoder-nodejs-mysql.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy.. done. To //git.heroku.com/bezkoder-nodejs-mysql.git * [new branch] master -> masterTapi saat ini Node kami. Aplikasi js tidak terhubung dengan database MySQL apa pun. Kita perlu datang ke langkah berikutnya untuk membuatnya bekerja
Konfigurasi Database MySQL untuk Node. js di aplikasi Heroku
Siapkan ClearDB
Heroku menyediakan PostgreSQL sebagai mesin database default untuk aplikasi kita. Dalam tutorial ini, kita akan bekerja dengan database MySQL, jadi penyedia layanan bernama ClearDB akan digunakan
Untuk memulai, instal add-on ClearDB ke aplikasi kita dengan perintah
Konfigurasikan koneksi MySQL
Setelah menginstal Add-on, kita bisa mendapatkan URL database kita dengan menjalankan perintah
$ heroku config | grep CLEARDB_DATABASE_URLJika Anda mendapatkan kesalahan pada Window Os
$ cd nodejs-express-mysql
$ git init
$ git add .
$ git commit -m "initial commit"
_8
Anda dapat menggunakan perintah ini sebagai gantinya
Salin nilai variabel konfigurasi CLEARDB_DATABASE_URL dan gunakan dalam perintah berikut
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _1Node Konfigurasi. js untuk menghubungkan ClearDB MySQL di Heroku
Pada langkah sebelumnya, kita mendapatkan $ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" 9 yang berisi
- $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _0. nama belakang
- $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _1. kata sandi
- $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _2. tuan rumah
- $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _3. basis data
Sekarang kita akan menggunakan parameter ini untuk mengonfigurasi koneksi database kita di Node. aplikasi js
Buka db. config. js, ubah konfigurasinya seperti ini
Jangan lupa untuk mendorong kode yang diperbarui ke repositori jarak jauh Heroku
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _3Buat tabel MySQL di ClearDB
Sebelum menguji aplikasi kita di Heroku, kita perlu membuat tabel MySQL bernama $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git 4 di ClearDB. Menggunakan parameter koneksi di atas, buka prompt perintah lain, jalankan perintah
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _4Buat tabel dengan skrip SQL seperti ini
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _5Periksa meja
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _6Uji aplikasi Heroku di lokal
Untuk menguji aplikasi kami di mesin lokal, jalankan perintah
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _7Sekarang Anda dapat melakukan operasi CRUD dengan Rest Apis kami menggunakan url. $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _5
Tapi untuk $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _6, kami belum selesai dan akan mendapatkan beberapa kesalahan
Uji Node. js Rest Apis di Heroku
Jalankan perintah. $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _7
Saat ini, jika Anda mengajukan permintaan ke $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _6, Anda akan melihatnya
[email protected] _8
Kesalahan R10. gagal mengikat ke $PORT
heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _9Ini karena Node.js kami. Aplikasi js dikonfigurasi untuk mengikat ke port $ heroku create Creating app.. done, ⬢ tranquil-woodland-06325 //tranquil-woodland-06325.herokuapp.com/ | //git.heroku.com/tranquil-woodland-06325.git 0, tetapi Heroku menggunakan variabel lingkungan $ heroku create Creating app.. done, ⬢ tranquil-woodland-06325 //tranquil-woodland-06325.herokuapp.com/ | //git.heroku.com/tranquil-woodland-06325.git 1, dan bersifat dinamis
Untuk memperbaiki masalah ini, ubah saja kode kita seperti ini
$ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" 0Kesalahan Sambungan terputus. Server menutup koneksi
Kami juga mungkin mendapatkan kesalahan koneksi database ini. Ini karena server MySQL di ClearDB menutup koneksi. Anda dapat mendeteksi kejadian pemutusan sambungan, lalu membuat ulang sambungan
Cara lain untuk memperbaikinya adalah dengan menggunakan penggabungan koneksi. Buka db. js dan ubah kodenya menjadi kode baru seperti ini
$ cd nodejs-express-mysql $ git init $ git add . $ git commit -m "initial commit" 1Catatan. Setelah memperbaiki masalah, Anda harus memperbarui kode ke repositori jarak jauh Heroku. heroku: Press any key to open up the browser to login or q to exit: Opening browser to //cli-auth.heroku.com/auth/browser/xxx Logging in.. done Logged in as [email protected] _3
Sekarang kita dapat melakukan operasi CRUD ke Rest Apis di server Heroku dengan perintah di atas. $ heroku create bezkoder-nodejs-mysql Creating ⬢ bezkoder-nodejs-mysql.. done //bezkoder-nodejs-mysql.herokuapp.com/ | //git.heroku.com/bezkoder-nodejs-mysql.git _7
Atau restart server dengan. $ heroku create Creating app.. done, ⬢ tranquil-woodland-06325 //tranquil-woodland-06325.herokuapp.com/ | //git.heroku.com/tranquil-woodland-06325.git 3
Kesimpulan
Hari ini kita telah mempelajari cara menerapkan Node. js di Heroku, kami juga tahu cara mengonfigurasi add-on ClearDB agar berfungsi dengan Database MySQL, lalu kami menguji aplikasi Heroku di server lokal dan Heroku dengan memperbaiki Error H10, R10, koneksi database terputus