GNU/Linux >> Belajar Linux >  >> AlmaLinux

Cara Install LEMP Stack (Nginx, MariaDB, dan PHP) di AlmaLinux 8

LEMP adalah kumpulan perangkat lunak sumber terbuka yang biasa digunakan bersama untuk melayani aplikasi web. Istilah LEMP adalah akronim yang mewakili konfigurasi sistem operasi Linux dengan Nginx (diucapkan engine-x , maka E dalam akronimnya) server web, dengan data situs disimpan dalam database MySQL atau MariaDB dan konten dinamis yang diproses oleh PHP yang populer digunakan untuk menghosting situs web ekstensif karena kinerja dan skalabilitasnya.

Dalam tutorial berikut, Anda akan mempelajari cara menginstal LEMP (Nginx, MariaDB, PHP 8.0) di AlmaLinux 8 .

Prasyarat

  • OS yang Disarankan: AlmaLinux 8.
  • Akun pengguna: Akun pengguna dengan hak istimewa sudo atau akses root (perintah su) .

Memperbarui Sistem Operasi

Perbarui AlmaLinux . Anda sistem operasi untuk memastikan semua paket yang ada mutakhir:

sudo dnf upgrade --refresh -y

Tutorial akan menggunakan perintah sudo dan dengan asumsi Anda memiliki status sudo . Untuk memverifikasi status sudo di akun Anda:

sudo whoami

Contoh keluaran yang menunjukkan status sudo:

[joshua@localhost ~]$ sudo whoami
root

Jika Anda belum membuat akun pengguna sudo dan ingin melakukannya, kunjungi tutorial kami di Cara Menambahkan Pengguna ke Sudoers di AlmaLinux .

Untuk menggunakan akun root , gunakan perintah berikut dengan kata sandi root untuk masuk.

su

Instal Nginx

Untuk memulai instalasi tumpukan LEMP, Anda perlu menginstal server web Nginx, yang dapat dilakukan dengan perintah terminal berikut:

sudo dnf install nginx

Contoh keluaran:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Konfirmasi instalasi dengan memeriksa versi build:

nginx -v

Contoh keluaran:

nginx version: nginx/1.14.1

Secara default, saat menginstal Nginx di AlmaLinux, itu tidak diaktifkan. Untuk mengaktifkan saat boot dan memulai, gunakan yang berikut ini:

sudo systemctl enable nginx && sudo systemctl start nginx

Contoh berhasil mengaktifkan (symlink) :

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

Sekarang, periksa untuk melihat status layanan Nginx Anda dengan perintah terminal berikut:

systemctl status nginx

Contoh keluaran yang mengatakan semuanya baik-baik saja:

Sebaiknya izinkan lalu lintas HTTP melalui firewall Anda dengan perintah berikut:

sudo firewall-cmd --zone=public --add-service=http --permanent 

Muat ulang firewall dengan perintah berikut:

sudo firewall-cmd --reload

Sekarang, Anda dapat mengonfirmasi bahwa server web Nginx Anda beroperasi dengan memasukkan HTTP://server-ip atau HTTP://nama-domain di Peramban Internet Anda, dan Anda akan mendapatkan yang berikut ini:

Instal dan Konfigurasi MariaDB

Pemasangan

MariaDB adalah pengganti drop-in untuk MySQL dan dikembangkan oleh mantan anggota tim MySQL yang khawatir bahwa Oracle dapat mengubah MySQL menjadi produk sumber tertutup dan berpotensi berbayar.

Masukkan perintah berikut untuk menginstal MariaDB:

sudo dnf install mariadb-server mariadb

Contoh keluaran:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Untuk mengonfirmasi instalasi MariaDB dan untuk memeriksa build apa yang diinstal, ketik perintah berikut:

mysql --version

Contoh keluaran:

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

Secara default, MariaDB tidak diaktifkan sama seperti Nginx sebelumnya. Untuk memulai dan mengaktifkan MariaDB pada boot sistem, gunakan (systemctl) berikut ini perintah terminal:

sudo systemctl enable mariadb && sudo systemctl start mariadb

Contoh berhasil mengaktifkan (symlink) :

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Sekarang, pastikan semuanya beroperasi dengan perintah berikut:

