Questo articolo elenca i passaggi necessari all’installazione completa di un sito WordPress, da ora in poi abbreviato con WP, su una macchina debian linux.
I passaggi trattati i seguenti:
- Installazione del database Maria DB
- Installazione di Apache
- Creazione della cartella per il sito
- Creazione del virtual host del sito
- Installazione del certificato https
- Installazione di WP
- Assimiamo che il dominio del sito sia già registrato presso un dns provider che punta al nostro server su cui installiamo il sito WP
- Ogni volta che si dovrà inserire una password o il prefisso delle tabelle WP, si dà per scontato che la password venga generata attraverso uno degli innumerevoli siti che generano password sicure con maiuscole, minuscole, numeri e simboli
- Le righe di codice che iniziano con # sono da eseguire in bash
- Le righe di codice che iniziano con > sono da eseguire in maria db
Aggiorniamo il sistema
1 2 |
# apt update # apt upgrade -y |
Installiamo il database
Installiamo il database
1 |
# apt install -y mariadb-server |
Controlliamo che il servizio di maria db giri solo sull’indirizzo localhost, non vogliamo un database esposto su internet
1 2 |
# netstat -tapn | grep :3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN xxxxx/mysqld |
Il pacchetto maria db mette a disposizione uno script per attivare le impostazioni di base per un database di produzione, che permette di
- Impostare la password di root
- Rimuovere l’ utente anonimo
- Disabilitare la login remota di root
- Eliminare il db di test
Eseguiamo quindi lo script
1 |
# mysql_secure_installation |
Ora colleghiamoci con l’utente root a mariadb
1 |
# mysql |
Creiamo il DB per il sito
1 |
> create database nome_db; |
Creiamo l’utente che verrà usato da WP per accedere al db
1 2 3 |
> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON nome_db.* TO utente_db@localhost IDENTIFIED BY 'password_utente_db' WITH GRANT OPTION; > FLUSH PRIVILEGES; > EXIT; |
Verifichiamo che l’utente riesca a collegarsi al db con la password impostata
1 |
# mysql -u utente_db -p nome_db |
Installiamo il server web
Installiamo il servizio apache
1 2 |
# apt install -y apache2 php7.0 php7.0-mysql libapache2-mod-php7.0 # systemctl restart apache2 |
Verifichiamo che il server sia attivo
1 2 |
# netstat -tapn | grep :80 tcp6 0 0 :::80 :::* LISTEN xxxxx/apache2 |
Scarichiamo WP
Cerchiamo l’ultima versione sul sito di WP Italia dopodichè scarichiamo il .tar.gz
1 2 3 4 5 |
# cd /var/www # wget https://it.wordpress.org/wordpress-5.0.3-it_IT.tar.gz # tar -xzf wordpress-5.0.3-it_IT.tar.gz # mv wordpress sito_wp # chown -R www-data:www-data sito_wp/ |
Creiamo il virtual host
Creiamo il virtual host per un ipotetico sito sito_wp.esempio.com.
La direttiva ServerName deve essere impostata con il nome vero del dominio raggiungibile tramite dns
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# cd /etc/apache2/sites-available # cat > 001-sito_wp.conf <<! <VirtualHost *:80> ServerName sito_wp.esempio.com ServerAdmin webmaster@localhost DocumentRoot /var/www/sito_wp ErrorLog ${APACHE_LOG_DIR}/sito_wp-error.log CustomLog ${APACHE_LOG_DIR}/sito_wp-access.log combined <Directory /var/www/sito_wp/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> ! |
Abilitiamo il nuovo virtual host con a2ensite
1 |
# a2ensite 001-sito_wp |
Eventualmente disabilitiamo il sito di default di apache
1 |
# a2dissite 000-default |
Infine ricarichiamo apache
1 |
# systemctl reload apache2 |
Creiamo il certificato https
Per prima cosa abilitiamo il repository stretch-backports su apt
1 2 3 4 5 |
# cat > /etc/apt/sources.list.d/stretch-backports.list <<! deb http://ftp.debian.org/debian stretch-backports main ! # apt update # apt upgrade -y |
Ora installiamo certbot
1 |
# apt install -y certbot python-certbot-apache -t stretch-backports |
Eseguiamo certbot, rispondendo ad alcune domande verrà creato il certificato https e installato in un nuovo virtual host che risponde alla porta 443 del nostro sito
1 |
# certbot --apache |
Archiviamo e mettiamo al sicuro i file .pem come ci suggerisce il bot, poi attiviamo un job in crontab che ci rinnovi il certificato ogni 2 mesi. Il certificato ha una validità di 90 giorni ma viene automaticamente rinnovato da cron
Maggiori dettagli: Certificati HTTPS gratuiti con let’s encrypt
Installiamo WP
Da browser web, carichiamo il sito https://sito_wp.esempio.com e seguiamo le istruzioni, sono richiesti alcuni parametri che sono quelli che abbiamo impostato in questo articolo
- Nome database: nome_db
- Nome utente: utente_db
- Password: password_utente_db
- Host del database: localhost
- Prefisso tabella: Generiamo una sequenza di alcuni caratteri casuali
E’ di importanza vitale per la sicurezza delle informazioni contenute nel sito, che il prefisso delle tabelle non sia quello di default wp_ e che non sia predicibile attraverso le informazioni ricavabili dal sito. Per questo, l’inserimento di una stringa contenete maiuscole, minuscole, numeri e simboli è la cosa ideale, come per la scelta delle password
Una volta verificato che il sito riesca a comunicare con il database, l’installazione può proseguire.
Le informazioni da inserire sono abbastanza chiare, io suggerisco di creare una sequenza casuale anche per il nome utente, perchè questo è l’utente amministratore ed è bene che non sia predicibile, come per la password.
Dopo aver fatto login, possiamo finalmente iniziare a configurare il sito, fare gli aggiornamenti, installare plugin, template ed inserire pagine ed articoli.