GNU/Linux >> Linux Esercitazione >  >> Fedora

Come installare Nginx con PHP e MariaDB (LEMP Stack) su Fedora 31

Lo stack software LEMP è un gruppo di software open source che viene installato insieme per consentire a un server di ospitare siti Web e app. È l'acronimo di L inux, E Server Nginx, M ySQL (usando MariaDB qui) e P HP.

In questa guida, installerai uno stack LEMP su un server basato su Fedora 31. Installeremo anche PHPMyAdmin, Redis e Opcache.

Prerequisiti

  • Un server che esegue Fedora 31.

  • Un utente sudo non root.

  • Assicurati che tutto sia aggiornato.

    $ sudo dnf upgrade
    
  • Pochi pacchetti di cui il tuo sistema ha bisogno.

    $ sudo dnf install wget curl nano -y
    

    Alcuni di questi pacchetti potrebbero essere già installati sul tuo sistema.

  • Disabilita SELinux.

    $ sudo setenforce 0
    

Configura Firewall

Il primo passo è configurare il firewall. Il server Fedora viene fornito con il firewall Firewalld preinstallato.

Controlla se il firewall è in esecuzione.

$ sudo firewall-cmd --state

Dovresti ottenere il seguente output.

running

Imposta la zona predefinita del firewall su pubblica.

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

Controlla i servizi/porte attualmente consentiti.

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

Dovrebbe mostrare il seguente output.

dhcpv6-client mdns ssh

Consenti porte HTTP e HTTPS.

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

Ricontrolla lo stato del firewall.

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

Dovresti vedere un output simile.

dhcpv6-client http https mdns ssh

Ricarica il firewall.

$ sudo systemctl reload firewalld

Installa PHP

Fedora 31 per impostazione predefinita viene fornito con PHP 7.3. Ma vogliamo installare PHP 7.4 per il quale dobbiamo aggiungere il repository REMI.

Installa il repository REMI che è il repository ufficiale di Fedora per l'installazione dei pacchetti PHP.

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

Abilita il remi e remi-php74 repository e disabilitare il remi-modular deposito. Ciò abilita il repository richiesto per installare i pacchetti 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

Installa PHP 7.4 insieme ad alcuni pacchetti aggiuntivi.

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

Controlla se PHP funziona correttamente.

$ php --version

Dovresti vedere un output simile.

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

Installa MariaDB

MariaDB è un sostituto drop-in di MySQL, il che significa che i comandi per eseguire e far funzionare MariaDB sono gli stessi di MySQL.

Fedora 31 per impostazione predefinita viene fornito con MariaDB 10.3 ma possiamo anche installare l'ultima 10.4 (disponibile al momento della stesura di questo tutorial). Per questo abbiamo bisogno di aggiungere il repository ufficiale di MariaDB.

Crea MariaDB.repo nel /etc/yum.repos.d/ directory.

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

Aggiungi il codice seguente.

# 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

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Per installare MariaDB emettere i seguenti comandi

$ sudo dnf install MariaDB-server -y

Nota il comando. Se vuoi installare la copia(10.3) nel repository Fedora, dovresti usare sudo dnf install mariadb-server ma per la versione 10.4, stiamo usando sudo dnf install MariaDB-server .

Verifica se MariaDB è stata installata correttamente.

$ mysql --version

Dovresti vedere il seguente output.

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

Abilita e avvia il servizio MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Esegui il comando seguente per eseguire la configurazione predefinita, ad esempio fornire una password di root, rimuovere utenti anonimi, impedire l'accesso come root in remoto e eliminare le tabelle di test.

$ sudo mysql_secure_installation

Con MariaDB 10.4, ora ti verrà chiesto se usare la password di root o il plugin unix_socket. Il plugin unix_socket ti consente di accedere a MariaDB con le tue credenziali utente Linux. È considerato più sicuro anche se avrai bisogno di un nome utente/password tradizionale per utilizzare app di terze parti come PhpMyAdmin. Ci atterremo all'utilizzo del plugin unix_socket per questo tutorial. Puoi ancora utilizzare PhpMyAdmin tramite qualsiasi utente che crei per i tuoi database.

Premendo Invio si sceglie l'opzione di default (quella che è maiuscola, in questo caso Y).

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!

Questo è tutto. La prossima volta che vuoi accedere a MySQL, usa il seguente comando

