Proses deployment aplikasi web menggunakan Apache: Difference between revisions

From OnnoCenterWiki
Jump to navigationJump to search
Created page with "Berikut adalah **modul lengkap** untuk bagian **"Proses Deployment Aplikasi Web menggunakan Apache"**, sebagai bagian dari kuliah **Pengenalan Deployment Aplikasi Web** untuk..."
 
No edit summary
 
Line 1: Line 1:
Berikut adalah **modul lengkap** untuk bagian **"Proses Deployment Aplikasi Web menggunakan Apache"**, sebagai bagian dari kuliah **Pengenalan Deployment Aplikasi Web** untuk mata kuliah **Web Programming**. Modul ini dirancang untuk **Ubuntu 24.04** dan **tidak menggunakan tools dari Microsoft sama sekali**. Banyak contoh konkret disertakan agar mudah dipahami oleh mahasiswa.
==Tujuan Pembelajaran:==
Setelah mempelajari modul ini, mahasiswa mampu:
* Menginstal dan mengonfigurasi Apache Web Server
* Meletakkan dan menjalankan aplikasi web di server
* Mengatur virtual host dan domain lokal
* Mengamankan aplikasi dengan hak akses file yang tepat


---
==Persiapan Awal==


## 📘 Modul: Proses Deployment Aplikasi Web menggunakan Apache di Ubuntu 24.04
'''Sistem:'''
* Ubuntu Server/Desktop 24.04
* Akses sudo
* Aplikasi web berbasis PHP/HTML/CSS/JS


### 🎯 Tujuan Pembelajaran
==1. Instalasi Apache Web Server==
Setelah mengikuti modul ini, mahasiswa diharapkan mampu:
- Menginstall dan mengkonfigurasi Apache sebagai web server.
- Men-deploy aplikasi web berbasis HTML, PHP, dan Python (Flask) menggunakan Apache.
- Mengatur virtual host untuk lebih dari satu website.
- Menerapkan pengamanan dasar dan struktur produksi.


---
'''Langkah:'''


## 🧱 1. Instalasi dan Persiapan Awal
sudo apt update
sudo apt install apache2 -y


### 1.1 Update Sistem
'''Cek Status:'''
```bash
sudo apt update && sudo apt upgrade -y
```


### 1.2 Install Apache2
sudo systemctl status apache2
```bash
sudo apt install apache2 -y
```


### 1.3 Uji Apache di Browser
> Akses `http://localhost` atau IP server di browser → harus muncul "Apache2 Ubuntu Default Page"
Buka browser dan akses IP server:
```
http://IP_ADDRESS
```
Jika muncul halaman "Apache2 Ubuntu Default Page", maka Apache berhasil terinstall.


---
==2. Instalasi Pendukung (untuk PHP Project)==


## 🔥 2. Keamanan Dasar Server
sudo apt install php libapache2-mod-php php-mysql -y


### 2.1 Aktifkan UFW (Firewall)
'''Cek Versi PHP:'''
```bash
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
```


---
php -v


## 🌐 3. Struktur Direktori Produksi
==3. Struktur Direktori Web==
Apache menyimpan file website di:
```
/var/www/html
```


Namun, untuk produksi lebih rapi digunakan:
'''Lokasi default:'''
```
/var/www/
    ├── web1.com/
    ├── web2.com/
```


Contoh:
`/var/www/html/`
```bash
sudo mkdir -p /var/www/contohsite
sudo chown -R $USER:$USER /var/www/contohsite
```


---
'''Ganti isi default:'''


## 🧪 4. Deploy Website Statis (HTML, CSS, JS)
sudo rm /var/www/html/index.html
sudo nano /var/www/html/index.php


### 4.1 Buat File HTML
'''Isi contoh:'''
```bash
nano /var/www/contohsite/index.html
```


```html
<pre>
<!DOCTYPE html>
<?php
<html>
echo "Halo dunia dari Apache!";
<head><title>Contoh Website</title></head>
?>
<body><h1>Halo Dunia dari Apache!</h1></body>
</pre>
</html>
```


### 4.2 Buat Virtual Host untuk Website
Akses di browser: `http://localhost`
```bash
sudo nano /etc/apache2/sites-available/contohsite.conf
```


