Questo tutorial ti mostrerà come installare e configurare l'ultima versione di WordPress su uno stack LAMP in Debian 9 - Stretch. Wordpress, senza dubbio, è uno dei più popolari sistemi di gestione dei contenuti o CMS open source utilizzati in questi giorni per l'editoria su Internet, che alimenta oltre 60 milioni di siti Web in tutto il mondo, siano essi piccoli siti di blog o grandi marchi famosi. Basato su motore PHP e MySQL, Wordpress è spesso associato alla raccolta LAMP, installata su server dedicati o server privati virtuali o su provider di hosting web condivisi. L'acronimo LAMP descrive una raccolta di software, alias software bundle, che di solito consiste in Linux Kernel open source, indipendentemente dalla distribuzione scelta, Apache Server HTTP, che è uno dei server Web open source più popolari in Internet grazie alla sua stabilità, flessibilità e prestazioni, PHP linguaggio di programmazione interpretato lato server e MariaDB sistema di gestione di database relazionali (RDBMS), uno dei software di database più popolari, biforcato e sviluppato contemporaneamente dalla comunità open source dall'originale MySQL.
REQUISITI:
- Un'installazione pulita del sistema operativo Debian 9 su un server privato virtuale o una macchina virtuale o direttamente su una macchina bare-metal dedicata.
- Accesso remoto SSH in caso di VPS o server remoto o accesso diretto alla console
- Almeno un indirizzo IP statico per un'interfaccia di rete configurata sul server
- Nel caso in cui la pagina Web dovesse essere pubblicamente disponibile in Internet, avresti bisogno di un nome di dominio pubblico registrato con i record DNS appropriati configurati. Durante questo tutorial, utilizzeremo linuxbox.ml come dominio di esempio e un indirizzo IP statico dallo spazio privato, in NAT, dietro il router principale. Il dominio sarà accessibile da Internet tramite il port forwarding delle porte Apache 80 e 443 dal lato router alla LAN interna della macchina virtuale self-hosted.
Parte uno:installazione del pacchetto software LAMP
- La prima cosa che vuoi fare prima di iniziare a installare tutti i componenti LAMP è accedere al server Debian 9 ed eseguire una procedura di aggiornamento per tutti i componenti di sistema, come aggiornamenti del kernel, aggiornamenti dei pacchetti o patch di sicurezza, tramite eseguendo i seguenti comandi con privilegi di root.
apt-get update
apt-get upgrade
apt-get dist-upgrade
- Nel passaggio successivo, dovresti impostare il nome della tua macchina sostituendo la variabile hostname con il tuo nome descrittivo eseguendo il comando seguente. Tieni presente che potrebbe essere necessario riavviare il sistema per applicare il nuovo nome host di conseguenza.
hostnamectl set-hostname hostname.yourdomain.com
- Dovresti anche installare le seguenti utilità che torneranno utili in seguito per vari problemi di risoluzione dei problemi.
apt install net-tools sudo wget curl bash-completion
- Dopo che il nome host della macchina è stato applicato, accedi di nuovo con i privilegi di root e installa il server HTTP Apache, che è, per impostazione predefinita, precompilato in un pacchetto binario e fornito dai repository Debian 9.
apt install apache2
- Successivamente, installa l'ultima versione dell'interprete del linguaggio PHP e tutti i moduli necessari per il server Web Apache per distribuire il CMS Wordpress eseguendo il comando seguente.
apt install libapache-mod-php7.0 php7.0 php7.0-gd php7.0-xml php7.0-curl php7.0-mbstring php7.0-mcrypt php7.0-xmlrpc
- L'ultimo componente mancante ora per completare lo stack LAMP è il server di database MariaDB. Esegui il comando seguente per installare il server MariaDB insieme al modulo PHP necessario per accedere al database dal server HTTP Apache.
apt install php7.0-mysql mariadb-server mariadb-client
Dopo aver installato il database MariaDB, avvia il demone e proteggi il database eseguendo mysql_secure_installation script come illustrato nell'estratto seguente. Rispondi principalmente con sì su tutte le domande lo script ti chiede. Inoltre, assicurati di scegliere una password complessa per l'account root. Tieni presente che l'account root di MySQL non è identico all'account root di Linux. Il primo viene utilizzato solo per gestire il database MariaDB e il secondo è l'account di superutente in ogni sistema Linux. Questi account non si sovrappongono mai in un sistema.
systemctl start mariadb
mysql_secure_installation
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
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
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] y
... 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] y
... 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] y
- 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] y
... 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!
- Non abbiamo ancora finito di proteggere il database MariaDB. Per impostazione predefinita, puoi accedere a MariaDB da localhost con l'account root del database senza che ti venga richiesta una password. Per prevenire possibili problemi di sicurezza, accedi al database con l'utente root ed emetti i seguenti comandi.
mysql –u root
MariaDB> use mysql;
MariaDB> update user set plugin='' where User='root';
MariaDB> flush privileges;
MariaDB> quit
Ora, prova il database provando ad accedere con root account senza la password. Ti dovrebbe essere negato l'accesso al database MariaDB.
- Nel passaggio successivo, abiliteremo e configureremo TLS e riscriveremo i moduli per il server Web Apache, che per impostazione predefinita sono disabilitati. Esegui i comandi seguenti per abilitare entrambi i moduli.
a2enmod rewrite ssl
a2ensite default-ssl.conf
- Quindi, apri i file di configurazione di Apache per entrambi i siti abilitati e aggiungi il seguente blocco sotto DocumentRoot direttiva come illustrato nello screenshot seguente.
nano /etc/apache2/sites-enabled/000-default.conf
nano /etc/apache2/sites-enabled/default-ssl.conf
Su entrambi i file di configurazione modificati uno alla volta aggiungere il seguente blocco di codice:
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
- In apache default-ssl.conf File di configurazione TLS puoi anche aggiungere il contenuto seguente, se non esistente, al fine di falsificare la sicurezza del protocollo SSL Apache. Queste righe di codice dovrebbero correggere le comuni vulnerabilità SSL.
SSLProtocol all -SSLv2 -SSLv3
# Add SSL Cipher in one long line
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
SSLOptions +StrictRequire
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
Se le righe illustrate nell'estratto precedente esistono già nel file di configurazione SSL di Apache, assicurati di modificarle in modo che appaiano come descritto sopra. Per applicare queste impostazioni, abilita gli header di Apache modulo e riavviare il servizio eseguendo i seguenti comandi:
a2enmod headers
systemctl restart apache2.service
Per un sito Web di produzione dovrebbe essere obbligatorio abilitare il modulo Apache TLS perché WordPress CMS genera principalmente contenuti dinamici tramite gateway PHP e gestisce anche il processo di autenticazione per i suoi utenti interni. L'utilizzo della tecnologia TLS garantisce che le informazioni trasferite siano crittografate su entrambe le estremità e che la connessione sia protetta. Una terza parte o un man-in-the-middle può intercettare il traffico ma non può decrittografare il contenuto, perché le informazioni non vengono fornite in chiaro.
- Dopo aver apportato tutte le modifiche di cui sopra, testa la configurazione di Apache per rilevare potenziali errori di sintassi e se tutto è a posto riavvia i demoni LAMP in modo da riflettere tutte le modifiche apportate finora e abilitare i servizi a livello di sistema emettendo il seguenti comandi.
apachectl –t
systemctl restart apache2.service mariadb.service
systemctl enable apache2.service mariadb.service
- Infine, controlla se i servizi Apache e MariaDB hanno aperto le porte in stato di ascolto emettendo netstat comanda e filtra l'output usando egrep A questo punto, il server Web Apache dovrebbe avere le porte 80 e 443 (corrispondenti ai protocolli http e https) generalmente esposte e MariaDB dovrebbe essere vincolante solo su localhost:3306 PRESA. Usa -n segnala contro netstat comando per sopprimere la visualizzazione dei nomi dei servizi.
netstat -tlp| egrep 'http|mysql'
- Per assicurarti che il tuo server web sia accessibile da Internet tramite i protocolli HTTP e HTTPS, apri un browser e accedi al tuo nome di dominio. Navigando tramite protocollo HTTPS, nel browser verrà visualizzato un errore di certificato. Questo perché il file di configurazione TLS predefinito di Apache è configurato per utilizzare i certificati autofirmati. Dovresti accettare l'errore TLS e continuare a navigare alla pagina Web predefinita come illustrato di seguito.
http://www.tuodominio.com
https://www.tuodominio.com
Nel caso in cui non riesci a visitare la pagina Web predefinita del tuo dominio da Internet, dovresti prima verificare se alcune regole del firewall nel sistema stanno bloccando le richieste o assicurarti che le porte appropriate sul router vengano inoltrate nella tua LAN interna nel caso in cui il server si trovi dietro un NAT -ed rete. Potresti anche voler controllare i record DNS nel pannello del registrar di domini e assicurarti che puntino al tuo IP WAN e se i record hanno terminato la propagazione su Internet.
- Per verificare se PHP funziona come previsto sul lato server, crea un PHP php in /var/www/html/ percorso di sistema, che è il percorso principale del documento Web predefinito del server Web Apache, eseguendo il comando seguente e accedere al seguente URI dal browser per ottenere il risultato:http://www.yourdomain.com/info.php
echo '<?php phpinfo(); ?>' > /var/www/html/info.php
PARTE SECONDA – Installa Wordpress
- Ora che lo stack LAMP è completamente configurato, l'installazione di Wordpress CMS è relativamente semplice. Innanzitutto, accedi al database MariaDB e crea un database di installazione per Wordpress e un utente con la password corretta per l'installazione e la gestione di Wordpress CMS, eseguendo i comandi seguenti. Sentiti libero di sostituire il nome del database e le credenziali del database in base alle tue esigenze.
mysql –u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress-user'@'localhost' IDENTIFIED BY 'wordpress-pass';
FLUSH PRIVILEGES;
- Successivamente, scarica l'ultimo tarball di Wordpress dal sito Web ufficiale utilizzando wget utility ed estrai l'archivio compresso con tar utilità. Copia i file di installazione nel percorso radice del documento del server Web Apache eseguendo i comandi seguenti. Inoltre, assicurati di rimuovere il index.html predefinito pagina web.
wget http://wordpress.org/latest.tar.gz
tar xfz latest.tar.gz
cp -rf wordpress/* /var/www/html/
rm /var/www/html/index.html
- Modifica i permessi del percorso webroot di Apache come descritto di seguito per concedere al server web www-data raggruppare le autorizzazioni di scrittura complete nella directory di installazione. Questa configurazione consentirà al server Web Apache di creare o modificare file e directory in questo specifico percorso di sistema. I più importanti sarebbero i caricamenti directory e .htaccess file, che può essere utilizzato per controllare ed estendere le funzionalità di Apache.
chmod –R 775 /var/www/html/
chgrp –R www-data /var/www/html/
ls –al /var/www/html
- Ora, che tutto è a posto, iniziamo a installare Wordpress. Il processo di installazione verrà eseguito dal browser. Apri un browser e visita il tuo dominio tramite il protocollo HTTPS. Nella prima schermata dell'installazione premi su Andiamo pulsante per avviare l'installazione.
- Nella schermata di installazione successiva, aggiungi il nome del database, le credenziali di accesso al database e l'host del database che hai creato in precedenza per l'installazione di Wordpress e premi Invia pulsante per continuare. La configurazione del database verrà salvata in /var/www/html/wp-config.php Puoi modificare manualmente il file in un secondo momento per scopi speciali di Wordpress.
- Nella schermata successiva, fai clic su Esegui l'installazione e inserisci il titolo del tuo sito web, le credenziali di amministratore del sito web e l'indirizzo email. Una password complessa dovrebbe essere generata automaticamente dagli script di installazione. Puoi scegliere di salvare questa password o fornire la tua password complessa. Al termine, premi Installa Wordpress pulsante per completare il processo di installazione.
- Infine, dopo che l'installazione è stata completata con successo, accedi alla dashboard di Wordpress con le credenziali create durante il processo di installazione e inizia a gestire il tuo sito web.
Congratulazioni! Hai installato con successo l'ultima versione di Wordpress CMS sopra il pacchetto software LAMP in Debian 9, nome in codice Stretch.