$ sudo mysql

Inserisci la tua password di root quando richiesto.

Installa Nginx

Fedora 31 per impostazione predefinita viene fornito con la versione stabile di Nginx (1.16.1). Se desideri installare la versione principale di Nginx, segui la nostra guida alla creazione di Nginx dal sorgente. Assicurati di prendere l'ultima versione di Nginx e le dipendenze menzionate nel tutorial. Il resto delle istruzioni rimarranno le stesse (cambia i nomi dei percorsi di conseguenza durante il ./configure comando). Per questo tutorial, continueremo con la versione stabile di Nginx.

Installa il server Nginx.

$ sudo dnf install nginx -y

Controlla se funziona correttamente.

$ nginx -v

Dovresti vedere il seguente output.

nginx version: nginx/1.16.1

Avvia e abilita Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Apri l'indirizzo IP del tuo server in un browser per vedere la pagina seguente. Significa che Nginx funziona correttamente.

Configura Nginx

Imposta le directory in cui rimarranno i blocchi del server.

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

Crea la directory in cui vivrà il tuo sito.

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

Usando il -p la direttiva crea directory padre che prima non esistevano.

Esegui il comando seguente per aggiungere un file di configurazione per il tuo sito.

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

Incolla il codice seguente nell'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;
  }
}

Questo file presuppone che ospiteremo example.com nella directory /var/www/html . Se non utilizzerai alcun dominio e configurerai il tuo server in modo che sia accessibile solo tramite l'indirizzo IP/localhost, dovrai rimuovere le impostazioni di blocco del server corrispondenti da nginx.conf file altrimenti rovinerà il blocco del server che creerai.

Attiva questo file di configurazione collegandolo a sites-enabled directory.

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

Apri il /etc/nginx/nginx.conf file per la modifica.

$ sudo nano /etc/nginx/nginx.conf	

Incolla le seguenti righe dopo la riga include /etc/nginx/conf.d/*.conf

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

Modifica il valore di types_hash_max_size dal 2048 al 4096.

types_hash_max_size 4096;

Premi Ctrl + X per chiudere l'editor e premere Y quando viene richiesto di salvare il file. Testa la configurazione di Nginx.

$ sudo nginx -t

Dovresti vedere il seguente output che indica che la tua configurazione è corretta.

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

Ricarica il servizio Nginx.

$ sudo systemctl reload nginx

Configura PHP-FPM

Apri il file /etc/php-fpm.d/www.conf .

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

Dobbiamo impostare l'utente/gruppo di processi PHP Unix su nginx . Trova user=apache e group=apache righe nel file e cambiale in 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
...

Inoltre, imposta le autorizzazioni di proprietà per il socket unix su nginx e rimuovi il ; davanti a loro.

listen.owner = nginx
listen.group = nginx

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Riavvia il processo PHP-fpm.

$ sudo systemctl restart php-fpm

Per testare la tua configurazione PHP, crea un file test.php nel html cartella.

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

Aggiungi il seguente contenuto e salva il file premendo Ctrl + X e inserendo Y quando richiesto.

<?php phpinfo();

Avvia http://<yourserverip>/test.php nel tuo browser web e dovresti vedere quanto segue.

Conclusione

Questo è tutto per questo tutorial. La configurazione di LEMP è completa e puoi iniziare a creare e ospitare i tuoi siti Web e applicazioni.


Fedora
  1. Come installare Nginx con PHP e MySQL (stack LEMP) su CentOS 7

  2. Come installare Pagekit CMS con Nginx su Fedora 29

  3. Come installare Nginx con PHP e MySQL (stack LEMP) su Ubuntu 18.04

  4. Come installare Phorum con Nginx su Fedora 30

  5. Come installare WordPress con LEMP (Nginx, MariaDB e PHP) su Rocky Linux 8?

Come installare Nginx, MariaDB, PHP (LEMP Stack) su Debian 11

Come installare Linux, Nginx, MariaDB, PHP (LEMP Stack) su Linux Mint 19

Come installare lo stack LEMP (Nginx, MariaDB e PHP) su AlmaLinux 8

Come installare lo stack LEMP su Fedora 35

Come installare Linux, Nginx, MariaDB e PHP (LEMP) su Fedora 22

Come installare LEMP (Nginx, MariaDB, PHP) su Centos 7