Ngoding jadi pusing karena lupa.

Breaking

Showing posts with label SERVER. Show all posts
Showing posts with label SERVER. Show all posts

Tuesday, January 16

January 16, 2024

Laravel Dan PostgreSql di Docker

    Kali ini saya sedang mencoba mempelajari PHP framework yang masih sering mendapatkan update yaitu framework Laravel. Framework ini dibangun dengan bahasa pemrograman PHP. Saat ini Laravel sudah mencapai versi 10.x.

    Untuk melakukan ujicoba, dan mebiasakan diri dengan framework ini, cara yang terfikir adalah dengan mencobanya dan terus mencoba hingga akhirnya bisa terbiasa dengan framework ini. Supaya saya bisa melakukan hal tersebut, saya membutuhkan server php, composer dan juga postgresql sebagai databasenya.

    Untuk server PHP nya, saya akan menggunakan Nginx.Karena Nginx tidak bisa mengexekusi script PHP, sehingga kita perlu menambahkan PHP FPM (FastCGI Process Management) sebagai eksekutor script PHP nya, sedangkan Nginx sebagai penerima request dari client ke PHP FPM, dan pemberi response hasil eksekusi dari PHP FPM ke client.

    Selain itu, saya juga memerlukan composer. Composer ini sangat mempermudah dalam melakukan installasi library atau dependency yang nantinya diperlukan ketika sedang melakukan ujicoba ataupun saat sedang mendevelop aplikasi menggunakan Laravel.

    Untuk kebutuhan - kebutuhan tersebut, akan saya letakkan di dalam docker. Hal ini seperti pada alasan yang sudah saya sebutkan di catatan saya sebelumnya Kenapa Docker ?

Apa saja yang akan kita lakukan ?

0. Persiapan
1. Membuat Dockerfile
2. Membuat docker-compose.yml
3. Membuat config untuk Nginx
4. Membuat Container
5. Membuat project Laravel baru
6. Menghubungkan Laravel dengan database Postgresql
7. Melakukan Pengecekan, apakah database sudah terhubung, dan data bisa tampil.

0. Persiapan

    Buatlah sebuah folder (Terserah dimanapun, asal jangan didalam recyclerbin). disini saya membuat folder dengan nama laravel-environment

    Didalam folder laravel-environment, saya membuat folder "database","docker-config","project"

1. Membuat Dockerfile (laravel-environment/Dockerfile)

    Menurut pemahaman saya, setiap kita ingin membuat container pada docker, kita perlu menentukan sumber imagenya darimana. Sudah banyak image yang dibuat oleh orang lain, dan kita hanya perlu membuat container dengan menggunakan image tersebut. Namun dalam keadaan sehari-hari yang kita hadapi, seringkali apa yang sudah disediakan berbeda dengan apa yang kita butuhkan. Itulah kenapa terkadang kita perlu membuat image itu sendiri supaya sesuai dengan apa yang kita butuhkan. 

    Dockerfile adalah dokumen teks yang berisi perintah untuk membangun sebuah image. Didalam file Dockerfile kita bisa memberikan perintah-perintah supaya image yang terbentuk nantinya akan menjadi image yang sesuai dengan kebutuhan.

    Sebelumnya sudah disebutkan, bahwa kita butuh PHP FPM untuk menjalankan script PHP, dan juga saya membutuhkan composer untuk membantu proses install library atau dependensi nantinya. Maka dari itu, saya akan membuat Dockerfile yang nantinya akan membentuk image dengan kombinasi (PHP FPM dan composer)

Berikut bentuk filenya :

2. Membuat docker-compose.yml (laravel-environment/docker-compose.yml)

    Image yang spesifik dengan kebutuhan saya, sudah saya persiapkan didalam Dockerfile sebelumnya. Sedangkan sisanya, seperti Nginx dan postgreSql tidak ada kebutuhan yang spesial. Jadi untuk image sisanya, saya akan menggunakan image yang sudah ada atau sudah disediakan.

    Tahap selanjutnya hanya perlu mengkombinasikan image - image menjadi container. Untuk membuat hal tersebut, saya membuatnya seperti berikut :

3. Membuat config untuk Nginx (laravel-environment/docker-config/default.conf)

    Sudah dijelaskan sebelumnya, bahwa Nginx tidak akan bisa menjalankan script PHP, sehingga kita perlu mengarahkan Nginx supaya menuju ke PHP FPM.

Berikut file config yang saya buat :

4. Membuat Container

    Semua persiapan untuk membuat container sudah selesai. Saatnya kita eksekusi untuk membuat containernya.

    Klik kanan folder laravel-environment, lalu pilih buka terminal (Setiap OS beda-beda). Setelah terminal terbuka, jalankan perintah berikut :