systemctl status mariadb

Contoh keluaran yang mengatakan semuanya baik-baik saja:

Konfigurasi

Sekarang setelah MariaDB aktif dan berjalan di sistem AlmaLinux Anda, Anda perlu menjalankan skrip keamanan pasca-instalasi karena pengaturan default perlu ditinjau karena sering kali tidak aman. Ini sangat disarankan untuk tidak dilewati.

Pertama, jalankan perintah instalasi aman MariaDB sebagai berikut:

sudo mysql_secure_installation

Selanjutnya, Anda akan diberikan prompt yang meminta Anda memasukkan (kata sandi root MariaDB). Untuk saat ini, tekan (ENTER) key karena kata sandi root belum disetel seperti di bawah ini:

Selanjutnya, ketik (Y) dan tekan enter untuk menyiapkan (root) sandi seperti di bawah ini:

Rangkaian pertanyaan berikutnya yang dapat Anda tekan dengan aman (ENTER) , yang akan menjawab (Y) untuk semua pertanyaan berikutnya yang meminta Anda untuk (menghapus pengguna anonim, menonaktifkan login root jarak jauh, dan menghapus database pengujian) . Perhatikan (Y) dikapitalisasi, artinya itu adalah jawaban default ketika Anda menekan tombol (ENTER) kunci.

Contoh di bawah ini:

Ikhtisar tentang apa yang seharusnya dilakukan di atas:

  • Menyetel sandi untuk root akun.
  • Menghapus akun root yang dapat diakses dari luar host lokal.
  • Menghapus akun pengguna anonim.
  • Menghapus database pengujian, yang secara default dapat diakses oleh pengguna anonim.

Langkah ini penting untuk keamanan database MariaDB dan tidak boleh diubah atau dilewati kecuali Anda tahu apa yang Anda lakukan.

Sekarang, login ke terminal database MariaDB dengan perintah berikut:

sudo mysql -u root -p

Anda akan diminta untuk memasukkan kata sandi root yang Anda tetapkan baik dalam pengaturan instalasi atau skrip keamanan pasca-instalasi. Setelah berada di dalam instance layanan MySQL, Anda dapat menjalankan perintah berikut sebagai pengujian untuk melihatnya beroperasi.

Ketik perintah SHOW DATABASE berikut ini :

SHOW DATABASES;

Bagi mereka yang baru mengenal MySQL dan MariaDB, semua perintah harus diakhiri dengan “.

Contoh:

Untuk keluar dari terminal database MariaDB, ketik (exit;) sebagai berikut:

exit;

Instal PHP (PHP-FPM)

Impor Repositori PHP 8.0

Bagian terakhir yang harus diinstal dalam instalasi LEMP Anda adalah PHP. Anda perlu menginstal (PHP-FPM) yang merupakan kependekan dari (FastCGI Process Manager) . Sangat disarankan untuk menginstal PHP (Remi) gudang. Bagi mereka yang tidak tahu, Remi adalah pengelola rilis PHP di keluarga Rhel. Untuk tutorialnya kita akan install PHP 8.0 terbaru:

Tugas pertama adalah menginstal (EPEL ) repositori, yang merupakan singkatan dari (Paket Ekstra untuk Linux Perusahaan). Untuk pengguna Rhel dan AlmaLinux yang lebih baru, EPEL berisi paket perangkat lunak yang paling umum digunakan untuk Enterprise Linux.

Untuk menginstal EPEL, gunakan (dnf) berikut ini perintah terminal:

sudo dnf install epel-release

Contoh keluaran:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Sekarang setelah Anda menambahkan repositori EPEL, aktifkan (Remi repositori) dengan sebagai berikut:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Selanjutnya, gunakan (dnf) perintah untuk memperbarui daftar repositori Anda:

sudo dnf update

Anda akan melihat kueri di terminal Anda tentang mengimpor (kunci GPG) untuk repositori Remi seperti di bawah ini:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Perhatikan bahwa Anda akan diminta dua kali lagi untuk mengetik (Y) dua kali lagi untuk mengimpor lebih banyak kunci GPG. Ini bagus untuk dilakukan.

Selanjutnya, Anda akan diminta untuk mengupgrade rilis EPEL:

Contoh:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Repositori EPEL Anda sekarang sudah diperbarui, dan Anda siap untuk melanjutkan ke bagian berikutnya dari tutorial.

Aktifkan Repositori PHP 8.0 (Remi)

PHP 7.2 adalah pilihan PHP default untuk instalasi standar di Rhel/Alma Linux dengan repositori Remi. Tip cepat adalah dengan menggunakan (daftar php) perintah untuk melihat opsi yang tersedia dan default. Perintah berikut dapat melakukan ini:

sudo dnf module list php

Anda akan mendapatkan output berikut seperti di bawah ini. Perhatikan (d) tag untuk PHP default yang akan diinstal:

Seperti yang Anda lihat di atas, tag (d) ada di sebelah PHP 7.2, yang perlu Anda atur ulang dan ubah untuk melanjutkan menginstal PHP 8.0 di AlmaLinux. Untuk mereset daftar PHP sangatlah mudah dengan perintah berikut:

sudo dnf module list reset php

Selanjutnya, aktifkan PHP 8.0 dengan perintah berikut:

sudo dnf module enable php:remi-8.0 -y

Contoh keluaran setelah selesai:

Catatan, Anda dapat mengaktifkan PHP-7.4 dengan mengikuti perintah reset modul dnf dan menggunakan modul dnf aktifkan perintah php:remi-7.4 sebagai gantinya. Pilih versi yang Anda perlukan untuk aplikasi, dan ini hanyalah contoh memiliki versi PHP terbaru dari pilihan PHP apa pun yang Anda putuskan.

Instal PHP 8.0

Sekarang Anda telah menambahkan repositori Remi PHP dan mengaktifkan PHP 8.0 menjadi versi default pada sistem AlmaLinux Anda, Anda dapat menginstal PHP 8.0 dengan perintah berikut:

sudo dnf install php

Contoh keluaran:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Jika Anda ingin menginstal ekstensi yang paling umum digunakan untuk PHP 8.0, gunakan perintah berikut:

sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml

Perhatikan, hapus opsi yang tidak Anda inginkan ini opsional.

Contoh keluaran:

Ketik (Y), lalu tekan (ENTER KEY) untuk melanjutkan.

Sekarang Anda telah menginstal PHP 8.0 dan ekstensi memeriksa versi dengan perintah berikut:

php -v

Contoh keluaran:

PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

Terakhir, PHP-FPM seperti Nginx dan MariaDB sebelumnya tidak diaktifkan secara default, untuk mengaktifkan PHP-FPM pada boot sistem dan untuk memulainya, gunakan (systemctl) berikut perintah:

sudo systemctl enable php-fpm && sudo systemctl start php-fpm

Contoh berhasil mengaktifkan (symlink) :

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Sekarang, seperti sebelumnya dengan memeriksa status persyaratan lain dalam instalasi LEMP Anda, gunakan (systemctl) berikut perintah terminal untuk memeriksa status untuk memastikan semuanya berfungsi:

systemctl status php-fpm

Jika tidak ada kesalahan, Anda akan mendapatkan output berikut:

Tidak seperti instalasi LEMP di Debian/Ubuntu yang menggunakan (www-data) pengguna, ini tidak terjadi dengan instalasi keluarga RHEL. Secara default di AlmaLinux, layanan PHP-FPM dirancang untuk dijalankan (Apache) pengguna, yang salah karena kami menggunakan Nginx, dan ini perlu diperbaiki.

Pertama, buka mengikuti (www.conf) file konfigurasi:

sudo nano /etc/php-fpm.d/www.conf

Selanjutnya, ganti (Apache) pengguna dan grup dengan (Nginx) pengguna dan grup:

Untuk menyimpan, tekan (CTRL+O) lalu keluar dari (CTRL+X) .

Sekarang Anda juga akan memuat ulang atau memulai ulang layanan PHP-FPM Anda:

sudo systemctl restart php-fpm

Buat Halaman Arahan PHP Uji

Untuk menguji PHP-FPM dengan server Web Nginx, Anda harus membuat file di direktori webroot.

Untuk panduan, Anda akan memberi nama file (info.php) sebagai berikut:

sudo nano /usr/share/nginx/html/info.php

Tempelkan (info.php) berikut ini berkas:

