# Ihsan - Bab 3 ## 3.1.2 1. Apa hubungan DevOps dengan server? `Seluruh kegiatan DevOps berlangsung di dalam server` 2. Sebutkan layanan-layanan server yang anda ketahui? `AWS, GCP, dan Azure menyediakan layanan untuk menggunakan server mereka, sehingga perusahaan tidak perlu membeli dan maintain server sendiri` ## 3.2.9 1. Jelaskan kembali perbedaan Linux, GNU, sistem operasi, dan Distro? `Linux: Kernel` `GNU: Software pelengkap untuk sistem operasi` `Sistem operasi: Perantara untuk membuat hardware pada komputer bekerja` `Distro: Sistem operasi GNU/Linux yang sudah dimodifikasi untuk tujuan tertentu` 2. Kenapa Linux lebih cocok untuk server dibandingkan sistem operasi lain? `Source code Linux bebas untuk diakses dan dimodifikasi, sehingga bisa lebih stabil, tersedia banyak tools untuk kebutuhan server, dan dokumentasi yang tersebar di internet` ## 3.3 ### 3.3.1 & 3.3.2 Instalasi Virtualbox dan Vagrant pada Ubuntu ![](https://i.imgur.com/OiWOfJz.png) Hasil instalasi Virtualbox dan Vagrant ### 3.3.3 Instalasi box Vagrant Command `vagrant box add user/box` akan mengunduh box terkait ke lokal user dan siap digunakan oleh Vagrant. Di sini saya akan menggunakan box ubuntu/xenial64 ![](https://i.imgur.com/3GgZabZ.png) ### 3.3.4 Membuat project Inisiasi project dengan membuat direktori khusus untuk project tersebut ![](https://i.imgur.com/EScmuNm.png) Masuk ke dalam direktori yang sudah dibuat, lalu inisiasi vagrant menggunakan command `vagrant init` ![](https://i.imgur.com/LXXswPg.png) Buka vagrantfile menggunakan command `nano Vagrantfile` lalu ubah box-nya agar menggunakan box ubuntu/xenial64 serta ubah ram dari virtual box ![](https://i.imgur.com/0nvDFlr.png) Jalankan vagrant dengan menggunakan command `vagrant up` lalu akan muncul log dari langkah-langkah yang sudah dijalankan oleh vagrant ![](https://i.imgur.com/kuzanHl.png) Box sudah berjalan, selanjutnya login ke dalam box menggunakan command `vagrant ssh` dan akan muncul output seperti ini. Hasil ini menandakan bahwa user sudah berhasil masuk ke box yang sudah dibuat ![](https://i.imgur.com/ITRx9eX.png) ## 3.4.4 Kenapa kita perlu belajar struktur direktori Linux? `Untuk mengetahui sistem operasi serta cara mengelola file` 1. `/home/yxz/Mail` 2. `doc/howto` 3. `/usr/share/doc/packages` ## 3.5.8 Kenapa kita perlu mempelajari perintah dasar command line? `Agar dapat mengelola server Linux, dimana server biasanya tidak ada GUI` Pindah ke direktori /tmp ![](https://i.imgur.com/SJ5qG55.png) Buat file bernama test1.txt yang berisi "Sekolah DevOps Cilsy" di dalam folder sekarang ![](https://i.imgur.com/CYtsSz2.png) Buat 1 folder bernama latihan di dalam folder sekarang, copy test1.txt ke dalam folder latihan dengan nama test2.txt ![](https://i.imgur.com/uKEyQcI.png) Lakukan cut-paste test2.txt ke folder /home dengan nama baru test3.txt. Pindah ke home directory ![](https://i.imgur.com/37U8iIy.png) Di sini saya menggunakan sudo karena user yang sedang saya gunakan bukan root sehingga tidak bisa menulis file di dalam direktori /home Hapus file test1.txt dan folder latihan yang ada di /tmp ![](https://i.imgur.com/MmYbVOm.png) ## 3.6.4 Kenapa kita perlu mempelajari manipulasi teks dan file? `Agar mahir dalam proses scripting` Buat file latihan1.txt ![](https://i.imgur.com/88umG9g.png) Buat file hasil1.txt yang hanya berisi baris yang mengandung kata 'cilsy' dan 'mp3' dengan pengecualian baris yang mengandung '#' ![](https://i.imgur.com/W2ZeO7g.png) ## 3.6.6 Kenapa kita perlu mempelajari manipulasi teks dan file? `Agar mahir dalam proses scripting` Buat file latihan2.txt ![](https://i.imgur.com/Tj7ICKU.png) Buat file hasil2-1.txt yang berisi baris yang berawal angka apapun 1 digit kemudian diikuti tulisan cilsy ![](https://i.imgur.com/9F8zwGu.png) Buat file hasil2-2.txt yang berisi baris yang berawal angka apapun 1 digit atau lebih yang diikuti oleh tulisan cilsy ![](https://i.imgur.com/SWYtWw3.png) Buat file hasil2-3.txt yang berisi baris yang berawal angka apapun 1 digit yang diikuti oleh tulisan cilsy dan harus diakhiri oleh tanda @ ![](https://i.imgur.com/DFi2w9J.png) ## 3.6.10 Buat file latihan3.txt ![](https://i.imgur.com/QLVh5Qv.png) Filter isi file sehingga hasil akhirnya menjadi seperti ini ![](https://i.imgur.com/yJ1AI9o.png) `grep -o` untuk mendapatkan hanya keyword nya saja `sort -V` sort version numbers [link](https://stackoverflow.com/questions/13088370/how-to-sort-strings-that-contain-a-common-prefix-and-suffix-numerically-from-bas) `sed 's/\./-/g'` mengganti tanda '.' dengan '-'. tanda '.' adalah special character sehingga membutuhkan tanda ''\\'' ## 3.7.7 Kenapa kita perlu mempelajari Archiving file? `Untuk memperkecil ukuran file yang tersimpan di dalam server` Buat 5 file yang bernama test1, test2, test3, test4, dan test5 ![](https://i.imgur.com/zec0xT9.png) Buat 1 archive bzip2 bernama latihan4.tar.bz2 yang berisi test1-4 ![](https://i.imgur.com/UbyenUy.png) Hapus file test4 yang ada di dalam file archive yang sudah dibuat, ganti dengan test5 ![](https://i.imgur.com/LBFxVcE.png) Ekstrak archive latihan4.tar.bz2 ke folder /home ![](https://i.imgur.com/LV9cPJT.png) ## 3.8.6 Kenapa kita perlu mempelajari finding file? `Akan berguna dalam aktivitas di server Linux serta scripting` Cari file dengan ekstensi .conf yang memiliki permission 600 dan terakhir diakses 100 hari yang lalu di dalam folder /etc, simpan hasilnya ke dalam hasil5.txt ![](https://i.imgur.com/UKGRJUm.png) ## 3.9.4 Buat user dan group serta tunjukkan hasilnya ![](https://i.imgur.com/P0WHWp4.png) 1. Kenapa kita perlu mempelajari manajemen user dan group? `Untuk menjaga keamanan server serta memastikan setiap user dapat mengakses hal yang dibutuhkan` 2. Pada kasus praktek di atas, apa efek ketika 1 user menjadi anggota 2 grup atau lebih (jono)? `User yang menjadi anggota dari beberapa grup dapat mengakses file dan direktori yang diperbolehkan ke masing-masing grup. Namun hanya satu grup yang menjadi primary group user tersebut` ## 3.11.8 Kenapa kita perlu mempelajari manajemen paket? `Agar bisa melakukan manajemen aplikasi/service yang terdapat di dalam server Linux` Cari aplikasi network mapper, install lalu cek versi berapa ![](https://i.imgur.com/6nOiZvi.png) ![](https://i.imgur.com/ZzlN7kB.png) Hapus aplikasi tersebut ![](https://i.imgur.com/Aph6I0S.png) ## 3.12.7 Kenapa kita perlu mempelajari manajemen layanan? `Agar bisa mengatur dan mengawasi service yang sedang berjalan di server Linux` Lakukan instalasi layanan webserver apache `sudo apt install apache2` Edit layanan tersebut agar auto-start setiap booting `systemctl enable apache2` Restart layanan tersebut dan cek statusnya ![](https://i.imgur.com/ycjLVvq.png) ## 3.14 Setup Webserver dan aplikasi Ubah konfigurasi vagrant box agar dapat menerima komunikasi dari host. Komunikasi hanya diperbolehkan dari host, bukan public access ![](https://i.imgur.com/td3TPoh.png) Vagrant box dapat berkomunikasi melalui port 8080 dari localhost Install webserver dan database server melalui command `sudo apt-get install apache2 php php-mysql` `sudo apt-get install mysql-server` Setelah instalasi selesai, cek apakah webserver sudah berjalan ![](https://i.imgur.com/JTPF0hC.png) Cek database dengan mengakses console mysql dan membuat password baru `sudo mysql -u root -p` Buat username baru dengan password baru, lalu berikan hak akses pada user tersebut ![](https://i.imgur.com/Xv6PFal.png) Buat database dbsosmed menggunakan user baru ![](https://i.imgur.com/KzxgLEA.png) Download aplikasi dari repo cilsy dan ekstrak ![](https://i.imgur.com/yx7xxOh.png) ![](https://i.imgur.com/zLydtWX.png) Pindahkan direktori sosial-media-master ke /var/www/html/ dengan terlebih dahulu menghapus file index.html yang sudah berada di direktori tujuan ![](https://i.imgur.com/8hc12T8.png) Import dump.sql ke dalam mysql dengan command `cd /var/www/html` `sudo mysql -u devopscilsy -p dbsosmed < dump.sql` Ujicoba aplikasi web ![](https://i.imgur.com/PFg9RFs.png) *Landing page aplikasi web* ![](https://i.imgur.com/S8qLhbQ.png) *Pendaftaran akun* ![](https://i.imgur.com/8Ib52wc.png) *Login* Sepertinya masih ada error di script aplikasi web server. User tidak bisa melakukan login. Di bagian atas halaman juga terlihat ada teks yang tidak seharusnya muncul di situ ## 3.15.6 Buat script bernama 'status' yang menampilkan status dari layanan `nano status` ![](https://i.imgur.com/YVLh5OE.png) Ubah permission dari script tersebut agar dapat dieksekusi `chmod 755 status` Jalankan script `./status` ## 3.15.8 Buat script bernama 'shadow' yang akan menghitung pada baris keberapa kata shadow muncul di file /etc/group, lalu melakukan operasi pada hasilnya ![](https://i.imgur.com/440LwMU.png) Ubah permission dari script, lalu jalankan script `chmod 755 shadow` ![](https://i.imgur.com/domtLk9.png) ## 3.16.3 Buat script untuk instalasi service yang dibutuhkan untuk menjalankan sebuah webserver ![](https://i.imgur.com/arYAM14.png) Ubah permission script, lalu jalankan script. Cek apakah service sudah terinstall ![](https://i.imgur.com/T42Os4S.png) note: instalasi mysql masih perlu memasukkan password secara manual Buat script untuk menghapus semua service webserver ![](https://i.imgur.com/V6zKBTS.png) Cek apakah service sudah berhasil dihapus ![](https://i.imgur.com/HmgeKkD.png)