docker compose up -d

    Setelah selesai, jika kita buka Docker desktop, maka akan muncul container-container yang sudah diatur sebelumnya, yaitu postgresql, nginx dan php fpm.


5. Membuat project Laravel baru

    Pada saat saya membuat Dockerfile, di dalamnya saya juga sekaligus menambahkan perintah untuk melakukan install composer. Sehingga composer akan ada di dalam container yang dibangun dengan image dari Dockerfile tersebut. Pada kasus kali ini, composer terdapat pada container fpm-laravel-environment. Jadi jika ingin mengexekusi perintah composer yang ada di dalam container, bisa menggunakan perintah berikut :

docker exec -it fpm-laravel-environment composer create-project laravel/laravel /var/www/

Setelah prosesnya selesai, maka folder laravel-environment/project akan berisi project laravel. Sekarang coba akses localhost dari browser, seharusnya sudah bisa menampilkan halaman defaultnya Laravel.

6. Menghubungkan Laravel dengan database Postgresql

Untuk menghubungkan project laravel dengan database postgresql yang sudah saya buat, saya perlu merubah file .env yang ada di dalam folder laravel-environment/project menjadi seperti ini :


7. Melakukan Pengecekan, apakah database sudah terhubung, dan data bisa tampil.

    Setelah sudah selesai melakukan configurasi supaya Laravel bisa terhubung dengan database postgresql. Kita bisa melakukan perintah untuk membuat tabel migrasi. Ini nanti berguna dalam keperluan migrasi tabel dan lain - lain. Berikut perintahnya :

docker exec -it fpm-laravel-environment php /var/www/artisan migrate:install

Jika koneksi ke database sudah benar, seharusnya perintah sebelumnya tidak akan memunculkan pesan error. 

Selanjutnya saya akan membuat data seeder atau data dummy menggunakan perintah bawaan dari artisan. Namun sebelum menjalankan perintah pembuatan seedernya, saya perlu mengubah sedikit code yang ada pada laravel-environment/project/database/seeders/DatabaseSeeder.php menjadi seperti berikut :


Code tersebut digunakan untuk menjalankan perintah, membuat data seeder sebanyak 10 data. Berikut perintah yang perlu di jalankan untuk membuat seeder 

docker exec -it fpm-laravel-environment php /var/www/artisan migrate --seed 

 Sejauh ini sudah berjalan tanpa muncul kendala, saatnya saya butuh pembuktian bahwa data yang ada pada database bisa ditampilkan menggunakan laravel. Tapi saya perlu merubah beberapa code untuk menampilkan data yang sudah ada.

Pertama, ubah dulu laravel-environment/routes/web.php menjadi seperti berikut


Selanjutnya, ubah file laravel-environment/resources/views/welcome.blade.php. Tambahkan 

{{dd($data)}}

Pada posisi paling atas, sehingga terlihat seperti berikut :


 Lalu test akses localhost dari browser. Niscaya akan menampilkan tampilan seperti berikut :


Umh, Nais. Datanya sudah muncul, artinya sekarang environment laravel, postgresql sudah bisa digunakan. 

Oh iya, kalau ada yang ingin clone reponya, bisa clone dari sini ya : Laravel Environment

Sunday, January 7

January 07, 2024