```apache
==4. Deploy Aplikasi Web Sederhana==
<VirtualHost *:80>
    ServerAdmin admin@contohsite.local
    ServerName contohsite.local
    DocumentRoot /var/www/contohsite
    ErrorLog ${APACHE_LOG_DIR}/contohsite_error.log
    CustomLog ${APACHE_LOG_DIR}/contohsite_access.log combined
</VirtualHost>
```


### 4.3 Aktifkan Virtual Host
Misal folder aplikasi bernama `projectku`, letakkan di `/var/www/`
```bash
sudo a2ensite contohsite.conf
sudo systemctl reload apache2
```


Tambahkan di `/etc/hosts` lokal agar bisa diuji:
sudo cp -r ~/projectku /var/www/projectku
```
127.0.0.1 contohsite.local
```


Akses di browser: `http://contohsite.local`
==5. Konfigurasi Virtual Host (Multiple Projects)==


---
'''Buat File Config Baru:'''


## 🐘 5. Deploy Aplikasi PHP
sudo nano /etc/apache2/sites-available/projectku.conf


### 5.1 Install PHP
Isi contoh:
```bash
sudo apt install php libapache2-mod-php -y
```


### 5.2 Buat File PHP
<VirtualHost *:80>
```bash
    ServerAdmin webmaster@localhost
sudo nano /var/www/contohsite/index.php
    DocumentRoot /var/www/projectku
```
    ServerName projectku.local
    <Directory /var/www/projectku>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/projectku_error.log
    CustomLog ${APACHE_LOG_DIR}/projectku_access.log combined
</VirtualHost>


```php
'''Aktifkan Virtual Host:'''
<?php
echo "Halo dari PHP!";
?>
```


### 5.3 Uji di browser
sudo a2ensite projectku.conf
`http://contohsite.local/index.php`
sudo systemctl reload apache2


---
'''(Opsional) Tambah ke `/etc/hosts` untuk domain lokal:'''


## 🐍 6. Deploy Aplikasi Flask (Python)
sudo nano /etc/hosts


### 6.1 Install Python dan WSGI
Tambahkan:
```bash
sudo apt install python3 python3-pip python3-venv libapache2-mod-wsgi-py3 -y
```


### 6.2 Setup Project
127.0.0.1    projectku.local
```bash
cd /var/www
python3 -m venv flaskenv
source flaskenv/bin/activate
pip install flask
```


### 6.3 Buat Struktur Aplikasi
> Sekarang akses `http://projectku.local` di browser
```bash
mkdir -p /var/www/flaskapp
cd /var/www/flaskapp
```


**wsgi.py**
```python
from app import app as application
```


**app.py**
==6. Set Hak Akses Folder==
```python
from flask import Flask
app = Flask(__name__)


@app.route("/")
sudo chown -R www-data:www-data /var/www/projectku
def hello():
sudo chmod -R 755 /var/www/projectku
    return "Halo Dunia dari Flask via Apache WSGI!"
```


### 6.4 Konfigurasi Apache
==7. Tambahan: HTTPS dengan Let's Encrypt==
```bash
sudo nano /etc/apache2/sites-available/flaskapp.conf
```


```apache
Jika menggunakan domain publik:
<VirtualHost *:80>
    ServerName flaskapp.local


    WSGIDaemonProcess flaskapp threads=5 python-home=/var/www/flaskenv
sudo apt install certbot python3-certbot-apache -y
    WSGIScriptAlias / /var/www/flaskapp/wsgi.py
sudo certbot --apache -d namadomainkamu.com


    <Directory /var/www/flaskapp>
==Praktik Mahasiswa==
        Require all granted
    </Directory>


    ErrorLog ${APACHE_LOG_DIR}/flaskapp_error.log
'''Tugas Praktik'''
    CustomLog ${APACHE_LOG_DIR}/flaskapp_access.log combined
* Install Apache di Ubuntu lokal atau server
</VirtualHost>
* Deploy proyek web pribadi (HTML/PHP)
```
* Konfigurasi virtual host dengan domain lokal (`.local`)
* Berikan screenshot hasil deploy + isi file konfigurasi


```bash
'''Laporan'''
sudo a2ensite flaskapp.conf
* Penjelasan tahapan deploy
sudo systemctl reload apache2
* Struktur file proyek
```
* Kode virtual host (`.conf`)
* Link GitHub (jika proyek open-source)


Tambahkan ke `/etc/hosts`:
==Referensi==
```
127.0.0.1 flaskapp.local
```


