WordPress è il software di blogging e gestione dei contenuti open source più utilizzato che alimenta circa 60 milioni di siti Web. È scritto in PHP e utilizza MariaDB / MySQL come database.
Questo tutorial ti aiuta a installare WordPress 5.x con Nginx su Ubuntu 18.04 / Ubuntu 16.04.
Vedremo anche come installare Let's Encrypt SSL per WordPress per la consegna sicura del sito web.
Installa lo stack LEMP
Prima di procedere, potresti voler vedere come installare lo stack LEMP.
Installa lo stack LEMP (Nginx, MariaDB e PHP) su Ubuntu 18.04
Installa lo stack LEMP (Nginx, MariaDB e PHP) su Ubuntu 16.04
Installa estensioni PHP
Le seguenti estensioni sono necessarie per installare ed eseguire WordPress su Ubuntu OS.
sudo apt install -y php-mysql php-dom php-simplexml php-ssh2 php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-imagick php-json php-mbstring php-posix php-sockets php-tokenizer
Configura il blocco server Nginx per WordPress
Creiamo un blocco server Nginx per l'installazione di WordPress. I file di configurazione dell'host virtuale possono essere trovati nella directory /etc/nginx/conf.d.
Il blocco del server richiede un nome di dominio, numero di porta, radice del documento, posizione del registro, CGI veloce, ecc.
Supponiamo quanto segue,
Nome di dominio: www.itzgeek.net
Radice del documento: /sites/www.itzgeek.net/public_html/
Registri: /sites/www.itzgeek.net/logs/
Crea un host virtuale.
Se hai installato Nginx dal repository di Ubuntu, i file di configurazione dell'host virtuale si trovano in /etc/nginx/sites-enabled e il percorso del file sarà come /etc/nginx/sites-enabled/www.itzgeek.net.conf.sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Inserisci il seguente contenuto.
server { listen 80; server_name www.itzgeek.net; root /sites/www.itzgeek.net/public_html/; index index.html index.php; access_log /sites/www.itzgeek.net/logs/access.log; error_log /sites/www.itzgeek.net/logs/error.log; # Don't allow pages to be rendered in an iframe on external domains. add_header X-Frame-Options "SAMEORIGIN"; # MIME sniffing prevention add_header X-Content-Type-Options "nosniff"; # Enable cross-site scripting filter in supported browsers. add_header X-Xss-Protection "1; mode=block"; # Prevent access to hidden files location ~* /\.(?!well-known\/) { deny all; } # Prevent access to certain file extensions location ~\.(ini|log|conf)$ { deny all; } # Enable WordPress Permananent Links location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Crea la radice del documento e la directory dei registri.
sudo mkdir -p /sites/www.itzgeek.net/public_html/ sudo mkdir -p /sites/www.itzgeek.net/logs/
Verifica i file di configurazione.
sudo nginx -t
Se ottieni quanto segue, significa che le voci dell'host virtuale sono corrette.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Riavvia i servizi.
sudo systemctl restart nginx
Installa Let's Encrypt SSL per WordPress (opzionale)
Nella situazione attuale, quasi tutti i siti Web utilizzano HTTPS (certificato SSL) per l'autenticità, gli account sicuri, per mantenere private le comunicazioni degli utenti. Google chiede ai proprietari di passare a HTTPS per una maggiore sicurezza e migliorare le classifiche.
Installa Certbot
Per generare un certificato SSL, installa il client Certbot ACME sul tuo sistema. Gestisce l'emissione e l'installazione del certificato senza tempi di inattività.
Il client Certbot non è disponibile nei repository di Ubuntu. Quindi, dobbiamo configurare Certbot PPA su Ubuntu.
sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository universe sudo add-apt-repository ppa:certbot/certbot sudo apt update
Ora installa il client certbot.
sudo apt install -y certbot python-certbot-nginx
Aggiorna/Modifica record DNS
Accedi al tuo registrar di domini e crea un record A/CNAME per il tuo dominio.

Attendi un po' di tempo per consentire la propagazione del record.
Installa il certificato SSL Let's Encrypt
Usa il comando certbot per generare e installare un certificato Let's Encrypt.
sudo certbot --nginx
Uscita:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter email id to receive notification - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A << Accept Terms of Service - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Subscribe to newsletter Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 << Install SSL certificate for www.itzgeek.net Deploying Certificate to VirtualHost /etc/nginx/conf.d/www.itzgeek.net.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 < Redirect HTTP traffic to HTTPS site Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/www.itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://www.itzgeek.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.itzgeek.net/privkey.pem Your cert will expire on 2019-12-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Reindirizza le richieste HTTP non www a www HTTPS con Nginx
Ora creeremo un nuovo blocco server per reindirizzare il traffico proveniente dal sito HTTP non www al sito HTTPS www. Cioè, http://itzgeek.net>> https://www.itzgeek.net .
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Aggiungi il blocco sottostante alla fine del file.
# Redirect NON-WWW HTTP to WWW HTTPS server { if ($host = itzgeek.net) { return 301 https://www.itzgeek.net$request_uri; } server_name itzgeek.net; listen 80; return 404; }
Riavvia il servizio Nginx.
sudo systemctl restart nginx
Crea database per WordPress
Accedi a MySQL.
sudo mysql -u root -p
Crea il database desiderato per WordPress.
CREATE DATABASE wordpress;
Crea un utente.
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';
Concedi all'utente creato l'autorizzazione ad accedere al database.
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
Esci dalla shell MariaDB.
quit
Scarica WordPress
Scarica l'ultimo pacchetto WordPress.
wget http://wordpress.org/latest.tar.gz
Estrai il pacchetto WordPress.
tar -zxvf latest.tar.gz
Sposta i file di WordPress nella radice del documento.
sudo mv wordpress/* /sites/www.itzgeek.net/public_html/
Rendi l'utente Apache (www-data) come proprietario del sito WordPress.
sudo chown -R www-data:www-data /sites/www.itzgeek.net/public_html/ sudo chown -R www-data:www-data /sites/www.itzgeek.net/logs/
Installa WordPress
Apri il browser e visita:
http://URL-del-tuo-sito-webOtterrai la procedura guidata di installazione di WordPress.
Scegli la lingua per la tua installazione di WordPress.

Assicurati di avere il nome del database di WordPress, l'utente del database e la password dell'utente del database. Se sei pronto, fai clic su Andiamo!.

In questa pagina, inserisci le informazioni del database per consentire a WordPress di connettersi al database.

Se la connessione al database ha esito positivo, otterrai la pagina seguente. Fare clic su Esegui l'installazione.

In questa pagina, inserisci il titolo del sito, l'amministratore di WordPress e la password (a tua scelta) e poi l'indirizzo email. Quindi, fai clic su Installa WordPress.

L'installazione di WordPress è ora completa. Puoi fare clic su Accedi per accedere alla pagina di amministrazione di WordPress.

Inserisci l'utente amministratore di WordPress e la relativa password per accedere alla pagina di amministrazione di WordPress.

Amministratore WordPress:

WordPress Frontend:

Informazioni sul server WordPress (plug-in Informazioni sul server YLD):

Poche configurazioni extra
Configura il caricamento della dimensione massima del file per WordPress
Per impostazione predefinita, PHP non consente caricamenti Web superiori a 2 MB. Per consentire il caricamento di file più grandi tramite l'interfaccia Web di WordPress, configura l'impostazione upload_max_filesize in php.ini.
sudo nano /etc/php/7.2/fpm/php.ini
Modifica la dimensione del caricamento secondo le tue esigenze
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 256M
Riavvia il servizio php7.2-fpm.
sudo systemctl restart php7.2-fpm
Configura client_max_body_size su Nginx per WordPress
Potresti riscontrare un errore di seguito anche se hai modificato la dimensione massima del file di caricamento nel passaggio precedente.
2019/09/13 04:40:08 [error] 3803#3803: *517 client intended to send too large body: 9872781 bytes, client: 49.207.143.143, server: www.itzgeek.net, request: "POST /wp-admin/update.php?action=upload-theme HTTP/1.1", host: "www.itzgeek.net", referrer: "https://www.itzgeek.net/wp-admin/theme-install.php?browse=featured"
Aggiungi il modulo core client_max_body_size nel file di configurazione del server Nginx.
sudo nano /etc/nginx/nginx.conf
La direttiva può essere aggiunta al blocco http (per tutti i siti), a un particolare blocco del server o nel contesto della posizione. Sto aggiungendo la direttiva al blocco http che imposta il valore per tutti i siti in esecuzione su questo server.
http { .... client_max_body_size 256M; .... }
Inoltre, dobbiamo cambiare il valore di post_max_size in php7.2-fpm.
sudo nano /etc/php/7.2/fpm/php.ini
Modifica la dimensione del caricamento secondo le tue esigenze.
post_max_size = 256M
Riavvia i servizi.
sudo systemctl restart php7.2-fpm sudo systemctl restart nginx
Conclusione
È tutto. Spero che tu abbia imparato come installare WordPress 5.x con Nginx su Ubuntu 18.04 / Ubuntu 16.04. Condividi il tuo feedback nella sezione commenti.