GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Installazione e configurazione di Php e Nginx su Ubuntu 20.04

PHP è un linguaggio di scripting generico. È principalmente popolare per lo sviluppo web. Può essere utilizzato per sviluppare siti web dinamici e interattivi. È stato tra i primi linguaggi lato server incorporati nell'HTML, semplificando l'aggiunta di funzionalità alle pagine Web senza la necessità di chiamare file esterni per i dati. PHP è tra i linguaggi di programmazione più facili da imparare.

È integrato con una serie di database popolari, inclusi MySQL, PostgreSQL, Oracle, Sybase, Informix e Microsoft SQL Server. Molti CMS e framework popolari come WordPress, Magento e Laravel sono scritti in PHP.

Al momento della stesura di questo articolo, i repository Ubuntu 20.04 predefiniti includono la versione PHP 7.4.

Prerequisiti

Per seguire questa guida, assicurati di avere quanto segue:

  1. Server Ubuntu 20.04 aggiornato connesso a Internet
  2. Accesso root al server o utente con accesso sudo
  3. Dovresti essere a tuo agio nell'usare il terminale Linux per eseguire comandi.

Passaggi per installare e configurare PHP in Ubuntu 20.04

  1. Assicurati che il server sia aggiornato
  2. Installa php 7.4 sul server
  3. Installazione di Nginx
  4. Configura Nginx per servire il file php

1. Assicurati che il server sia aggiornato

Prima di procedere, assicuriamoci che il nostro server sia aggiornato. Utilizzare questi comandi per 1. Aggiornare i repository del server, 2. Aggiornare i pacchetti del server alle versioni più recenti:

# Update repos
sudo apt update

# Upgrade packages
sudo apt -y upgrade

2. Installa php 7.4 sul server

Poiché i repository predefiniti contengono php versione 7.4, installiamolo con questo comando:

sudo apt install php -y

Conferma la versione installata con il comando php -v :

~$ php -v
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

In questa configurazione, intendiamo servire file php con Nginx. Nginx non ha il supporto integrato per l'elaborazione di file PHP. Useremo PHP-FPM ("fastCGI process manager") per gestire i file PHP.

Nginx non funzionerà se Apache è installato e in esecuzione. Dato che useremo Nginx, usiamo questo comando per rimuovere Apache se è installato nel nostro sistema:

$ sudo apt remove apache2 -y

Installiamo ora php-fpm con questo comando:

sudo apt install php-fpm -y

Una volta completata l'installazione, il servizio FPM verrà avviato automaticamente. Il servizio viene aggiunto a systemd come php7.4-fpm . Per controllare lo stato del servizio, esegui:

$ sudo systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-09-28 16:18:41 UTC; 3min 18s ago
       Docs: man:php-fpm7.4(8)
   Main PID: 56092 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 4710)
     Memory: 7.1M
     CGroup: /system.slice/php7.4-fpm.service
             ├─56092 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ├─56113 php-fpm: pool www
             └─56114 php-fpm: pool www

Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.

Dovresti vedere l'output come sopra.

3. Installazione di Nginx

Ora che PHP e php-fpm sono installati nel sistema, dobbiamo installare nginx. Nginx ci consentirà di configurare un host virtuale che possiamo utilizzare per servire il traffico da un dominio.

Installa nginx usando questo comando:

sudo apt install nginx -y

Una volta completata l'installazione, Nginx verrà avviato per impostazione predefinita. Conferma che funziona come previsto controllandone lo stato. Dovresti vedere un output come questo:

$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-09-28 16:28:30 UTC; 1min 2s ago
       Docs: man:nginx(8)
   Main PID: 56990 (nginx)
      Tasks: 3 (limit: 4710)
     Memory: 3.7M
     CGroup: /system.slice/nginx.service
             ├─56990 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─56991 nginx: worker process
             └─56992 nginx: worker process

Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Starting A high performance web server and a reverse pr>
Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Started A high performance web server and a reverse pro>

Per confermare che Nginx è effettivamente in esecuzione ed è raggiungibile, usa questo comando:

curl http://server_ip/

Dove server_ip è l'ip del tuo server. Se per qualsiasi motivo non conosci l'ip pubblico del tuo server usa questo per controllare:

curl -4 icanhazip.com

Dovresti vedere la pagina predefinita di Nginx.

4. Configura Nginx per servire il file php

Ora che Nginx è configurato e funzionante nel nostro server, facciamo in modo che serva file php. In questo esempio configureremo Nginx per servire la pagina delle informazioni php.

Per raggiungere questo obiettivo, dobbiamo configurare un host virtuale in Nginx che serva il traffico per un dominio specifico (useremo example.citizix.com ). Affinché funzioni, devi aggiornare i record DNS per quel dominio nel tuo host DNS per avere A i record puntano a quel dominio o sottodominio. Consulta la documentazione del tuo provider DNS per le specifiche su come farlo.

Conferma che il dominio può risolversi correttamente sul server utilizzando il comando dig:

❯ dig -t A example.citizix.com

; <<>> DiG 9.10.6 <<>> -t A example.citizix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10212
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.citizix.com.       IN  A

;; ANSWER SECTION:
example.citizix.com.    300 IN  A   172.67.197.11

;; Query time: 828 msec
;; SERVER: 192.168.157.227#53(192.168.157.227)
;; WHEN: Tue Sep 28 20:42:05 EAT 2021
;; MSG SIZE  rcvd: 80

Ora dobbiamo seguire questi passaggi per far funzionare il nostro semplice script:

  1. Crea la directory per memorizzare i nostri contenuti statici (useremo /var/www/example.citizix.com )
    sudo mkdir -p /var/www/example.citizix.com
  2. Assicurati che la directory creata sia accessibile dall'utente Nginx
    sudo chown -R www-data:www-data /var/www/example.citizix.com
    sudo chmod -R 755 /var/www/example.citizix.com
  3. Aggiungi un file di indice /var/www/example.citizix.com/index.php con contenuto per mostrare le informazioni php alla directory (/var/www/example.citizix.com )
    Modifica il file:

    sudo vim /var/www/example.citizix.com/index.php

    Aggiungi questo contenuto:

    <?php
    phpinfo()
    ?>

    Salva e chiudi il file.

  4. Crea la configurazione di nginx nella directory predefinita di nginx /etc/nginx/conf.d . 1. Creeremo il file /etc/nginx/conf.d/example.citizix.com.conf con il contenuto richiesto.
    sudo vim /etc/nginx/conf.d/example.citizix.com.conf

Aggiungi questo contenuto:

server {
    listen 80;
    server_name example.citizix.com;

    root /var/www/example.citizix.com;
    index index.php;

    location ~ \.php$ {
        fastcgi_intercept_errors on;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
}

Conferma che nginx config è corretto con questo comando:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ora devi riavviare nginx e php-fpm usando questi comandi:

sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

Conferma che i servizi sono stati attivati:

sudo systemctl status nginx
sudo systemctl status php7.4-fpm

Dovresti vedere che i servizi sono stati riavviati correttamente!

Se tutto va bene, dovresti vedere la pagina delle informazioni php come mostrato nello screenshot qui sotto:

È tutto! Fino a questo punto siamo stati in grado di installare php 7.4 in Ubuntu 20.04 e servire file semplici con Nginx.


Ubuntu
  1. Configurazione di base di PHP 7 e Nginx su Ubuntu 16.04 Linux

  2. Impostazione NTP su Centos e Ubuntu

  3. Installa e configura PHP OPcache su Ubuntu 20.04

  4. Installazione di LLMP (Lighttpd, PHP e MySQL) su Ubuntu 14.10

  5. Errore durante l'installazione di Nginx su Ubuntu 16.04?

Installazione di Nginx con PHP5 (e PHP-FPM) e supporto MySQL (LEMP) su Ubuntu 13.04

Installazione di Apache2 con PHP5 e supporto MySQL su Ubuntu 13.04 (LAMP)

Installazione di Nginx con supporto PHP5 e MySQL su Ubuntu 8.10

Installazione di Lighttpd con PHP (modalità PHP-FPM) e MySQL o MariaDB su Ubuntu 15.04

Installazione di Lighttpd con PHP (modalità PHP-FPM) e MySQL o MariaDB su Ubuntu 15.10

Installazione e configurazione di Plex Media Server su Ubuntu