PHP è un linguaggio di scripting generico orientato allo sviluppo web. È uno dei più diffusi linguaggi di programmazione per il web. Strumenti popolari come WordPress sono codificati utilizzando php. Anche le grandi aziende come Facebook usano pesantemente php.
Nginx è un server Web che può essere utilizzato anche come proxy inverso, bilanciamento del carico, proxy di posta e cache HTTP. È nato come un server web progettato per le massime prestazioni e stabilità. Nginx è diventato popolare sin dal suo rilascio grazie al suo utilizzo leggero delle risorse e alla sua capacità di scalare facilmente su hardware minimo. Nginx eccelle nel servire rapidamente contenuti statici ed è progettato per passare le richieste dinamiche ad altri software più adatti a tali scopi.
Contenuti correlati
- Come installare e configurare PHP e Apache (stack LAMP) su OpenSUSE Leap 15.3
- Come installare lo stack Apache PHP 7.4 (LAMP) su Rocky Linux/Centos 8
- Come installare e configurare PHP e Apache (stack LAMP) su Ubuntu 20.04
- Come installare e configurare PHP e Nginx (LEMP) su Ubuntu 20.04
- Come installare e configurare PHP e Apache (stack LAMP) su Debian 11
- Come installare e configurare PHP e Nginx (LEMP) su Debian 11
- Come installare e configurare PHP e Nginx (LEMP) su Rocky Linux/Alma Linux 8
Indice dei contenuti
- Assicurarsi che il server sia aggiornato
- Installazione di PHP su OpenSUSE Leap 15.3
- Installazione di Nginx su OpenSUSE Leap 15.3
- Installazione di php-fpm in OpenSUSE Leap 15.3
- Creazione di un sito semplice e configurazione dell'host virtuale
- Test della configurazione
1. Garantire che il server sia aggiornato
Prima di procedere, è sempre buona norma assicurarsi che il server sia aggiornato. Usa questi comandi per raggiungere questo obiettivo
sudo zypper refresh
sudo zypper update -y
2. Installazione di PHP su OpenSUSE Leap 15.3
PHP è disponibile nei repository OpenSUSE predefiniti. L'ultima versione di PHP al momento della stesura di questo blog è PHP 7.4.
Installa PHP e alcuni pacchetti comuni usando questo comando:
sudo zypper install -y \
php \
php-cli
Controlla la versione installata di PHP
~> zypper info php7
Repository 'Update repository with updates from SUSE Linux Enterprise 15' is out-of-date. You can run 'zypper refresh' as root to update it.
Loading repository data...
Reading installed packages...
Information for package php7:
-----------------------------
Repository : Update repository with updates from SUSE Linux Enterprise 15
Name : php7
Version : 7.4.6-3.29.1
Arch : x86_64
Vendor : SUSE LLC <https://www.suse.com/>
Installed Size : 10.3 MiB
Installed : Yes
Status : up-to-date
Source package : php7-7.4.6-3.29.1.src
Summary : Interpreter for the PHP scripting language version 7
Description :
PHP is a server-side HTML embedded scripting language designed
primarily for web development but also used as a general-purpose
programming language.
This package contains the standard implementation of PHP, namely Zend
PHP. Included are the PHP command-line binary and the configuration
file (php.ini). This package must be installed in order to use PHP.
Additionally, extension modules and server modules (e.g. for Apache)
may be installed.
Additional documentation is available in package php-doc.
Controlla la versione php installata usando questo comando:
~> php -v
PHP 7.4.6 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
3. Installazione di Nginx su OpenSUSE Leap 15.3
Useremo Nginx per servire il contenuto PHP. Nginx, in quanto server web stabile ad alte prestazioni e con un consumo di risorse molto basso, è l'abbinamento perfetto per PHP-FPM. Nginx ha un'architettura asincrona molto più scalabile, basata sugli eventi.
Nginx è disponibile nei repository UpenSUSE predefiniti. Installalo usando questo comando:
sudo zypper install -y nginx
Conferma l'installazione di nginx
~> zypper info nginx
Loading repository data...
Reading installed packages...
Information for package nginx:
------------------------------
Repository : Main Repository
Name : nginx
Version : 1.19.8-3.6.1
Arch : x86_64
Vendor : SUSE LLC <https://www.suse.com/>
Installed Size : 2.2 MiB
Installed : Yes
Status : up-to-date
Source package : nginx-1.19.8-3.6.1.src
Summary : A HTTP server and IMAP/POP3 proxy server
Description :
nginx [engine x] is a HTTP server and IMAP/POP3 proxy server written by Igor Sysoev.
It has been running on many heavily loaded Russian sites for more than two years.
Il servizio Nginx installato non viene avviato per impostazione predefinita. Per avviare il servizio, usa questo comando:
sudo systemctl start nginx
Conferma che il servizio è attivo e funzionante utilizzando questo comando:
~> sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2021-12-20 18:56:15 UTC; 36s ago
Process: 31740 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Main PID: 31741 (nginx)
Tasks: 2 (limit: 4587)
CGroup: /system.slice/nginx.service
├─31741 nginx: master process /usr/sbin/nginx -g daemon off;
└─31742 nginx: worker process
Dec 20 18:56:15 ip-10-2-40-44 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Dec 20 18:56:15 ip-10-2-40-44 nginx[31740]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 20 18:56:15 ip-10-2-40-44 nginx[31740]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Dec 20 18:56:15 ip-10-2-40-44 systemd[1]: Started The nginx HTTP and reverse proxy server.
Per abilitare il servizio all'avvio, utilizzare questo comando:
sudo systemctl enable nginx
4. Installazione di PHP FPM in OpenSUSE Leap 15.3
PHP-FPM (acronimo di FastCGI Process Manager) è un'implementazione FastCGI PHP (Hypertext Processor) alternativa estremamente popolare. PHP-FPM è l'implementazione alternativa più popolare di PHP FastCGI. Ha funzionalità aggiuntive che sono davvero utili per i siti Web ad alto traffico. Quando si utilizza Nginx con PHP-FPM, le prestazioni a livello di consumo di memoria sono migliorate.
PHP viene eseguito come servizio separato quando si utilizza PHP-FPM. Utilizzando questa versione di PHP come interprete linguistico, le richieste vengono elaborate tramite un socket TCP/IP; in modo che il server web Nginx gestisca solo le richieste HTTP e PHP-FPM interpreti il codice PHP. Il fatto di avere due servizi separati è fondamentale per aumentare l'efficienza.
Installa php-fpm usando questo comando:
sudo zypper install -y php-fpm
Copia i file di configurazione predefiniti
sudo cp /etc/php7/fpm/php-fpm.conf.default /etc/php7/fpm/php-fpm.conf
sudo cp /etc/php7/fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm.d/www.conf
Il servizio non verrà avviato per impostazione predefinita. Avvia php-fpm usando questo comando:
sudo systemctl start php-fpm
Controlla il suo stato usando questo comando:
~> sudo systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2021-12-20 08:56:16 UTC; 21s ago
Main PID: 24608 (php-fpm)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4587)
CGroup: /system.slice/php-fpm.service
├─24608 php-fpm: master process (/etc/php7/fpm/php-fpm.conf)
├─24609 php-fpm: pool www
└─24610 php-fpm: pool www
Dec 20 08:56:16 ip-10-2-40-44 systemd[1]: Starting The PHP FastCGI Process Manager...
Dec 20 08:56:16 ip-10-2-40-44 systemd[1]: Started The PHP FastCGI Process Manager.
Per abilitare php-fpm all'avvio, usa questo comando:
sudo systemctl enable php-fpm
5. Creazione di un sito semplice e configurazione dell'host virtuale
Nginx ti consente di servire più siti utilizzando host virtuali. Il concetto di host virtuali consente più di un sito Web su un sistema o server Web. I server si differenziano per il loro nome host. I visitatori del sito Web vengono indirizzati dal nome host o dall'indirizzo IP all'host virtuale corretto. L'hosting virtuale consente alle aziende che condividono un server di avere ciascuno il proprio nome di dominio.
In questo esempio, utilizzeremo il dominio site1.citizix.com per l'host virtuale, ma saremo liberi di utilizzare il dominio di tua scelta. Si noti che il DNS per il dominio da utilizzare dovrebbe essere già configurato per puntare all'indirizzo IP del server. Confermalo con:
dig -t A site1.citizix.com
Creazione di una directory e aggiunta di contenuto di esempio
La pagina predefinita di nginx è configurata come un host virtuale predefinito che serve contenuti da /var/www/html
. È buona norma creare la directory del tuo sito in /var/www
directory poiché è una buona pratica servire da lì.
Creiamo una directory per il nostro sito con il seguente comando:
sudo mkdir /var/www/site1.citizix.com
Creiamo un semplice index.php
pagina da servire dal nostro sito. Avrai bisogno di vim installato per farlo funzionare, altrimenti usa questo comando:
sudo zypper install -y vim
Modifica il file:
sudo vim /var/www/site1.citizix.com/index.php
Aggiungi contenuto al file:
<?php phpinfo(); ?>
Creazione dell'host virtuale (blocchi del server)
Un server Nginx può essere utilizzato per incapsulare i dettagli di configurazione e ospitare più di un dominio su un singolo server. Creeremo un host virtuale per il nostro sito (site1.citizix.com).
Le configurazioni degli host virtuali Nginx sono archiviate nella directory /etc/nginx/conf.d/
. Creiamo una configurazione per il nostro sito:
sudo vim /etc/nginx/conf.d/site1.citizix.com.conf
Aggiungi il seguente contenuto
server {
listen 80;
server_tokens off;
client_max_body_size 100M;
server_name site1.citizix.com;
access_log /var/log/nginx/site1.citizix.com.log;
error_log /var/log/nginx/site1.citizix.com.log;
root /var/www/site1.citizix.com;
index index.php;
if ($host !~* ^(site1.citizix.com)$) {
return 444;
}
location / {
proxy_read_timeout 600;
proxy_connect_timeout 600;
proxy_send_timeout 600;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Riavviamo il servizio nginx e php-fpm per la configurazione da applicare
sudo systemctl restart php-fpm
sudo systemctl restart nginx
6. Testare la configurazione
Per testare la configurazione, apri il browser e carica il dominio che hai impostato. Nel mio caso è http://site1.citizix.com. Dovresti vedere la pagina delle informazioni php.
Se non hai ancora configurato le tue impostazioni DNS o semplicemente non vuoi che il sito sia ancora attivo, puoi modificare il file hosts del tuo computer. Per fare ciò, usa il seguente comando nella CLI del tuo computer locale
sudo vim /etc/hosts
Quindi, aggiungi l'indirizzo IP del tuo vero server seguito dal nome di dominio che stai configurando, ad esempio:
# Virtual Hosts Local Test
10.2.11.11 site1.citizix.com
Ora dovresti essere in grado di salvare il file e accedervi da un browser web.
Conclusione
Host virtuali Nginx o server
i blocchi sono un ottimo modo per aggiungere ulteriori siti Web allo stesso server di origine. Il numero di possibilità di configurazione per un determinato sito è quasi infinito quando inizi a modificare il file di configurazione dell'host virtuale per adattarlo alle esigenze specifiche del tuo sito.
In questa guida abbiamo imparato come configurare un host virtuale per servire contenuto php in OpenSUSE Leap 15.3.