Docker : Kenapa dan Bagaimana ?

    Programmer selalu harus siap dengan environment atau ketersediaan aplikasi pendukung dalam mengerjakan suatu project. Seperti misalnya programmer Backend PHP, beliau harus sudah menginstall aplikasi pendukung supaya bisa melakukan pengkodingan di komputernya. Namun seringkali proses develop nya lancar, tetapi ketika melakukan deploy atau perilisan aplikasi yang sudah susah payah dibangun, menghadapi masalah. Masalah sederhana yang sering kali muncul adalah perbedaannya environment yang ada di komputer sang programmer dengan environment yang ada pada server hosting atau server tempat melakukan deploy. Semakin banyak perbedaan environment sang programmer dengan environment server, maka semakin banyak juga yang harus diperhatikan lagi. Karena hal itu bisa saja membuat kodingan yang sebelumnya sudah dibuat perlu banyak perubahan untuk menyesuaikan dengan environment yang ada pada server. Selain itu, masalah serupa akan terjadi lagi jika ternyata pengerjaan dari project tersebut ingin didelegasikan atau diserahkan ke programmer lain.


    Daripada harus mengulang - ulang hal merepotkan yang sama, kenapa tidak kita buat saja sebuah file yang berisi konfigurasi tentang kebutuhan environment dalam membangun project tersebut. Konfigurasi bisa dibuat supaya menghasilkan environment yang sama dengan kondisi yang ada pada server. Selain itu, jika kita ingin mendelegasikan project tersebut kepada programmer lain, maka programmer lain itu hanya perlu implementasikan saja konfigurasi yang sudah dibuat dan dia akan secara otomatis memiliki environment yang sama dengan yang sudah di tuliskan di dalam konfigurasi tersebut. Dengan begitu maka masalah tentang perbedaan environment tidak akan terjadi. Proses deploy tidak perlu khawatir, karena kita memiliki environment yang sama dengan yang ada pada server. Proses delegasi project tidak perlu khawatir, karena programmer lainnya juga akan mendapatkan environment yang sama.


    Docker adalah platform perangkat lunak yang memungkinkan pengembang untuk mengemas, mendistribusikan, dan menjalankan aplikasi dalam lingkungan kontainer. Kontainer adalah unit standar perangkat lunak yang mencakup kode dan semua dependensinya, memastikan aplikasi dapat berjalan dengan konsisten di berbagai lingkungan. Docker memungkinkan pengembang untuk mengisolasi aplikasi mereka dari infrastruktur yang mendasarinya, membuatnya mudah dipindahkan antar lingkungan pengembangan, pengujian, dan produksi.


    Sesuai dengan penjelasan tentang Docker diatas, kita bisa memanfaatkan Docker ini sebagai tools untuk menyelesaikan masalah yang sudah disebutkan sebelumnya. 

Monday, November 5

November 05, 2018

Setting Internet CentOs 7 pada Virtual Box


Setelah sebelumnya telah berhasil melakukan installasi CentOs 7 pada virtual box. akan muncul masalah baru. Dimana masalahnya adalah, secara default CentOs tidak akan mendapatkan akses internet walaupun komputer yang sebagai wadah virtual box memiliki koneksi internet.

Emang kenapa kok CentOs butuh internet ?
Jadi gini, yang namanya linux, kebanyakan kalau mau install software butuh internet karena cara installnya langsung download dari sumbernya.


Nah, agar CentOs yang ada di virtual box bisa mendapatkan internet dan juga bisa di akses melalui SSH maka perlu dilakukan beberapa hal. Berikut ini hal - hal tersebut..

1. Pilih Virtual machine.
2. Klik setting.
3. Ketika muncul window baru pilih pada menu Network
4. Maka tab setelah kanan akan muncul tab Network seperti gambar berikut.
Click gambar untuk memperbesar gambar
5. pada tab network, pilih sub tab adapter 1
6. attached pilih Bridge adapter
7. Name pilih awalan "wl" jika sumber internet dari komputer fisik adalah dari wifi / wlan, dan pilih awalan "en" jika sumber internet komputer fisik adalah dari kabel Lan.
8. Pindah ke sub tab adapter 2
9. centang enable adapter 2
10. attached pilih Host-Only Adapter
11. Name pilih vboxnet seperti gambar berikut.
Click gambar untuk memperbesar gambar
12. Jika sudah. jalankan Virtual machine (Centos7) dengan klik button Start.
13. Login lah sebagai root.
Click gambar untuk memperbesar gambar
14. Ketikkan perintah berikut untuk masuk ke directory network-script pada terminal virtual machine
"cd /etc/sysconfig/network-scripts/" tanpa tanda petik, lalu tekan Enter untuk exekusi perintah tersebut.
Click gambar untuk memperbesar gambar
15. lalu jalankan perintah berikut "vi ifcfg-enp0s3" tanpa tanda petik.
Click gambar untuk memperbesar gambar
16. maka akan tampil tampilan text editor vi pada terminal.
17. tekan huruf "i" supaya mode pada vi menjadi mode INSERT
Click gambar untuk memperbesar gambar
18. Ubah BOOTPROTO menjadi dhcp
19. Ubah ONBOOT menjadi yes
20. jika sudah, tekan tombol ESC.
21. dilanjutkan dengan mengetik ":wq" (titik dua w q) tanpa tanda petik, lalu Enter
Click gambar untuk memperbesar gambar
22. jalankan perintah berikut "systemctl restart network.service" tanpa tanda petik.
23. silahkan coba untuk ping ke google. seharusnya sampai tahap ini sudah bisa terhubung ke internet.
24. Cek ip pada virtual machine, supaya bisa di remote menggunakan SSH dengan cara, masukkan perintah "ip add" tanpa tanda petik pada terminal
Click gambar untuk memperbesar gambar
25. gunakan ip yang diberikan untuk melakukan remote SSH.

Selesai.

Mohon kirimkan kritik dan saran teman-teman di kolom komentar.

Thx.




Sunday, November 4

November 04, 2018

Install centos7 di virtual box