<?php

phpinfo();

?>

Simpan file (CTRL+O), lalu keluar dari (CTRL+X) .

Sekarang di bilah alamat Peramban Internet Anda, masukkan (server-ip-address/info.php) . Jika Anda telah menginstal Nginx di komputer lokal Anda, gunakan default (127.0.0.1/info.php) atau (localhost/info.php) .

Anda akan melihat informasi PHP server Anda:

Informasi ini menunjukkan skrip PHP dapat berjalan dengan baik dengan server web Nginx.

Untuk tujuan keamanan, Anda harus menghapus file tersebut. Untuk melakukannya, gunakan perintah berikut:

sudo rm -f /var/www/html/info.php

Jika Anda lebih suka menyimpan file untuk tujuan di masa mendatang, tambahkan yang berikut ini ke file blok server Nginx Anda di server {} bagian:

    location ^~ /info.php {
     allow <YOUR IP ADDRESS>; 
     deny all;
    }

Ini hanya akan mengizinkan alamat IP yang ditentukan untuk mengakses file. Disarankan untuk menyembunyikan sebanyak mungkin informasi sistem dari calon peretas dan pelaku kejahatan.

Buat Blok Server Nginx

Blok server Nginx setara dengan host virtual di Apache, yang berisi konfigurasi untuk server web Nginx Anda yang merespons pengunjung publik. Di bawah ini adalah contoh lengkap tentang cara mencapainya dengan mempertimbangkan PHP-FPM.

Buat Direktori Blok Server

(.conf) file biasanya berada di (sites-available) dan (berkemampuan situs). Pengguna yang datang dari distribusi yang berbeda akan melihat ini sudah diinstal; namun, untuk AlmaLinux, Anda harus membuatnya.

Buat dua (situs) required yang diperlukan direktori dengan perintah berikut:

sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled

Edit File Konfigurasi Nginx

Setelah membuat direktori yang diperlukan, edit file konfigurasi utama Nginx (nginx.conf) sebagai berikut:

sudo nano /etc/nginx/nginx.conf

Kemudian rekatkan beberapa baris berikutnya di (HTTP) bagian dari (nginx.conf) file konfigurasi:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Contoh:

Catatan, (server_names_hash_bucket_size) meningkatkan memori yang dialokasikan untuk mengurai nama domain.

Simpan konfigurasi dengan (CLTR+O) lalu (CTRL+X) untuk keluar.

Buat File Konfigurasi Blok Server

Sekarang buat file blok server menggunakan editor teks apa saja, panduan akan menggunakan (nano) :

sudo nano /etc/nginx/sites-available/example.com.conf

Selanjutnya, Anda perlu mengatur file konfigurasi dengan contoh kerja dengan PHP-FPM diaktifkan.

Contoh disediakan di bawah ini untuk Anda salin dan tempel. Catatan untuk mengganti (server_name) dengan nama domain atau IP Anda:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  root /var/www/html/example.com/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Sekarang simpan blok server dengan (CTRL+O), lalu keluar dengan (CTRL+X) .

Buat Laman Landas Uji

Ide yang bagus adalah membuat situs uji sampel. Di bawah ini adalah pengaturan index.html pengujian standar:

Jika Anda belum membuat direktori web permanen atau pengujian:

sudo mkdir -p /var/www/htmlexample.com/

Anda perlu mengonfigurasi izin, dan Anda dapat menetapkan sebagai pengguna yang saat ini masuk dengan $USER variabel:

sudo chown -R $USER:$USER /var/www/html/example.com/

Pengaturan izin terakhir adalah mengizinkan publik untuk membaca direktori web (mengakses situs Anda) menggunakan izin chmod 755:

sudo chmod -R 755 /var/www

Selanjutnya, buat index.html berkas:

sudo nano /var/www/html/example.com/index.html

Tempel konten di bawah ini. Seperti yang Anda lihat, ini cukup mendasar karena kami hanya menggunakannya untuk tujuan pengujian.

<html>
  <head>
    <title>You have reached Example.com!</title>
  </head>
  <body>
    <h1>Congratulations! The server block is active!</h1>
  </body>
</html>

Simpan konfigurasi dengan (CLTR+O) lalu (CTRL+X) untuk keluar.

