GNU/Linux >> Belajar Linux >  >> Fedora

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

Tumpukan perangkat lunak LEMP adalah sekelompok perangkat lunak sumber terbuka yang diinstal bersama untuk memungkinkan server menghosting situs web dan aplikasi. Ini adalah akronim untuk L inux, E Server Nginx, M ySQL (menggunakan MariaDB di sini), dan P HP.

Dalam panduan ini, Anda akan menginstal tumpukan LEMP di server berbasis Fedora 31. Kami juga akan menginstal PHPMyAdmin, Redis, dan Opcache.

Prasyarat

  • Server yang menjalankan Fedora 31.

  • Pengguna sudo non-root.

  • Pastikan semuanya diperbarui.

    $ sudo dnf upgrade
    
  • Beberapa paket yang dibutuhkan sistem Anda.

    $ sudo dnf install wget curl nano -y
    

    Beberapa paket ini mungkin sudah diinstal pada sistem Anda.

  • Nonaktifkan SELinux.

    $ sudo setenforce 0
    

Konfigurasi Firewall

Langkah pertama adalah mengkonfigurasi firewall. Server Fedora dilengkapi dengan firewall Firewalld yang telah diinstal sebelumnya.

Periksa apakah firewall sedang berjalan.

$ sudo firewall-cmd --state

Anda akan mendapatkan output berikut.

running

Setel zona default firewall ke publik.

$ sudo firewall-cmd --set-default-zone=public

Periksa layanan/port yang diizinkan saat ini.

$ sudo firewall-cmd --zone=public --permanent --list-services

Ini akan menunjukkan output berikut.

dhcpv6-client mdns ssh

Izinkan port HTTP dan HTTPS.

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

Periksa kembali status firewall.

$ sudo firewall-cmd --zone=public --permanent --list-services

Anda akan melihat keluaran serupa.

dhcpv6-client http https mdns ssh

Muat Ulang Firewall.

$ sudo systemctl reload firewalld

Instal PHP

Fedora 31 secara default dikirimkan dengan PHP 7.3. Tapi kita ingin menginstal PHP 7.4 yang kita perlu menambahkan repositori REMI.

Instal repositori REMI yang merupakan repositori Fedora resmi untuk menginstal paket PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-31.rpm

Aktifkan remi dan remi-php74 repositori dan nonaktifkan remi-modular gudang. Ini memungkinkan repositori yang diperlukan untuk menginstal paket PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-enabled remi-php74
$ sudo dnf config-manager --set-disabled remi-modular

Instal PHP 7.4 bersama dengan beberapa paket tambahan.

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

Periksa apakah PHP berfungsi dengan benar.

$ php --version

Anda akan melihat keluaran serupa.

PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Instal MariaDB

MariaDB adalah pengganti drop-in untuk MySQL yang berarti perintah untuk menjalankan dan mengoperasikan MariaDB sama dengan perintah untuk MySQL.

Fedora 31 secara default dikirimkan dengan MariaDB 10.3 tetapi kita dapat menginstal 10.4 terbaru (tersedia pada saat menulis tutorial ini) juga. Untuk ini kita perlu menambahkan repositori resmi MariaDB.

Buat MariaDB.repo di /etc/yum.repos.d/ direktori.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Tambahkan kode berikut di dalamnya.

# MariaDB 10.4 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora31-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Untuk menginstal MariaDB, jalankan perintah berikut

$ sudo dnf install MariaDB-server -y

Perhatikan perintahnya. Jika Anda ingin menginstal salinan (10.3) di repositori Fedora, Anda harus menggunakan sudo dnf install mariadb-server tetapi untuk versi 10.4, kami menggunakan sudo dnf install MariaDB-server .

Periksa apakah MariaDB diinstal dengan benar.

$ mysql --version

Anda akan melihat output berikut.

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

Aktifkan dan mulai layanan MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Jalankan perintah berikut untuk melakukan konfigurasi default seperti memberikan kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh, dan menghapus tabel pengujian.

$ sudo mysql_secure_installation

Dengan MariaDB 10.4, Anda sekarang akan ditanya antara menggunakan kata sandi root atau plugin unix_socket. Plugin unix_socket memungkinkan Anda untuk masuk ke MariaDB dengan kredensial pengguna Linux Anda. Ini dianggap lebih aman meskipun Anda memerlukan nama pengguna/kata sandi tradisional untuk menggunakan aplikasi pihak ketiga seperti PhpMyAdmin. Kami akan tetap menggunakan plugin unix_socket untuk tutorial ini. Anda masih dapat menggunakan PhpMyAdmin melalui pengguna mana pun yang Anda buat sebagai pengguna tertentu untuk database Anda.

