Cara Menginstal LEMP Stack Nginx, MySQL, PHP di Debian 11. Dalam panduan ini Anda akan mempelajari cara menginstal Nginx, MySQL 8.0 dan PHP 8.1.
Anda juga akan menginstal beberapa ekstensi PHP umum dan menyesuaikan konfigurasi PHP. Terakhir, Anda akan mengamankan penyiapan dengan Let's Encrypt SSL dan mengonfigurasi pengalihan HTTPS.
Penyiapan ini diuji di Google cloud, sehingga akan berfungsi di semua layanan hosting cloud seperti AWS, Azure, atau VPS apa pun, atau server khusus apa pun yang menjalankan Debian 11.
Prasyarat
- Akses root ke server Anda atau pengguna sudo.
- Domain menunjuk ke IP server Anda untuk menginstal Let'sEncrypt SSL
Langkah 1:Setup Inisialisasi
Mulailah dengan memperbarui paket ke versi terbaru yang tersedia menggunakan perintah berikut.
sudo apt update sudo apt upgrade
Instal paket wget.
sudo apt install wget
Setelah Anda memperbarui penyiapan, Anda dapat memulai penyiapan.
Langkah 2:Instal Nignx
Instal Nginx menggunakan perintah berikut.
sudo apt install nginx
Ini akan menginstal nginx
dan semua dependensi yang diperlukan.
Langkah 3:Siapkan Firewall
Sekarang Anda dapat mengatur Uncomplicated Firewall (UFW) dengan Nginx untuk mengizinkan akses publik pada port web default untuk HTTP
dan HTTPS
sudo ufw app list
Anda akan melihat semua aplikasi yang terdaftar.
Output Available applications: Nginx Full Nignx HTTP Nginx HTTPS OpenSSH
- HTTP Nginx :Profil ini membuka port
80
(lalu lintas web normal dan tidak terenkripsi) - Nginx Penuh :Profil ini membuka kedua port
80
(lalu lintas web normal, tidak terenkripsi) dan port443
(lalu lintas terenkripsi TLS/SSL) - HTTPS Nginx :Profil ini hanya membuka port
443
(lalu lintas terenkripsi TLS/SSL) - OpenSSH :Profil ini membuka port
22
untuk akses SSH.
Jika Anda tidak akan menggunakan SSL, Anda hanya perlu mengaktifkan profil HTTP Nginx.
Sekarang kita akan mengaktifkan Nginx Full.
sudo uff allow OpenSSH sudo ufw allow 'Nginx Full'
Dengan perintah ini Anda dapat melihat status UFW.
sudo ufw status
Anda akan melihat output sebagai berikut.
Output Status: active To Action From -- ------ ---- Nginx Full ALLOW Anywhere OpenSSH ALLOW Anywhere Nginx Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Langkah:4 Periksa Instalasi Nginx
Setelah Nginx diinstal, dimulai secara otomatis dan sudah aktif dan berjalan.
Setiap proses di Nginx dikelola dengan systemctl
memerintah. Periksa status Nginx dengan perintah berikut.
sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2022-02-03 03:13:00 UTC; 6h ago Docs: man:nginx(8) Process: 11261 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code> Process: 11262 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, > Main PID: 11263 (nginx) Tasks: 3 (limit: 8622)
Sekarang kita telah menginstal dan mengkonfigurasi Firewall Nignx.
Langkah 5:Instal MySQL
Untuk menambahkan repositori MySQL APT ke sistem Anda, buka halaman unduh repositori dan unduh paket rilis terbaru menggunakan perintah berikut.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
Instal paket rilis.
sudo apt install ./mysql-apt-config_0.8.22-1_all.deb
Kami akan menginstal MySQL versi 8.0. Pilih OK dengan menekan Tab dan tekan Enter (seperti yang ditunjukkan pada gambar di atas).
Sekarang Anda dapat menginstal MySQL.
sudo apt update sudo apt install mysql-server
Setelah instalasi selesai, layanan MySQL akan dimulai secara otomatis. Untuk memverifikasi bahwa server MySQL sedang berjalan, ketik:
sudo service mysql status
Output harus menunjukkan bahwa layanan diaktifkan dan berjalan:
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Main PID: 101929 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1148) Memory: 369.3M CPU: 805ms CGroup: /system.slice/mysql.service └─101929 /usr/sbin/mysqld Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server... Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.
Langkah 6:Amankan MySQL
Instalasi MySQL dilengkapi dengan skrip bernama mysql_secure_installation
yang memungkinkan Anda meningkatkan keamanan server MySQL dengan mudah.
sudo mysql_secure_installation
Anda akan diminta untuk mengonfigurasi VALIDATE PASSWORD PLUGIN
yang digunakan untuk menguji kekuatan kata sandi pengguna MySQL dan meningkatkan keamanan.
Tekan y
jika Anda ingin menyiapkan plugin validasi kata sandi atau kunci lain untuk pindah ke langkah berikutnya.
Ada tiga tingkat kebijakan validasi kata sandi, rendah, sedang, dan kuat.
Masukkan 2 untuk validasi kata sandi yang kuat.
Pada prompt berikutnya, Anda akan diminta untuk mengatur kata sandi untuk pengguna root MySQL.
Jika Anda mengatur plugin validasi kata sandi, skrip akan menunjukkan kekuatan kata sandi baru Anda. Ketik y
untuk mengonfirmasi kata sandi.
Selanjutnya, Anda akan diminta untuk menghapus pengguna anonim, membatasi akses pengguna root ke mesin lokal, menghapus database pengujian, dan memuat ulang tabel hak istimewa. Anda harus menjawab y
untuk semua pertanyaan.
Langkah 7:Instal PHP
Tambahkan PPA SURY untuk PHP 8.1
sudo apt -y install lsb-release apt-transport-https ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Sekarang Anda dapat menambahkan PPA ke paket server.
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
Perbarui paket dan instal PHP 8.1
sudo apt update sudo apt install php php8.1-fpm php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y
Setelah PHP terinstal, Anda dapat memeriksa versi menggunakan perintah berikut.
php -v
Langkah 8:Konfigurasi PHP
Sekarang kita mengkonfigurasi PHP untuk Aplikasi Web dengan mengubah beberapa nilai di php.ini
berkas.
Untuk PHP 8.1 dengan Nginx php.ini
lokasi akan berada di direktori berikut.
sudo nano /etc/php/8.1/fpm/php.ini
Tekan F6
untuk mencari di dalam editor dan memperbarui nilai berikut untuk kinerja yang lebih baik.
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
Setelah Anda mengubah pengaturan PHP, Anda perlu memulai ulang PHP-FPM agar perubahan diterapkan.
sudo service php8.1-fpm restart
Langkah 9:Konfigurasi Nginx
Nonaktifkan konfigurasi Nginx default.
sudo rm -rf /etc/nginx/sites-enabled/default sudo rm -rf /etc/nginx/sites-available/default
Buat direktori situs web.
sudo mkdir -p /var/www/html/domainname/public
Siapkan izin yang benar.
sudo chmod -R 755 /var/www/html/domainname sudo chown -R www-data:www-data /var/www/html/domainname
Buat konfigurasi blok server baru.
sudo nano /etc/nginx/sites-available/domainname.conf
Tempelkan konfigurasi berikut di file baru.
server { listen 80; listen [::]:80; server_name yourdomainname.com www.yourdomainname.com; root /var/www/html/domainname/public; index index.html index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
Aktifkan konfigurasi baru.
sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf
Langkah 10:Instal Let's Encrypt SSL
HTTPS adalah protokol untuk komunikasi yang aman antara server (instance) dan klien (web browser). Karena pengenalan Let's Encrypt, yang menyediakan sertifikat SSL gratis, HTTPS diadopsi oleh semua orang dan juga memberikan kepercayaan kepada audiens Anda.
Di sini kita akan menginstal Certbot untuk menginstal Let'sEncrypt SSL menggunakan Snap.
sudo apt update sudo apt install snapd -y sudo snap install core sudo snap refresh core
Instal alat Certbot.
sudo snap install --classic certbot
Konfigurasikan Certbot agar dapat dieksekusi sebagai perintah.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Sekarang kami telah menginstal Certbot untuk menginstal Let's Encrypt untuk Debian 11.
Jalankan perintah berikut untuk menginstal sertifikat Anda.
sudo certbot --nginx --agree-tos --redirect -m [email protected] -d domainname.com -d www.domainname.com
Pilih opsi yang sesuai dan tekan Enter
Perintah ini akan menginstal SSL Gratis, mengonfigurasi pengalihan ke HTTPS, dan memulai ulang server Nginx.
Langkah 11:Memperbarui Sertifikat SSL
Sertifikat yang diberikan oleh Let's Encrypt hanya berlaku selama 90 hari, jadi Anda harus sering memperbaruinya. Jadi, mari kita uji fitur pembaruan menggunakan perintah berikut.
sudo certbot renew --dry-run
Perintah ini akan menguji masa berlaku sertifikat dan mengonfigurasi fitur yang dapat diperbarui secara otomatis.
Langkah:12:Uji Penyiapan
Setelah Anda melakukan langkah-langkah yang dapat Anda lakukan, Anda dapat membuat file PHP pengujian baru di direktori web Anda.
sudo nano /var/www/html/domainname/public/info.php
Rekatkan kode di bawah ini di dalam file.
<?php phpinfo();
Simpan file.
Sekarang lanjutkan dan periksa nama domain Anda dengan info.php
di url (domainname.com/info.php
).
Anda akan melihat bahwa domain Anda dialihkan ke HTTPS dan melihat detail informasi PHP.
Tingkatkan Karir Administrasi Linux Anda dengan menyelesaikan kursus pelatihan dan dapatkan pekerjaan impian Anda.
Kesimpulan
Sekarang Anda telah mempelajari cara menginstal LEMP stack di Debian 11 dengan Let'sEncrypt SSL.
Terima kasih atas waktunya. Jika Anda menghadapi masalah atau umpan balik, silakan tinggalkan komentar di bawah.