Saya akan memberi 2 cara, untuk LAMP (Linux, Apache, MySQL, PHP) dan LEMP (Linux, Nginx, MySQL, PHP). Dilengkapi dengan peladen FTP untuk mengunggah file ke /var/www/
LAMP
Memasang perangkat lunak yang diperlukan
apt update && apt upgrade && apt install apache2 mysql-server php libapache2-mod-php php-mysql && apt install php-curl php-gd php-json php-mbstring php-xml php-zip php-bz2 php-intl php-ldap php-imap php-bcmath php-gmp php-memcached php-imagick
perintah ini akan memperbaharui sistem linux kita dan memasang apache, mysql, php, dan ekstensi php yang sering digunakan
Konfigurasi Apache
Secara default Apache sudah bisa membawa file php. konfigurasi dibawah hanya akan membuat Apache membaca file .htaccess
Buka nano dan edit file konfigurasi Apache
nano /etc/apache2/apache2.conf
Cari bagian <directory /var/www/>. Dan ganti AllowOverride None ke AllowOverride All
## Sebelum
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
## Sesudah
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Setelah itu simpan perubahan, dan mulai ulang Apache
service apache2 restart
Konfigurasi MySQL
Jalankan perintah dibawah ini
mysql_secure_installation
Jika sudah selesai, buat user baru. Dengan cara
CREATE USER 'contoh'@'localhost' IDENTIFIED BY 'password';
Lalu buat user tersebut dapat mengakses seluruh basis data
GRANT ALL PRIVILEGES ON *.* TO 'contoh'@'localhost';
Dan selesaikan dengan
FLUSH PRIVILEGES;
LEMP
Memasang perangkat lunak yang diperlukan
apt update && apt upgrade && apt install nginx mysql-server php-fpm php-mysql && apt install php-curl php-gd php-json php-mbstring php-xml php-zip php-bz2 php-intl php-ldap php-imap php-bcmath php-gmp php-memcached php-imagick
perintah ini akan memperbaharui sistem linux kita dan memasang nginx, mysql, php, dan ekstensi php yang sering digunakan
Konfigurasi Nginx
Secara default Nginx tidak bisa memproses file php. Untuk mengatifkannya anda harus mengganti beberapa konfigurasi.
Buka nano dan edit file konfigurasi Nginx
nano /etc/nginx/sites-available/default
Ganti beberapa konfig di index
# Sebelum
index index.html index.htm index.nginx-debian.html;
# Sesudah
index index.php index.html index.htm;
Ganti beberapa konfig di location ~ \.php$
## Sebelum
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
## Sesudah
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
Konfigurasi MySQL
Jalankan perintah dibawah ini
mysql_secure_installation
Jika sudah selesai, buat user baru. Dengan cara
CREATE USER 'contoh'@'localhost' IDENTIFIED BY 'password';
Lalu buat user tersebut dapat mengakses seluruh basis data
GRANT ALL PRIVILEGES ON *.* TO 'contoh'@'localhost';
Dan selesaikan dengan
FLUSH PRIVILEGES;
VSFTPD
Perintah ini disalin dari iSmooth Blog How to Install FTP Server for Apache or Nginx on Ubuntu 20.04. Jadi terima kasih iSmooth Blog
Untuk fitur FTP kita akan menggunakan VSFTPD. Lokasi folder FTP akan diarahkan ke /var/www/. Untuk memasang perangkat lunak tersebut bisa dilakukan dengan
apt install vsftpd && chgrp -R www-data /var/www/* && find /var/www -type f -exec chmod 664 {} \; && find /var/www -type d -exec chmod 775 {} \; && find /var/www -type d -exec chmod g+s {} \; && chown root:root /var/www && ufw allow 20,21,22,990,40000:50000/tcp
Setelah itu kita buat akun FTP
useradd sftp -d /var/www
passwd sftp
adduser sftp www-data
echo "DenyUsers sftp" >> /etc/ssh/sshd_config
systemctl reload sshd
* username sftp dapat diganti
Back-up file konfig bawaan, buat file konfig baru dan edit konfigurasi VSFTPD
mv /etc/vsftpd.conf /etc/vsftpd.conf.txt
nano /etc/vsftpd.conf
Masukkan konfigurasi dibawah ini
# FTP
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
force_dot_files=YES
pasv_min_port=40000
pasv_max_port=50000
allow_writeable_chroot=YES
# SSL
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
Aktifkan SSL diatas TLS untuk VSFTPD
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Mulai ulang VSFTPD
systemctl restart vsftpd