Hai. Kali ini sesuai dengan judulnya, saya sedang mencoba menginstall CentOS 7 di virtual box. Mungkin ada dari para pembaca bertanya, kenapa harus CentOS atau mungkin kenapa harus virtual box.

Sederhana saja, kenapa virtual box ?
Karena gratis dan hanya perlu 1 buah komputer yang cukup high saja.

Kenapa harus CentOs ?
Ini tidak ada alasan khusus, ini hanya alasan personal penulis (CentOs itu anti mainstream : menurut saya).

Ok, langsung aja yok install Centosnya.

Click gambar untuk memperbesar gambar
1. buka virtual boxnya.
2. klik New (icon matahari warna biru)

Click gambar untuk memperbesar gambar
3. Buat nama sesuai keinginan
4. pilih Typenya Linux.
5. pada Versionnya pilih Red-Hat (32 / 64 sesuai image.iso yg sudah di download saja). penulis menggunakan yg 64.
5. Memory size (atur sesuai keinginan). penulis menggunakan 1 Gb (1024) ram sebagai ram untuk virtual ini nantinya.
6. Ok, lanjut dengan klik Create.


Click gambar untuk memperbesar gambar
7. Atur ukuran hardisk untuk virtual ini. Penulis menggunakan 25 Gb dari hardisk fisik untuk virtual ini.
8. Lanjut lagi dengan klik tombol Create.
9. Maka akan bertambah satu list pada daftar virtual machine yg sudah di buat tadi.
Click gambar untuk memperbesar gambar
10. Selanjutnya, perhatikan gambar berikut

Click gambar untuk memperbesar gambar
11. Pilih virtual machine yg sudah di buat
12. Klik icon setting (Gear warna kuning).
13. Maka akan muncul window setting.
14. Pada menu sebelah kirinya, pilih menu Storage.
15. Maka pada sebelah kanan akan muncul opsi untuk Storage.
16. Pilih pada Controller Ide (icon CD).
17. Maka di sebelah kanannya akan muncul tab Atribut.
18. Klik pada icon CD yg ada di tab atribut.
19. pilih Chose virtual Optic Disc file. (arahkan pada file centos.iso yg sudah di download).
20. Jika sudah, klik button Ok.

Click gambar untuk memperbesar gambar
21. Klik Start.
22. Jika muncul halaman seperti ini. pilih Install Centos 7. lalu tekan Enter.
Click gambar untuk memperbesar gambar
23. Maka selanjutnya akan muncul tampilan pilih bahasa dan keyboard.
Click gambar untuk memperbesar gambar
24. Penulis tidak melakukan perubahan pada opsi ini, penulis langsung tekan button Continue.
25. Akan muncul halaman seperti berikut.
Click gambar untuk memperbesar gambar
26. Klik pada Installation Destination.
27. Akan muncul halaman baru. 
28. Pilih pada opsi I will configure partitioning.
29. Pilih Button Done yang ada di sudut kiri atas.
Click gambar untuk memperbesar gambar
30. Pada halaman baru yang muncul. Klik pada "Click here to create them automaticaly"

Click gambar untuk memperbesar gambar
31. Pada halaman baru yang muncul. Klik Done, dan jika muncul Window summary of change. Klik accept Change.
Click gambar untuk memperbesar gambar
32. Halaman akan kembali ke halaman awal. klik pada button Begin Installation.
Click gambar untuk memperbesar gambar
33. Pada halaman berikut ini,  Pilih pada Root Password untuk membuat password pada user root.
Click gambar untuk memperbesar gambar
34. Sisanya tinggal buat saja password sesuai keinginan.
Click gambar untuk memperbesar gambar
35. Jika sudah, klik Done. dan tunggu proses installasi selesai. Hingga muncul halaman berikut
Click gambar untuk memperbesar gambar
36. silahkan Klik Reboot. dan selesai sudah installasi Centos pada Virtual Box nya.
37. Setelah Reboot. maka akan muncul tampilan seperti ini.
Click gambar untuk memperbesar gambar
38. Pilih saja yang atas. dan tekan tombol enter.
39. Silahkan login dengan user "root" (tanpa tanda petik), dan password sesuai yang sudah di buat pada proses no 34.
Note : untuk yang baru menggunakan linux, mngkin akan bingung karena password yang di ketik tidak akan muncul apa - apa (hanya kosong). Tetapi ini tidak masalah, hanya ketikkan saja passwordnya, dan tekan enter jika sudah.
Click gambar untuk memperbesar gambar
40. Gambar di atas adalah ketika saya melakukan login dengan user root.

Selesai.

Mohon tuliskan Kritikan atau Saran di kolom komentar di bawah.

Thx.