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.