Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/arfianz/autobash

Bash Script Otomasi Layanan Server
https://github.com/arfianz/autobash

apache2 bash bash-script cilsy linux mariadb-client mariadb-database mariadb-server php7

Last synced: about 1 month ago
JSON representation

Bash Script Otomasi Layanan Server

Awesome Lists containing this project

README

        

# Big Project Mini Class Linux
Merupakan tahap akhir dari pembelajaran Mini Class Linux yang diselenggarakan oleh cilsy.id

[![made-with-bash](https://img.shields.io/badge/-Made%20with%20Bash-1f425f.svg?logo=image%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MDg2QTAyQUZCMzExRTVBMkQxRDMzMkJDMUQ4RDk3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3MDg2QTAzQUZCMzExRTVBMkQxRDMzMkJDMUQ4RDk3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTcwODZBMDBBRkIzMTFFNUEyRDFEMzMyQkMxRDhEOTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTcwODZBMDFBRkIzMTFFNUEyRDFEMzMyQkMxRDhEOTciLz4gPC9yZGY6RGVzY3JpcHRpb24%2BIDwvcmRmOlJERj4gPC94OnhtcG1ldGE%2BIDw%2FeHBhY2tldCBlbmQ9InIiPz6lm45hAAADkklEQVR42qyVa0yTVxzGn7d9Wy03MS2ii8s%2BeokYNQSVhCzOjXZOFNF4jx%2BMRmPUMEUEqVG36jo2thizLSQSMd4N8ZoQ8RKjJtooaCpK6ZoCtRXKpRempbTv5ey83bhkAUphz8fznvP8znn%2B%2F3NeEEJgNBoRRSmz0ub%2FfuxEacBg%2FDmYtiCjgo5NG2mBXq%2BH5I1ogMRk9Zbd%2BQU2e1ML6VPLOyf5tvBQ8yT1lG10imxsABm7SLs898GTpyYynEzP60hO3trHDKvMigUwdeaceacqzp7nOI4n0SSIIjl36ao4Z356OV07fSQAk6xJ3XGg%2BLCr1d1OYlVHp4eUHPnerU79ZA%2F1kuv1JQMAg%2BE4O2P23EumF3VkvHprsZKMzKwbRUXFEyTvSIEmTVbrysp%2BWr8wfQHGK6WChVa3bKUmdWou%2BjpArdGkzZ41c1zG%2Fu5uGH4swzd561F%2BuhIT4%2BLnSuPsv9%2BJKIpjNr9dXYOyk7%2FBZrcjIT4eCnoKgedJP4BEqhG77E3NKP31FO7cfQA5K0dSYuLgz2TwCWJSOBzG6crzKK%2BohNfni%2Bx6OMUMMNe%2Fgf7ocbw0v0acKg6J8Ql0q%2BT%2FAXR5PNi5dz9c71upuQqCKFAD%2BYhrZLEAmpodaHO3Qy6TI3NhBpbrshGtOWKOSMYwYGQM8nJzoFJNxP2HjyIQho4PewK6hBktoDcUwtIln4PjOWzflQ%2Be5yl0yCCYgYikTclGlxadio%2BBQCSiW1UXoVGrKYwH4RgMrjU1HAB4vR6LzWYfFUCKxfS8Ftk5qxHoCUQAUkRJaSEokkV6Y%2F%2BJUOC4hn6A39NVXVBYeNP8piH6HeA4fPbpdBQV5KOx0QaL1YppX3Jgk0TwH2Vg6S3u%2BdB91%2B%2FpuNYPYFl5uP5V7ZqvsrX7jxqMXR6ff3gCQSTzFI0a1TX3wIs8ul%2Bq4HuWAAiM39vhOuR1O1fQ2gT%2F26Z8Z5vrl2OHi9OXZn995nLV9aFfS6UC9JeJPfuK0NBohWpCHMSAAsFe74WWP%2BvT25wtP9Bpob6uGqqyDnOtaeumjRu%2ByFu36VntK%2FPA5umTJeUtPWZSU9BCgud661odVp3DZtkc7AnYR33RRC708PrVi1larW7XwZIjLnd7R6SgSqWSNjU1B3F72pz5TZbXmX5vV81Yb7Lg7XT%2FUXriu8XLVqw6c6XqWnBKiiYU%2BMt3wWF7u7i91XlSEITwSAZ%2FCzAAHsJVbwXYFFEAAAAASUVORK5CYII%3D)](https://www.gnu.org/software/bash/) [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity) [![Ask Me Anything !](https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg)](https://GitHub.com/Naereen/ama) [![made-with-Markdown](https://img.shields.io/badge/Made%20with-Markdown-1f425f.svg)](http://commonmark.org) [![Documentation Status](https://readthedocs.org/projects/ansicolortags/badge/?version=latest)](http://ansicolortags.readthedocs.io/?badge=latest) [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/dwyl/esta/issues) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Analytics](https://ga-beacon.appspot.com/UA-38514290-17/github.com/Naereen/badges/README.md)](https://GitHub.com/Naereen/badges/)

**Learning Outcome**, setelah menyelesaikan big project ini adalah peningkatan kemampuan dalam:

- Merancang topologi untuk infrastruktur server yang akan digunakan
- Membuat program otomasi untuk installasi layanan server dengan bash
- Menjakankan lebih dari satu web dan domain didalam sserver
- Dapat memanfaatkan git untuk penyimpanan proyek aplikasi
- Dapat melakukan setup wordpress dengan infrastruktur server sendiri
- Dapat memeriksa log yang ada pada sebuah layanan server

## 1. Requirement
Big Project ini memuat semua materi yang sudah dipelajari selama beberapa pekan terakhir, berikut beberapa requirement yang harus dikerjakan.
- Topologi untuk infrastruktur server
- Bash script untuk otomasi layanan
- 3 buat virtual host dengan aplikasi wordpress

## 2. Goal
Adalah dapat membuat sebuah infrastruktur server on premises sederhana, yaitu layanan webserver dan database server untuk Web Wordpress. Agar memudahkan installasi, Infrastruktur yang dibuat harus dibangun secara automasi dengan script bash, agar ketika nanti membuat infrastruktur yang sama hanya cukup menjalankan script dan web wordpress di simpan di repository Github/Gitlab. Selain itu dengan adanya virtual host dapat membuat beberapa web berjalan dalam satu server, dan dapat melakukan checking pada log yang ada pada sebuah layanan aplikasi.

## 3. Metode dan Desain

Metode yang digunakan dalam pelaksanaan Big-Project ini adalah menggunakan Virtualisasi, dimana PC/Laptop peserta ditambahkan Hypervisor supaya dapat dipasang Virtual Machine (VM, mesin virtual).

Metode virtualisasi dapat dilihat dari gambar berikut:

Desain dari Big Project dapat dilihat dari gambar berikut:

**Penjelasan:** Pada PC/Laptop peserta yang sudah terinstal aplikasi mesin virtual (seperti Oracle Virtualbox atau VMWare Workstation. Kemudian disiapkan 1 buah virtual mesin dengan OS Ubuntu 18.04 (dalam hal ini memakai Ubuntu Server).
Konfigurasi jaringan di virtualbox untuk VM tersebut menggunakan mode Bridge (supaya bisa diakses juga oleh PC/User lain dalam jaringan).

Untuk memudahkan proses pengetesan Big-Project ini, maka dilakukan konfigurasi jaringan untuk VM Ubuntu Server, mode jaringan yang dipilih adalah mode Bridge, dapat dilihat dari gambar dibawah ini:

Proses selanjutnya adalah menyalakan mesin virtual dan dilanjutkan dengan proes instalasi yang sama seperti melakukan instalasi server fisik. Untuk memudahkan proses selanjutnya, maka pada opsi pemilihan paket, maka opsi instalasi OpenSSH agar dipilih, dapat dilihat dari gambar dibawah ini:

Topologi akhir dari Big Project dapat dilihat dari gambar berikut:

**Penjelasan:** Setelah VM Ubuntu menyala, secara logikal topologi antara PC/Laptop User/Host dengan VM Ubuntu seperti gambar diatas. Seolah-olah ada 2 mesin (PC/Laptop dan Server) yang terhubung melalui switch dalam sebuah jaringan dan juga terhubung ke Internet.

Berikut adalah tampilan layar VM Ubuntu Server yang sudah selesai di instalasi:

Langkah-langkah selanjutnya dilakukan dari PC/Laptop User ke VM Ubuntu Server melalui SSH (Secure Shell).

Dari layar VM Ubuntu Server, lakukan pengecekan alamat IP, dapat dilihat dari gambar dibawah ini:

Dari gambar diatas, diketahui alamat IP dari VM Ubuntu Server adalah: 10.100.0.246

Kemudian dari Terminal di PC/Laptop User, lakukan ssh ke VM Ubuntu Server dengan perintah

```bash
ssh 'username'@'ip_vm_ubuntu_server'
-----dalam hal ini:-----

ssh [email protected]
```

Dapat dilihat dari gambar dibawah ini:

Apabila sudah terhubung ke VM Ubuntu Server, selanjutnya adalah melakukan tahapan instalasi menggunakan bash script.

## 4. Langkah otomasi server

### 4.1. Langkah pertama adalah clone repo ini

```bash
cd ~
git clone https://github/com/arfianz/autobash
```

### 4.2. Web Server
Langkah kedua adalah update system file dan install webserver (Apache2 + PHP)

```bash
cd ~/autobash
chmod +x 01-webserver.sh
./01-webserver.sh
```
Progres script bash dalam melakukan otomasi instalasi dapat dilihat dari gambar dibawah ini:

Dan hasil instalasi webserver, dapat diakses dari PC/Laptop User dengan mengakses alamat IP dari mesin virtual, seperti yang terlihat dari gambar dibawah ini:

### 4.3. Database Server
Langkah ketiga adalah melakukan instalasi database servr

```bash
cd ~/autobash
chmod +x 02-dbserver.sh
./02-dbserver.sh
```
Progres script bash dalam melakukan otomasi instalasi dapat dilihat dari gambar dibawah ini:

### 4.4. Aplikasi
Langkah keempat adalah melakukan instalasi aplikasi wordpress untuk 3 virtual hosts

```bash
cd ~/autobash
chmod +x 03-webapp.sh
./03-webapp.sh
```
Progres script bash dalam melakukan otomasi instalasi dapat dilihat dari gambar dibawah ini:

### 4.5. Virtual Hosts
Langkah kelima adalah konfigurasi virtual host web server

```bash
cd ~/autobash
chmod +x 04-virtualhost.sh
./04-virtualhost.sh
```
Progres script bash dalam melakukan otomasi instalasi dapat dilihat dari gambar dibawah ini:

Dapat dilihat juga di PC/Laptop User dilakukan konfigurasi file /etc/hosts dengan menambahkan record alamat IP VM.

### 4.6. Membuat Database

Untuk keperluan aplikasi wordpress, diperlukan database. Maka dari itu dibuatkan script bash untuk membuat database secara otomatis.

Perintah untuk membuat database adalah : ```shell scriptbash ```

```bash
cd ~/autobash
chmod +x 05-createdb.sh
./05-createdb.sh arfian arfianpass
./05-createdb.sh kelas kelaspass
./05-createdb.sh mini minipass
```
Progres script bash dalam melakukan otomasi instalasi dapat dilihat dari gambar dibawah ini:

### 4.7. Konfigurasi Aplikasi

Aplikasi wordpress memerlukan konfigurasi awal seperti memasukkan nilai database dan menambahkan file wp-config.php.

Gambar berikut adalah konfigurasi database untuk salah satu aplikasi wordpress:

Dari hasil pengisian nilai database, maka aplikasi wordpress akan meminta kita untuk menambahkan file wp-config yang isinya sesuai dengan yang diberikan oleh aplikasi, seperti gambar dibawah ini:

Kedua langkah konfigurasi diatas dilakukan untuk ketiga aplikasi (arfian, kelascilsy dan miniclass).

### 4.8. Pengetesan Aplikasi

Setelah proses konfigurasi selesai, maka kita bisa melakukan pengetesan ketiga aplikasi tersebut melalui browser dari PC/Laptop User.

Tampilan aplikasi arfian.local:

Tampilan aplikasi kelascilsy.local:

Tampilan aplikasi miniclass.local:

### 4.9. Monitoring Logs

Untuk melakukan monitoring web server, maka kita bisa melakukannya dengan menganalisa log yang dihasilkan oleh webserver. Gambar dibawah ini menunjukkan Log Akses yang dihasilkan oleh Apache WebServer.

## Demikian Hasil Big-Project Mini Class Linux

## LICENSE

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.