Esecuzione di WordPress su OpenBSD 6.6 con HTTPBS OpenBSD

introduzione

Data la propensione di OpenBSD per la sicurezza, ha senso alimentare il tuo sito Web WordPress con esso, soprattutto perché WordPress e PHP tendono a spostare obiettivi per i kiddie degli script. Poiché httpd di OpenBSD è progettato principalmente per servire pagine statiche, le operazioni POST sono riservate ai processi fastcgi e slowcgi. Ciò rende più difficile per un attore canaglia interrompere potenzialmente il processo del server web e ottenere l'accesso al tuo server. Le operazioni POST vengono convogliate al processo fastcgi e utilizzano un interprete esterno. Questo articolo discuterà non solo della configurazione del sito WordPress, ma di alcune tecniche di manutenzione di base e di come eseguire il backup e il ripristino del sito e del suo database. Ovunque tu veda example.comcome dominio, ti preghiamo di sostituirlo con il tuo dominio.

Configurazione iniziale

Se non lo hai già fatto, dovrai creare un /etc/doas.conffile. Il comando doas è la facile sostituzione di OpenBSD per sudo. Per comodità, ho aggiunto l'opzione nopass in modo da non dover digitare nuovamente la password quando si utilizza doas. Se preferisci non avere questo, ometti semplicemente nopass.

su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf

A seconda di come OpenBSD è stato impacchettato per la distribuzione, a volte il gestore pacchetti potrebbe non avere un repository configurato. Per configurare il repository ufficiale OpenBSD, dobbiamo creare il /etc/installurlfile.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

Ora dobbiamo aggiungere PHP e alcuni moduli extra di cui WordPress avrà bisogno per gestire cose come immagini e crittografia. Quando richiesto, scegliere di installare il pacchetto più recente di PHP. Una cosa che devi fare è copiare i file ini del modulo dalla directory di esempio a quella principale. Questo deve essere fatto per abilitare i moduli PHP aggiuntivi.

doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.

Ottieni crittografiamo i certificati

Nel mondo di oggi, i siti Web devono essere gestiti tramite SSL o essere affiancati dai motori di ricerca. Fortunatamente, OpenBSD ha una fantastica applicazione chiamata acme-client. Il client acme genererà automaticamente una nuova chiave privata e richiederà un nuovo certificato pienamente valido. Il client acme dipende dalla presenza di un server Web, quindi sarà necessario creare una rapida definizione predefinita del server.

Con il tuo editor preferito, crea /etc/httpd.conf. In seguito aggiungeremo le altre definizioni del server al file. Per ora questo sarà sufficiente affinché acme-client funzioni correttamente.

prefork 5
types { include "/usr/share/misc/mime.types" }

server "default" {
    listen on egress port 80
    root "/htdocs"
    directory index "index.html"

    location "/.well-known/acme-challenge/*" {
        request strip 2
        root "/acme"
    }
}

Utilizzando anche il tuo editor preferito, crea /etc/acme-client.conf.

authority letsencrypt {
    api url "https://acme-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    api url "https://acme-staging-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-staging-privkey.pem"
}

domain example.com {
    alternative names { www.example.com }
    domain key "/etc/ssl/private/example.com.key"
    domain full chain certificate "/etc/ssl/example.com.crt"
    sign with letsencrypt
}

Ora dobbiamo abilitare e avviare httpd. Una volta fatto questo, possiamo eseguire acme-client e attendere che ottenga il nostro nuovo certificato. Dopo averlo fatto, aggiungeremo un cron job per richiederne automaticamente uno nuovo ogni 7 giorni, quindi non dobbiamo preoccuparci della scadenza.

doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com

Ora creiamo il processo cron. Aggiungi questa riga sotto l'ultima voce. In questo caso, stiamo dicendo ad acme-client di richiedere il nuovo certificato all'1: 00 ogni sabato.

doas crontab -e
0       1       *       *       6       acme-client -F example.com && rcctl reload httpd

Configurazione di HTTPD per WordPress

Ora è il momento di installare httpd per WordPress. Invece di inserire direttamente la definizione del nostro sito Web, la /etc/httpd.confinseriremo in un file separato chiamato /etc/httpd.conf.example.come lo includeremo nel file di configurazione principale. In genere è una buona pratica separare i due, mantenendo le definizioni a livello di sito nel file di configurazione principale e le impostazioni specifiche del dominio in uno diverso.

Aggiungi la seguente riga alla fine del /etc/httpd.conffile:

include "/etc/httpd.conf.example.com"

Ora usando il tuo editor preferito, crea il tuo /etc/httpd.conf.example.com. Per comodità, creeremo file di registro separati per il tuo dominio. Ciò semplifica la ricerca di potenziali problemi con il tuo sito.

server "example.com" {
    listen on egress port 80
    alias "www.example.com"

    # Automatically redirect to SSL
    block return 302 "https://$SERVER_NAME$REQUEST_URI"

    log {
            access "access-example.com"
            error "error-example.com"
    }
}

server "example.com" {
    listen on egress tls port 443
    alias "www.example.com"
    root "/htdocs/wordpress"
    directory index "index.php"

    log {
            access "access-example.com"
            error "error-example.com"
    }
    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/example.com.crt"
            key "/etc/ssl/private/example.com.key"
    }
    hsts {
            # max-age value is the number of seconds in 1 year
            max-age 31556952
            preload
            subdomains
    }

    location "/.well-known/acme-challenge/*" {
            root "/acme"
            request strip 2
    }
    location "/posts/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/page/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/comments/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
     location "/wp-json/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/wp-login.php*" {
            authenticate "WordPress" with "/htdocs/htpasswd"
            fastcgi socket "/run/php-fpm.sock"
    }
    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

