Setup Webserver PHP, MySQL, Nginx di Ubuntu 18.04

Ini adalah catatan pribadi saya tentang langkah-langkah untuk setup Webserver dengan PHP, MySQL dan Nginx. Berikut juga dengan setup SSL LetsEncrypt.

1. Install

Langkah pertama, login ke server anda. Jalankan command sebagai berikut untuk menambahkan key certbot di repo anda.

sudo dpkg-reconfigure tzdata
sudo add-apt-repository ppa:certbot/certbot
sudo add-apt-repository universe
sudo apt-get update && sudo apt-get install nginx php php-fpm php-curl php-mysql mysql-server python-certbot-nginx

Kemudian kita setup MySQL server dan amankan

sudo mysql_secure_installation
sudo mysql -e "CREATE USER username@localhost IDENTIFIED BY '<password>';"
sudo mysql -e "CREATE DATABASE contohdb;"
sudo mysql -e "GRANT ALL PRIVILEGES ON contohdb.* to username@localhost;"
sudo mysql -e "FLUSH PRIVILEGES;"

2. Setup Website

Setelah itu, kita setup website kita, kita ambil contoh domain contoh.com

sudo mkdir -p /var/www/contoh.com/public
sudo chown `whoami` /var/www/contoh.com
sudo nano /etc/nginx/sites-enabled/contoh.com

Edit sebagai berikut

server {
  listen 80;
  listen [::]:80;
  server_name contoh.com www.contoh.com;
  root /var/www/contoh.com/public;
  index index.php index.html;
  location / {
    try_files $uri $uri/ =404;
  }
  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
  }
  location ~ /\.(?!well-known).* { deny all; }
}

Kemudian kita generate HTTPS untuk contoh.com kita.

sudo service nginx reload
sudo certbot --nginx -d www.contoh.com contoh.com

3. Testing

echo '<?php print_r($_SERVER); $pdo=new PDO("mysql:host=localhost;dbname=contohdb;charset=utf8","username", "<password>");' > /var/www/contoh.com/public/test.php
curl -i https://contoh.com/test.php

Terima kasih