Aktifkan Blok Server Nginx

Anda sekarang berada di tahap akhir, dan sekarang saatnya untuk mengaktifkan file konfigurasi blok server. Untuk melakukannya, Anda perlu membuat tautan simbolis (symlink) untuk file konfigurasi blok server di (sites-available) direktori ke (situs-enabled) direktori menggunakan perintah berikut:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Uji Blok Server Nginx

Untuk menyelesaikannya, Anda harus selalu melakukan dry run sebelum memulai ulang atau memuat ulang layanan Nginx Anda, yang sangat penting jika bekerja di lingkungan langsung. Ketik perintah berikut untuk menguji file konfigurasi blok server Anda:

sudo nginx -t

Jika tidak ada kesalahan, Anda akan mendapatkan output berikut:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Selanjutnya, buka Browser Internet Anda dan masukkan alamat domain Anda (example.com) untuk menguji apakah server Anda dapat dijangkau.

Selamat, Anda telah berhasil membuat blok server Nginx yaitu PHP-FPM siap.

Amankan Nginx dengan Let's Encrypt SSL Free Certificate

Idealnya, Anda ingin menjalankan Nginx di HTTPS menggunakan sertifikat SSL . Cara terbaik untuk melakukannya adalah dengan menggunakan Let's Encrypt, otoritas sertifikat gratis, otomatis, dan terbuka yang dijalankan oleh Internet Security Research Group (ISRG) nirlaba .

Pertama, instal EPEL repositori dan mod_ssl paket untuk paket dan keamanan yang lebih baik.

sudo dnf install epel-release mod_ssl -y

Selanjutnya, instal paket certbot sebagai berikut:

sudo dnf install python3-certbot-nginx -y

Setelah terinstal, jalankan perintah berikut untuk memulai pembuatan sertifikat Anda:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Ini adalah pengaturan ideal yang mencakup pengalihan paksa HTTPS 301, header Strict-Transport-Security, dan Stapling OCSP. Pastikan untuk menyesuaikan email dan nama domain dengan kebutuhan Anda.

Sekarang URL Anda akan menjadi HTTPS://www.example.com alih-alih HTTP://www.example.com .

Perhatikan, jika Anda menggunakan URL HTTP old yang lama , secara otomatis akan dialihkan ke HTTPS .

Secara opsional, Anda dapat mengatur tugas cron untuk memperbarui sertifikat secara otomatis. Certbot menawarkan skrip yang melakukan ini secara otomatis, dan Anda dapat menguji terlebih dahulu untuk memastikan semuanya berfungsi dengan menjalankan dry run.

sudo certbot renew --dry-run

Jika semuanya berfungsi, buka jendela crontab Anda dengan menggunakan perintah terminal berikut.

sudo crontab -e

Selanjutnya, tentukan waktu kapan harus diperpanjang secara otomatis. Ini harus diperiksa minimal setiap hari, dan jika sertifikat perlu diperbarui, skrip tidak akan memperbarui sertifikat. Jika Anda memerlukan bantuan untuk menemukan waktu yang tepat untuk menyetel, gunakan alat gratis crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Simpan (CTRL+O) lalu keluar dari (CTRL+X), dan cronjob akan diaktifkan secara otomatis.


AlmaLinux
  1. Cara menginstal tumpukan LEMP di AlmaLinux

  2. Cara Instal Nginx Dengan PHP Dan MySQL (LEMP Stack) Di CentOS 7

  3. Cara Menginstal Stack Nginx, MariaDB dan PHP (FEMP) di FreeBSD

  1. Cara Menginstal Nginx dengan PHP dan MariaDB (LEMP Stack) di Fedora 31

  2. Cara Instal Nginx dengan PHP dan MySQL (LEMP Stack) di CentOS 7.6

  3. Cara Install Nginx dengan PHP dan MariaDB (LEMP Stack) dengan Opcache, Redis dan Lets Encrypt di Fedora 32

  1. Cara Menginstal Nginx, MariaDB, PHP (LEMP stack) di Debian 9

  2. Cara Memasang LEMP Stack di Debian 10

  3. Cara Menginstal Nginx, MariaDB, PHP (LEMP Stack) di Debian 11