Akses di browser: `http://flaskapp.local`
* [Apache2 Ubuntu Docs](https://ubuntu.com/server/docs/web-servers-apache)
* [DigitalOcean – Apache Virtual Hosts](https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu)
* [Let's Encrypt Certbot](https://certbot.eff.org/instructions)


---


## 🛡️ 7. Menambahkan SSL dengan Let's Encrypt
==Pranala Menarik==


### 7.1 Install Certbot
* [[Web Programming]]
```bash
sudo apt install certbot python3-certbot-apache -y
```
 
### 7.2 Jalankan
```bash
sudo certbot --apache
```
 
---
 
## 🧠 Tips Produksi
 
- Pastikan **permission** direktori `755`, file `644`.
- Log aplikasi dapat dicek di `/var/log/apache2/`
- Gunakan `.env` file untuk menyimpan konfigurasi rahasia.
 
---
 
## 🧪 Tugas Praktikum
 
1. Deploy website HTML sederhana menggunakan Apache.
2. Deploy aplikasi PHP dengan formulir input sederhana.
3. Deploy aplikasi Python Flask menggunakan WSGI dan Apache.
4. Tambahkan konfigurasi VirtualHost dan akses melalui domain lokal.
5. (Opsional) Uji deployment dengan SSL dari Let's Encrypt.
 
---
 
Kalau kamu mau aku bantu konversi modul ini ke **PDF / DOCX / Markdown / format kuliah lainnya**, tinggal bilang. Bisa juga dibuat per bab untuk silabus mingguan.

Latest revision as of 04:46, 8 April 2025

Tujuan Pembelajaran:

Setelah mempelajari modul ini, mahasiswa mampu:

  • Menginstal dan mengonfigurasi Apache Web Server
  • Meletakkan dan menjalankan aplikasi web di server
  • Mengatur virtual host dan domain lokal
  • Mengamankan aplikasi dengan hak akses file yang tepat

Persiapan Awal

Sistem:

  • Ubuntu Server/Desktop 24.04
  • Akses sudo
  • Aplikasi web berbasis PHP/HTML/CSS/JS

1. Instalasi Apache Web Server

Langkah:

sudo apt update
sudo apt install apache2 -y

Cek Status:

sudo systemctl status apache2

> Akses `http://localhost` atau IP server di browser → harus muncul "Apache2 Ubuntu Default Page"

2. Instalasi Pendukung (untuk PHP Project)

sudo apt install php libapache2-mod-php php-mysql -y

Cek Versi PHP:

php -v

3. Struktur Direktori Web

Lokasi default:

`/var/www/html/`

Ganti isi default:

sudo rm /var/www/html/index.html
sudo nano /var/www/html/index.php

Isi contoh:

 <?php
 echo "Halo dunia dari Apache!";
 ?>

Akses di browser: `http://localhost`

4. Deploy Aplikasi Web Sederhana

Misal folder aplikasi bernama `projectku`, letakkan di `/var/www/`

sudo cp -r ~/projectku /var/www/projectku

5. Konfigurasi Virtual Host (Multiple Projects)

Buat File Config Baru:

sudo nano /etc/apache2/sites-available/projectku.conf

Isi contoh:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/projectku
    ServerName projectku.local

    <Directory /var/www/projectku>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/projectku_error.log
    CustomLog ${APACHE_LOG_DIR}/projectku_access.log combined
</VirtualHost> 

Aktifkan Virtual Host:

sudo a2ensite projectku.conf
sudo systemctl reload apache2

(Opsional) Tambah ke `/etc/hosts` untuk domain lokal:

sudo nano /etc/hosts

Tambahkan:

127.0.0.1    projectku.local

> Sekarang akses `http://projectku.local` di browser


6. Set Hak Akses Folder

sudo chown -R www-data:www-data /var/www/projectku
sudo chmod -R 755 /var/www/projectku

7. Tambahan: HTTPS dengan Let's Encrypt

Jika menggunakan domain publik:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d namadomainkamu.com

Praktik Mahasiswa

Tugas Praktik

  • Install Apache di Ubuntu lokal atau server
  • Deploy proyek web pribadi (HTML/PHP)
  • Konfigurasi virtual host dengan domain lokal (`.local`)
  • Berikan screenshot hasil deploy + isi file konfigurasi

Laporan

  • Penjelasan tahapan deploy
  • Struktur file proyek
  • Kode virtual host (`.conf`)
  • Link GitHub (jika proyek open-source)

Referensi


Pranala Menarik