Web Server (Nginx) Ubuntu 22.04 #1 - Instalasi Aplikasi Nginx, PHP-FPM dan Maria DB

Web server adalah sebuah aplikasi yang memberikan layanan berupa text, gambar, audio dan video. Berfungsi untuk menerima permintaan HTTP atau HTTPS dari pengguna menggunakan aplikasi web browser (Chrome, Firefox, dll), kemudian akan memberikan/mengirim respon atas permintaan tersebut kepada pengguna dalam bentuk halaman web.

Berikut ini langkah - langkah instalasi Web Server Nginx : 

1. Instalasi Nginx

apt -y install nginx

2. Melihat Service Nginx

service nginx status


3. Menguji Hasil Instalasi (Menggunakan Browser)


4. Instalasi PHP-FPM

apt -y install php-fpm

5. Service PHP-FPM

service php8.1-fpm status

6. Install Database : Maria DB

apt -y install mariadb-server

7. Service Maria DB

service mariadb status

8. Menguji Instalasi Maria DB (Menggunakan Terminal)

mysql -u root -p



Mengaktifkan Mode ReWrite Debian - Server




Mode ReWrite adalah sebuat module Dalam Apache yang dapat menghilangkah penulisan index.php pada URL sebuah website. Sehingga dengan metode ini URL Seakan - akan terlihat seperti membuka folder. 

Langkah - Langkahnya :

Aktifkan Module Rewrite dengan perintah 

sudo a2enmod rewrite

Tambahkan Konfigurasi Server Apache pada /etc/apache2/sites-available/000-default.conf

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

Restart Service Apache

sudo systemctl restart apache2

API Python (Flask dan MongoDB) #8 - Menghapus Data


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
@app.route('/hapus', methods=['POST'])
def hapus():
try:
data = request.form.to_dict()
data_token = jwt.decode(data['token'], secret_key, algorithms=['HS256'], verify=True)
mahasiswa_id = data_token['_id']
matkul = mongo.db['matkul'].find_one({'_id': ObjectId(data['matkul_id']), 'mahasiswa_id': mahasiswa_id})
if not matkul:
return jsonify({'info': 'Data Tidak Ditemukan'}), 404
mongo.db['matkul'].delete_one({'_id': ObjectId(data['matkul_id'])})
return jsonify({'info': 'Matkul Berhasil Di Hapus!'})
except jwt.ExpiredSignatureError:
return jsonify({'info': 'Token Kedaluwarsa'})
except jwt.InvalidTokenError:
return jsonify({'info': 'Token Salah'})


...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman

Method : POST 
URL : http://localhost:5000/hapus
Form data : 
    token => ambil_dari Login
    matkul_id => id_matkul









API Python (Flask dan MongoDB) #7 - Mengubah Data


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
from bson import ObjectId
...

@app.route('/ubah', methods=['POST'])
def ubah():
try:
data = request.form.to_dict()
data_token = jwt.decode(data['token'], secret_key, algorithms=['HS256'], verify=True)
mahasiswa_id = data_token['_id']
matkul = mongo.db['matkul'].find_one({'_id': ObjectId(data['matkul_id']), 'mahasiswa_id': mahasiswa_id})
if not matkul:
return jsonify({'info': 'Matakuliah Tidak Ditemukan', 'id' : data['matkul_id'], 'mahasiswa_id': mahasiswa_id}), 404
ubah_data = {
'nama': data['nama'],
'dosen': data['dosen']
}
mongo.db['matkul'].update_one({'_id': ObjectId(data['matkul_id'])}, {'$set': ubah_data})
return jsonify({'info': 'Data Berhasil Di Ubah!'})
except jwt.ExpiredSignatureError:
return jsonify({'info': 'Token Kedaluwarsa'})
except jwt.InvalidTokenError:
return jsonify({'info': 'Token Salah'})

...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/ubah
Form data : 
    token => ambil_dari Login
    matkul_id => sesuai_id
    nama => Bahasa Indonesia
    dosen => Dosen Bahasa



API Python (Flask dan MongoDB) #6 - Menampilkan Data


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
@app.route('/tampil', methods=['POST'])
def tampil():
try:
data = request.form.to_dict()
data_token = jwt.decode(data['token'], secret_key, algorithms=['HS256'], verify=True)
mahasiswa_id = data_token['_id']
matkuls = mongo.db['matkul'].find({'mahasiswa_id': mahasiswa_id})
result = []
for matkul in matkuls:
result.append({
'id': str(matkul['_id']),
'nama': matkul['nama'],
'dosen': matkul['dosen']
})
return jsonify({'info': 'OK','data' : result})
except jwt.ExpiredSignatureError:
return jsonify({'info': 'Token Kedaluwarsa'})
except jwt.InvalidTokenError:
return jsonify({'info': 'Token Salah'})

...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/tampil
Form data : 
    token => ambil_dari Login
 





API Python (Flask dan MongoDB) #5 - Insert Data


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
@app.route('/tambah', methods=['POST'])
def tambah():
try:
data = request.form.to_dict()
data_token = jwt.decode(data['token'], secret_key, algorithms=['HS256'], verify=True)
mahasiswa_id = data_token['_id']
matkul = mongo.db['matkul'].insert_one({'nama': data['nama'], 'dosen': data['dosen'], 'mahasiswa_id': mahasiswa_id})
return jsonify({'info': 'Mata Kuliah Berhasil Disimpan', 'id': str(todo_id.inserted_id)})
except jwt.ExpiredSignatureError:
return jsonify({'info': 'Token Kedaluwarsa'})
except jwt.InvalidTokenError:
return jsonify({'info': 'Token Salah'})

...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/login
Form data : 
    nama => Bahasa
    dosen => Dosen 1
    token => ambil_dari Login
 



API Python (Flask dan MongoDB) #4 - Login dan Token


1. Buka Project pada tutorial ke 2
2. Tambahkan Perintah Berikut ini 
...
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import timedelta, datetime
import jwt
...

@app.route("/login",methods=['POST'])
def login():
data = request.form.to_dict()

user = mongo.db['mahasiswa'].find_one({'nim': data['nim']})
if not user or not check_password_hash(user['sandi'],data['sandi']):
return jsonify({'info': 'Username dan Sandi Salah'}), 401
payload = {'_id': str(user['_id']), 'exp': datetime.utcnow()+timedelta(minutes=130)}
access_token = jwt.encode(payload, secret_key, algorithm='HS256')
return jsonify({'access_token': access_token})


...
3. Pastikan Project Sudah Di Run
4. Uji Coba di Postman
Method : POST 
URL : http://localhost:5000/login
Form data : 
    nim => 1001
    sandi => 123

Keluar Token yang akan digunakan untuk melakukan manipuasi data