Setup Cloud Server Sendiri - AWS EC2, Amazon Lightsail, Linode, Digital Ocean. Punya server sendiri tu enak sih, daripada nyewa share hosting. Kalo dilihat dari segi biaya, jauh lebih murah 1CPU, 1GB RAM, 40GB SSD, 2TB Bandwith cuma USD 5$ per bulan di Amazon Lightsail. Tapi Kalo Dilihat dari segi teknis sih, kurang efektif saja, apalagi kalo ada client minta dibikinin blog pake server pribadi (dedicated server) bisa nguras waktu banyak. Toh hasilnya sama aja, malah enakan nyewa share hosting yang semi-semi dedicated gitu, meskipun costnya lebih mahal dikit. Selain keamanananya udah dijagain sama yang jualan hosting seperti Dewaweb, Niagahoster, Rumahweb, Domainesia dan masih bantak lagi, server share hosting juga ga ribet pake commandline, semua udah ada GUI (Graphical User Interface) WHM seperti PLESK dan CPANEL.
Environtment Deploy
- Ubuntu 18.04 LTS
- NGINX (Stable Version)
- MySQL 5.5 5.6 ot 5.7
Command Line Basic
Penting banget sih menurutku untuk tau, paham dan hafal basic basic command line yang mau kita pake untuk setup server pertama kali.
Ubuntu 18.04 LTS
Perbedaaan # dan $,
- tanda # menunjukkan perintah user root, dengan previledge
- tanda $ menunjukkan perintah untuk pengguna biasa tanpa previledge
Command Line Update and Upgrade Local Pakcage
$ sudo apt-get update
$ sudo apt-get upgrade
Check Port
$ sudo lsof -i -P -n | grep LISTEN
$ sudo netstat -tulpn | grep LISTEN
$ sudo lsof -i:22 ## see a specific port such as 22 ##
$ sudo nmap -sTU -O IP-address-Here
Check User Ubuntu yang sedang login saat ini
$ whoami
Login Sebagai Root User Ubuntu
$ sudo -i
Configure Root Password
sebelum konfigurasi root password, pertama harus login dulu sebagai root.
$ sudo passwd
Check Free Memory
$ free -h
NGINX
Apa ya nginx itu? simple nya nginx itu web server yang bisa ngasih koneksi SSL (HTTPS) ke nama domain yang akan kita hubungkan ke public IP server. Command line dasar yang penting yaitu:
Sebelum install nginx, harus tahu kita mau install versi development atau stable. Jadi di Ubuntu harus ditambahin argumen stabel baru kita install, caranya:
$ sudo -s
$ nginx=stable
$ add-apt-repository ppa:nginx/$nginx
use nginx=development for latest development version.
kemudia baru di install nginx nya,
$ apt-get update
$ apt-get install nginx
Install NGINX
$ sudo apt-get install nginx
Start Nginx (NGINX START)
$ sudo /etc/init.d/nginx start
Stop Nginx (NGINX STOP)
$ sudo nginx -s stop
atau
$ sudo /etc/init.d/nginx stop
nge-Reload NGINX (NGINX RELOAD)
$ sudo nginx -s reload
atau
$ sudo /etc/init.d/nginx reload
Quit NGINX (NGINX QUIT)
$ sudo nginx -s quit
Restart Nginx (NGINX RESTART)
$ sudo nginx -s restart
atau
$ sudo /etc/init.d/nginx restart
Force Restart Nginx
$ sudo systemctl restart nginx
Uninstall Nginx
$ sudo apt-get purge nginx nginx-common nginx-full
Menggunakan Systemctl Pada Nginx
$ sudo systemctl restart nginx
$ sudo systemctl restart nginx
$ sudo systemctl start nginx
$ sudo systemctl stop nginx
Menggunakan SysVinit Pada Nginx
$ sudo service nginx restart
$ sudo service nginx start
$ sudo service nginx stop
Firewall Ubuntu 18.04 Comannd Line List
Allowing connection HTTP and HTTPS
$ sudo ufw allow 'Nginx Full'
Setting Up Default Polices
$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing
Allowing SSH Connection
$ sudo ufw allow ssh
Allowing ssh port 22
$ sudo ufw allow 22
Allowing ssh port 2222
$ sudo ufw allow 2222
Enabling UFW
$ sudo ufw enable
Checking UFW and Rules
$ sudo ufw status
atau
$ sudo ufw status verbose
Allowing Other Connection
HTTP PORT 80
$ sudo ufw allow 80
HTTTP PORT 443
$ sudo ufw allow 443
Specific Port Other Range
$ sudo ufw allow 6000:6007/tcp
$ sudo ufw allow 6000:6007/udp
Specific IP Addresss
$ sudo ufw allow from 255.0.123.4
atau ip addres with port
$ sudo ufw allow from 203.0.113.4 to any port 22
Disable UFW
$ sudo ufw disable
Reset UFW
$ sudo ufw reset
Status UFW Numbered
$ sudo ufw status numbered
Numbered Output:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
Delete UFW Rules dengan number:
$ sudo ufw number 2
Delete UFW Rules tanpa number:
$ sudo ufw delete allow http
atau:
$ sudo ufw delete allow 80
UFW Rules List
$ sudo ufw app list
list yang tampil:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
UFW Add Rules Argument
$ sudo ufw allow 'Nginx Full'
Redirect WWW ke non-WWW
untuk bisa ke redirect www ke non-www, pertama banget, harus bikin file extensi .conf di directory /etc/nginx/conf.d
$ cd /etc/nginx/conf.d
lalu bikin filenya:
$ touch redirect.conf
terus buka file pake nano atau vim:
$ cd /etc/nginx/conf.d
$ nano redirect.conf
masukin codingan dibawah ini:
server {
server_name www.domainkamu.com;
return 301 $scheme://domainkamu.com$request_uri;
}
setelah itu restart nginxnya, lalu check konfigurasinya sudah bener atau belum.
$ curl -I http://example.com
Redirect non-WWW ke WWW
sama kayak cara diatas untuk bisa ke redirect non-www ke www, pertama banget, harus bikin file extensi .conf di directory /etc/nginx/conf.d
$ cd /etc/nginx/conf.d
lalu bikin filenya:
$ touch redirect.conf
terus buka file pake nano atau vim:
$ cd /etc/nginx/conf.d
$ nano redirect.conf
masukin codingan dibawah ini:
server {
server_name domainkamu.com;
return 301 $scheme://www.domainkamu.com$request_uri;
}
setelah itu restart nginxnya, lalu check konfigurasinya sudah bener atau belum.
$ curl -I http://example.com
MySQL
Install MySQL
$ sudo apt-get install mysql-server
MySQL Version Check
$ mysql -v
Start MySQL
$ /etc/init.d/mysqld start
atau
$ service mysqld stop
atau
$ service mysql stop
Stop MySQL
$ /etc/init.d/mysqld stop
atau
$ service mysqld stop
atau
$ service mysql stop
Configure Instalation Root User dan Password MySQL
$ mysql_secure_installation
validasi password plugin
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
jika pilih yes maka akan muncul:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
...
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
Configurasi MYSQL User dan Password Root Cara Langsung
To set a password, run
$ sudo mysql
Now update your user with this password
Replace 'password' with your password, but keep the quote marks!
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Then exit MySQL
$ quit
Login MySQL
$ mysql -u root -p
-u root nunjukin username login adalah root lalu masukin passwordnya.
atau, untuk unix shell pakai -h :
$ [mysql dir]/bin/mysql -h hostname -u root -p
Command Line Didalam MySQL, syaratnya harus masuk (login) ke mysql
Show Databases
show databases;
Create Database
create database [namadatabase];
misal :
create databases sanengineer_db;
jangan lupa ngasih titik koma diakhir command.
Show MySQL User
SELECT user FROM mysql.user;
Add Host Column
SELECT user,host FROM mysql.user;
Select Version Statement
SELECT VERSION();
Show Variables Like Statement
SHOW VARIABLES LIKE ‘%version%’;
Status Command Line
STATUS;
Switch to a database
use [db name];
To see all the tables in the db
show tables;
To see database's field formats
describe [table name];
To delete a db
drop database [database name];
To delete a table
drop table [table name];
Show all data in a table
SELECT * FROM [table name];