Konfigurasi Database Server
Sekarang kita akan melakukan konfigurasi database server menggunakan mariadb (Mysql). Kita juga akan melakukan konfigurasi phpmyadmin untuk interface web nya yang akan dibantu oleh web server nginx. Tidak hanya itu kita juga akan menkonfigurasi agar database kita bisa diakses dari luar jaringan.
Install MariaDB
Install package-package yang diperlukan:
sudo apt-get install software-properties-commonsudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sgp1.mirrors.digitalocean.com/mariadb/repo/10.5/ubuntu focal main'Install MariaDB:
sudo apt-get updatesudo apt-get mariadb-serverLalu jalankan pengamanan awal untuk konfigurasi Mariadb:
sudo mysql_secure_installationPada Pertanyaan yang diajukan seperti berikut:
Enter current password for root (enter for none): enter
Switch to unix_socket authentication [Y/n] y
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] yMembuat User MariaDB
Sekarang kita akan membuat user galih yang mana user ini akan menjadi administrator, karena user root tidak bisa diakses dari luar.
sudo mysql -u root -pCREATE USER 'galih'@'{==%==}' IDENTIFIED BY 'rahasia';GRANT ALL PRIVILEGES ON *.* TO 'galih'@'%';FLUSH PRIVILEGES;exit;Membuat Database MariaDB
Sekarang kita akan membuat database dan user untuk aplikasi lelang dan mailserver (roundcube) kita.
sudo mysql -u root -pKita akan membuat 2 database, yaitu database lelang dan roundcube.
CREATE DATABASE lelang;CREATE DATABASE roundcube;Kita akan membuat 2 user, yaitu user lelang dan user roundcube.
CREATE USER 'lelang'@'%' IDENTIFIED BY 'rahasia';CREATE USER 'roundcube'@'%' IDENTIFIED BY 'rahasia';Kita akan memberikan hak akses penuh kepada user lelang untuk database lelang, dan hak akses penuh kepada user roundcube untuk database roundcube.
GRANT ALL PRIVILEGES ON lelang.* TO 'lelang'@'%';GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'%';Jika sudah tinggal kita apply konfigurasinya.
FLUSH PRIVILEGES;exit;Konfigurasi Bind MariaDB
Sekarang kita akan melakukan konfigurasi MariaDB agar database server kita bisa diakses dari luar.
Silahkan buka file konfigurasi dan cari baris bind-address dan ubah menjadi 0.0.0.0.
bind-address = 0.0.0.0Jika sudah sekarang tinggal me-restart service MariaDB nya.
sudo systemctl restart mariadbInstall PHP
Kita akan menginstall PHP. PHP diperlukan untuk menjalankan service phpmyadmin yang akan kita install nantinya.
sudo add-apt-repository ppa:ondrej/phpsudo apt-get updatesudo apt install php8.2-fpm php8.2-common php8.2-cli php8.2-mbstring php8.2-gd php8.2-intl php8.2-xml php8.2-mysql php8.2-zipPastikan bahwa PHP sudah terinstall.
php -vsudo systemctl status php8.2-fpmInstall Phpmyadmin
Kita akan menkonfigurasikan Phpmyadmin agar kita bisa mengakses database kita lewat browser.
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-english.tar.gzLalu extract file nya.
tar xzvf phpMyAdmin-5.2.1-english.tar.gzPindahkan folder hasil extract dan buat symbolic link ke /var/www/.
sudo mv phpMyAdmin-5.2.1-english /usr/share/phpmyadminsudo ln -s /usr/share/phpmyadmin /var/www/Jika muncul error bahwa /var/www/ tidak ada, maka silahkan install nginx terlebih dahulu!
Install Nginx
Jika sudah maka kita akan menginstall nginx untuk webserver nya.
sudo apt-get updatesudo apt-get install nginxKonfigurasi Server Block
Konfigurasi server block dilakukan agar server kita bisa membuat konfigurasi domain lebih dari satu. Sekarang kita akan menkonfigurasi untuk domain db.myapp.com.
Konfigurasi dan sesuaikan dengan script berikut:
server {
listen 80;
server_name db.myapp.com;
root /var/www/phpmyadmin/;
index index.php index.html;
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
access_log /var/log/nginx/db.access.log;
error_log /var/log/nginx/db.error.log;
}Ekstensi file konfigurasi server block didalam /etc/nginx/conf.d/ harus .conf.
Jika sudah sekarang hanya perlu me-restart nginx.
sudo systemctl restart nginxSekarang silahkan buka http://db.myapp.com dan login dengan user yang sudah dibuat tadi.
Konfigurasi SSL / HTTPS
Sekarang kita akan mencoba menkonfigurasikan agar http://db.myapp.com kita bisa diakses dengan SSL sehingga menjadi https://db.myapp.com (opens in a new tab).
File yang perlu kita siapkan adalah:
- myapp.crt
- myapp.key
Kita telah membuat 2 file tersebut, lalu simpan 2 file tersebut di /home/ubuntu/ssl/.
Konfigurasi ulang dan sesuaikan dengan script berikut:
server {
listen 443 ssl;
ssl_certificate /home/ubuntu/ssl/myapp.crt;==}
ssl_certificate_key /home/ubuntsl/myapp.key}
server_name db.myapp.com;
root /var/www/phpmyadmin/;
index index.php index.html;
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
access_log /var/log/nginx/db.access.log;
error_log /var/log/nginx/db.error.log;
}
server {
listen 80;
server_name db.myapp.com;
return 302 https://$server_name$request_uri;
}Jika sudah sekarang hanya perlu me-restart nginx.
sudo systemctl restart nginxSekarang silahkan buka https://db.myapp.com (opens in a new tab) untuk uji coba.
Common Error
"The configuration file needs a valid key for cookie encryption. A temporary key was automatically generated for you. Please refer to the documentation"
Penyelesaian:
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php$cfg['blowfish_secret'] = 'apaajayangpenting32character123!';"The $cfg['TempDir'] (/usr/share/phpmyadmin/tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this"
Penyelesaian:
sudo mkdir /usr/share/phpmyadmin/tmp/ && sudo chmod 777 /usr/share/phpmyadmin/tmp/$cfg['TempDir'] = 'tmp';