Per una maggiore sicurezza, implementeremo un prompt aggiuntivo per un nome utente e una password durante l'accesso al sito di amministrazione di WordPress. Poiché i kiddie degli script amano provare ripetutamente e forzare l'accesso di WordPress, creiamo un accesso aggiuntivo a livello di server Web. In genere, ottengono circa 5 ipotesi prima che WordPress emetta un errore 401 non autorizzato.

doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd

Preparare e configurare PHP e PHP-FPM

Dobbiamo apportare una modifica a php in modo che l'installazione di WordPress possa inviare e-mail. WordPress e alcuni plugin si basano sulla capacità di inviare e-mail di notifica di aggiornamenti, avvisi e modifiche. L'incapacità di inviare e-mail può interrompere alcune funzionalità di WordPress. Poiché httpd funziona in ambiente chroot, dobbiamo dire a php come inviare e-mail. Inoltre, dobbiamo fare alcune tweek di performance a php-fpm.

Cerca la sendmail_pathlinea /etc/php-7.3.inie apporta le seguenti modifiche:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i

Cerca le seguenti righe /etc/php-fpm.confe modificale come segue:

pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6

Il prossimo passo è abilitare e avviare php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

Preparare e configurare MariaDB

MariaDB è un fork sostitutivo drop-in di MySQL. Dobbiamo fare alcuni lavori di configurazione iniziale e preparazione del database per WordPress.

Prima di poter utilizzare MariaDB in modo efficace, dobbiamo consentire al demone mysql di utilizzare più risorse rispetto al valore predefinito. Per fare ciò, apporta le seguenti modifiche /etc/login.confaggiungendo questa voce in fondo.

mysqld:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

Dobbiamo fare alcune modifiche nel file di configurazione MariaDB, /etc/my.cnf. Consentendo al client mysql e al server di comunicare tramite socket di dominio UNIX anziché TCP, l'utilizzo della memoria del server può essere ridotto. Non è necessario apportare tutte le modifiche suggerite di seguito. I due importanti da cambiare sono la socketlinea e commentare la bind-addresslinea. Questo sposta il socket all'interno /var/wwwdell'ambiente chroot in modo che WordPress possa connettersi al database. Commentando la bind-addresslinea, impediamo a MariaDB di ascoltare su una porta TCP.

[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306

# This will be passed to all MariaDB clients
[client]
#password=my_password

# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

Ora dobbiamo eseguire il binario di installazione di MariaDB e abilitare e avviare MariaDB. Questa procedura imposterà una password di root e, facoltativamente, eliminerà il database di test. È una buona idea seguire tutti i suggerimenti nella fase di installazione sicura.

doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation

Creare il database WordPress e l'utente del database. Ricorda di sostituire <wp_user>con il nome utente del database scelto e <password>con una password complessa di tua scelta.

mysql -u root -p 
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT

Installa e configura WordPress

WordPress non ha una porta ufficiale OpenBSD da un po 'di tempo perché praticamente funziona subito. Scarica, estrai e sposta la cartella di installazione di WordPress.

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Dobbiamo copiare /etc/resolv.confe /etc/hostsin una directory che creeremo chiamata /var/www/etc. Questo in modo che WordPress possa raggiungere con successo il mercato. Ne avrai bisogno per scaricare plugin e temi tramite il sito di amministrazione di WordPress. È anche importante che il plug-in Jet Pack funzioni correttamente.

doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.

Da qui, accedi al tuo sito Web WordPress utilizzando https tramite l'URL specificato nella definizione del server Web. Se tutto funziona correttamente, dovresti vedere l'installazione guidata di WordPress. Quando si arriva all'opzione per specificare un server di database, è necessario utilizzarelocalhost:/var/run/mysql/mysql.sock

Una volta installato WordPress, è il momento di impostare i permalink in modo che appaiano più SEO friendly. Dalla schermata di amministrazione di WordPress, vai a Settings -> Permalinks. Fai clic su Struttura personalizzata e digita /posts/%postname%. Dopo aver apportato questa modifica, fai clic sul pulsante Salva modifiche. Ora hai collegamenti molto più belli. Ad esempio, un permalink sarà simile al seguente:https://example.com/posts/example-blog-post

Da qui, dovresti avere un sito Web di base pronto per partire. Assicurati di installare plugin come Jet Pack e WP-Super Cache. Il plug-in WP-Super Cache consente di velocizzare il tuo sito Web memorizzando nella cache le pagine Web ed eliminando ricerche di database costanti e JetPack ti offre eccellenti statistiche di visualizzazione.

Backup del sito Web e del database di WordPress

Va da sé che il backup del sito Web e del database è molto importante. Per fortuna, questa è una cosa relativamente facile da fare. Eseguire il backup di entrambi nella directory principale e quindi è possibile copiarli tramite SCP in un'altra posizione. Puoi anche creare un'istantanea tramite il Pannello di controllo Vultr. È una buona idea fare entrambe le cose.

cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql

Ripristino del sito Web WordPress

Se il database è stato danneggiato ed è necessario un ripristino, eseguire le seguenti operazioni:

gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql

Se hai apportato una modifica a un file di script di WordPress che ha rotto qualcosa, puoi sempre reinstallare WordPress dal pannello di controllo dell'amministratore. Cerca la Updatessezione e fai clic sul collegamento. Cerca un pulsante con l'etichetta Re-install Now. Questo risolverà almeno ciò che è rotto ma la maggior parte della configurazione dovrebbe rimanere intatta.

Se il tuo database è in buone condizioni, ma hai accidentalmente modificato un file e hai rotto le cose al punto in cui non riesci nemmeno ad accedere alla console di amministrazione di WordPress, procedi come segue:

rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Leave a Comment

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.