Menekan Enter memilih opsi default (salah satu yang dikapitalisasi, Y dalam hal ini).

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
 \- Dropping test database...
 ... Success!
 \- Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Itu dia. Lain kali Anda ingin login ke MySQL, gunakan perintah berikut

$ sudo mysql

Masukkan kata sandi root Anda saat diminta.

Instal Nginx

Fedora 31 secara default dikirimkan dengan versi stabil Nginx (1.16.1). Jika Anda ingin menginstal Nginx versi arus utama, ikuti panduan kami untuk membangun Nginx dari sumbernya. Pastikan Anda mengambil versi terbaru Nginx dan dependensi yang disebutkan dalam tutorial. Instruksi lainnya akan tetap sama (Ubah nama jalur yang sesuai selama ./configure memerintah). Untuk tutorial ini, kami akan tetap menggunakan Nginx versi stabil.

Instal server Nginx.

$ sudo dnf install nginx -y

Periksa apakah itu berfungsi dengan benar.

$ nginx -v

Anda akan melihat output berikut.

nginx version: nginx/1.16.1

Mulai dan aktifkan Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Buka alamat IP server Anda di browser untuk melihat halaman berikut. Itu berarti Nginx bekerja dengan baik.

Konfigurasi Nginx

Siapkan direktori tempat server memblokir.

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

Buat direktori tempat situs Anda akan tinggal.

$ sudo mkdir /var/www/example.com/html -p

Menggunakan -p direktif membuat direktori induk yang tidak ada sebelumnya.

Jalankan perintah berikut untuk menambahkan file konfigurasi untuk situs Anda.

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

Rekatkan kode berikut di editor.

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass  unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include  fastcgi_params;
  }
}

File ini mengasumsikan bahwa kita akan menghosting example.com di direktori /var/www/html . Jika Anda tidak akan menggunakan domain apa pun dan mengonfigurasi server Anda agar dapat diakses hanya melalui alamat IP/localhost, Anda harus menghapus pengaturan blok server yang sesuai dari nginx.conf jika tidak, itu akan mengacaukan blok server yang akan Anda buat.

Aktifkan file konfigurasi ini dengan menautkannya ke sites-enabled direktori.

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

Buka /etc/nginx/nginx.conf file untuk diedit.

$ sudo nano /etc/nginx/nginx.conf	

Paste baris berikut setelah baris include /etc/nginx/conf.d/*.conf

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

Ubah nilai types_hash_max_size dari 2048 hingga 4096.

types_hash_max_size 4096;

Tekan Ctrl + X untuk menutup editor dan tekan Y ketika diminta untuk menyimpan file. Uji konfigurasi Nginx.

$ sudo nginx -t

Anda akan melihat output berikut yang menunjukkan konfigurasi Anda benar.

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

Muat ulang layanan Nginx.

$ sudo systemctl reload nginx

Konfigurasi PHP-FPM

Buka file /etc/php-fpm.d/www.conf .

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

Kita perlu menyetel pengguna/grup proses PHP Unix ke nginx . Temukan user=apache dan group=apache baris dalam file dan ubah ke nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Juga, atur izin kepemilikan untuk soket unix ke nginx dan hapus ; di depan mereka.

listen.owner = nginx
listen.group = nginx

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Mulai ulang proses PHP-fpm.

$ sudo systemctl restart php-fpm

Untuk menguji pengaturan PHP Anda, buat file test.php di html folder.

$ sudo nano /var/www/example.com/html/test.php

Tambahkan konten berikut ke dalamnya dan simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

<?php phpinfo();

Luncurkan http://<yourserverip>/test.php di browser web Anda dan Anda akan melihat yang berikut ini.

Kesimpulan

Itu saja untuk tutorial ini. Penyiapan LEMP Anda selesai dan Anda dapat mulai membuat dan menghosting situs web dan aplikasi Anda.


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

  2. Cara Menginstal Phorum dengan Nginx di Fedora 30

  3. Bagaimana Cara Install WordPress dengan LEMP (Nginx, MariaDB, dan PHP) di Rocky Linux 8 ?

  1. Cara Menginstal CMS Pagekit dengan Nginx di Fedora 29

  2. Cara Instal Nginx dengan PHP dan MySQL (LEMP Stack) di Ubuntu 18.04

  3. Cara Memasang InvoicePlane dengan Nginx di Fedora 29

  1. Cara Menginstal CMS Oktober dengan Nginx di Fedora 29

  2. Cara Menginstal Shopware dengan NGINX dan Lets Encrypt di Fedora 30

  3. Cara Install Fuel CMS dengan Nginx di Fedora 31