WordPress draaien op OpenBSD 6.6 met OpenBSDs HTTPD

Invoering

Gezien OpenBSD's voorliefde voor beveiliging, is het alleen logisch om uw WordPress-website ermee te laten werken, vooral omdat WordPress en PHP de neiging hebben om doelen voor scriptkiddies te verplaatsen. Aangezien OpenBSD's httpd voornamelijk is ontworpen om statische pagina's weer te geven, zijn POST-bewerkingen gereserveerd voor de fastcgi- en slowcgi-processen. Dit maakt het voor een malafide acteur moeilijker om mogelijk het proces van de webserver te doorbreken en toegang te krijgen tot uw server. POST-bewerkingen worden naar het fastcgi-proces geleid en gebruiken een externe tolk. Dit artikel bespreekt niet alleen het instellen van uw WordPress-site, maar ook enkele basistechnieken voor onderhoud en hoe u een back-up van uw site en de database kunt maken en deze kunt herstellen. Waar u example.comhet domein ook ziet, vervang het door uw domein.

Initiële configuratie

Als je dit nog niet hebt gedaan, moet je een /etc/doas.confbestand maken. Het doas commando is OpenBSD's gemakkelijke vervanging voor sudo. Voor het gemak heb ik de nopass-optie toegevoegd, zodat u uw wachtwoord niet opnieuw hoeft in te voeren wanneer u doas gebruikt. Als je dit liever niet hebt, laat dan gewoon nopass weg.

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

Afhankelijk van hoe OpenBSD is verpakt voor implementatie, heeft de pakketbeheerder soms geen repository geconfigureerd. Om de officiële OpenBSD repository te configureren, moeten we het /etc/installurlbestand aanmaken.

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

Nu moeten we PHP en enkele extra modules toevoegen die WordPress nodig heeft om zaken als afbeeldingen en encryptie af te handelen. Kies er desgevraagd voor om het nieuwste pakket PHP te installeren. Een ding dat je moet doen is de module ini-bestanden van de voorbeelddirectory naar de hoofdmap kopiëren. Dit moet gedaan worden om de aanvullende PHP-modules mogelijk te maken.

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/.

Verkrijg Let's Encrypt Certificates

In de wereld van vandaag moeten websites via SSL worden aangeboden of anders worden ze door zoekmachines afgewezen. Gelukkig heeft OpenBSD een geweldige applicatie genaamd acme-client. De acme-client zal automatisch een nieuwe privésleutel genereren en een nieuw volledig geldig certificaat aanvragen. De acme-client is afhankelijk van het hebben van een webserver, dus we zullen een snelle standaardserverdefinitie moeten maken.

Maak met je favoriete editor /etc/httpd.conf. We zullen de andere serverdefinities later aan het bestand toevoegen. Voorlopig is dit voldoende om acme-client goed te laten functioneren.

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"
    }
}

Maak ook gebruik van uw favoriete editor /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
}

Nu moeten we httpd inschakelen en starten. Zodra we dit hebben gedaan, kunnen we acme-client uitvoeren en wachten tot het ons nieuwe, nieuwe certificaat heeft verkregen. Nadat we dit hebben gedaan, voegen we een cron-taak toe om elke 7 dagen automatisch een nieuwe aan te vragen, zodat we ons geen zorgen hoeven te maken over het verlopen.

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

Nu maken we de cron-taak. Voeg deze regel toe onder het allerlaatste item. In dit geval vertellen we acme-client om het nieuwe certificaat elke zaterdag om 01:00 uur aan te vragen.

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

HTTPD configureren voor WordPress

Nu is het tijd om httpd in te stellen voor WordPress. In plaats van de definitie van onze website er rechtstreeks in te plaatsen /etc/httpd.conf, gaan we deze in een apart bestand met de naam plaatsen /etc/httpd.conf.example.comen opnemen in het hoofdconfiguratiebestand. Het is over het algemeen een goede gewoonte om de twee van elkaar te scheiden, waarbij u voor de hele site geldende definities in uw hoofdconfiguratiebestand en domeinspecifieke instellingen in een andere handhaaft.

Voeg de volgende regel toe onderaan uw /etc/httpd.confbestand:

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

Gebruik nu uw favoriete editor en maak uw /etc/httpd.conf.example.com. Voor het gemak gaan we aparte logbestanden maken voor uw domein. Dit maakt het gemakkelijker wanneer u mogelijke problemen met uw site probeert op te sporen.

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"
    }
}

Voor meer veiligheid gaan we een extra prompt voor een gebruikersnaam en wachtwoord implementeren bij het inloggen op de WordPress-beheersite. Omdat scriptkiddies herhaaldelijk proberen de login van WordPress bruteforce te maken, creëren we een extra login op webserverniveau. Meestal krijgen ze ongeveer 5 gissingen voordat WordPress een 401 ongeautoriseerde fout genereert.

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

Bereid en configureer PHP en PHP-FPM

We moeten een wijziging aanbrengen in php zodat uw WordPress-installatie e-mails kan verzenden. WordPress en sommige plug-ins vertrouwen op de mogelijkheid om e-mails te sturen om u op de hoogte te houden van upgrades, waarschuwingen en wijzigingen. Het onvermogen om e-mails te verzenden, kan bepaalde functies van WordPress verstoren. Aangezien httpd in een chrooted-omgeving draait, moeten we php vertellen hoe e-mails moeten worden verzonden. Verder moeten we wat prestatieweek-to-php-fpm doen.

Zoek naar de sendmail_pathregel in /etc/php-7.3.inien breng de volgende wijziging aan:

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

Zoek naar de volgende regels in /etc/php-fpm.confen wijzig ze als volgt:

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

De volgende stap is het inschakelen en starten van php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

Bereid en configureer MariaDB

MariaDB is een drop-in vervangende vork van MySQL. We moeten wat eerste configuratie- en database-voorbereidingswerk doen voor WordPress.

Voordat we MariaDB effectief kunnen gebruiken, moeten we de mysql-daemon toestaan ​​meer bronnen te gebruiken dan de standaard. Om dit te doen, brengt u de volgende wijzigingen aan /etc/login.confdoor dit item onderaan toe te voegen.

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

We hebben een aantal wijzigingen in de MariaDB configuratiebestand maken /etc/my.cnf. Door de mysql-client en -server te laten communiceren via een UNIX-domeinsocket in plaats van TCP, kan het geheugengebruik van uw server lager worden gehouden. U hoeft niet alle hieronder voorgestelde wijzigingen aan te brengen. De twee belangrijkste om te veranderen zijn de socketregel en om commentaar te geven bind-address. Dit verplaatst de socket naar de /var/wwwchroot-omgeving, zodat WordPress verbinding kan maken met de database. Door uit de bind-addresslijn commentaar te geven , voorkomen we dat MariaDB luistert op een TCP-poort.

[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

Nu moeten we het MariaDB-binaire installatieprogramma uitvoeren en MariaDB inschakelen en starten. Deze procedure stelt een root-wachtwoord in en laat optioneel de testdatabase vallen. Het is een goed idee om alle suggesties in de veilige installatiefase op te volgen.

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

Maak de WordPress-database en database-gebruiker. Vergeet niet te vervangen <wp_user>door de database-gebruikersnaam <password>van uw keuze en door een complex wachtwoord naar keuze.

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

Installeer en configureer WordPress

WordPress heeft al geruime tijd geen officiële OpenBSD-poort omdat het vrijwel direct uit de doos werkt. Download, extraheer en verplaats de WordPress-installatiemap.

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 {} \;

We moeten kopiëren /etc/resolv.confen /etc/hostsnaar een map die we gaan maken, genaamd /var/www/etc. Dit is zodat WordPress de markt succesvol kan bereiken. Je hebt dit nodig om plug-ins en thema's te downloaden via de WordPress-beheerderssite. Het is ook belangrijk dat de Jet Pack-plug-in correct werkt.

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

Blader vanaf hier naar uw WordPress-website met https via de URL die u hebt opgegeven in de webserverdefinitie. Als alles correct werkt, zou u de installatiewizard van WordPress moeten zien. Wanneer u de optie krijgt om een ​​databaseserver op te geven, moet u gebruikenlocalhost:/var/run/mysql/mysql.sock

Zodra WordPress is geïnstalleerd, is het tijd om de permalinks in te stellen zodat ze er SEO-vriendelijker uitzien. Ga vanuit het WordPress-beheerdersscherm naar Settings -> Permalinks. Klik op Aangepaste structuur en typ /posts/%postname%. Nadat u deze wijziging heeft aangebracht, klikt u op de knop Wijzigingen opslaan. Je hebt nu veel mooiere links. Een permalink ziet er bijvoorbeeld als volgt uit:https://example.com/posts/example-blog-post

Vanaf hier zou u een basiswebsite klaar moeten hebben. Zorg ervoor dat u plug-ins zoals Jet Pack en WP-Super Cache installeert. De WP-Super Cache-plug-in helpt uw ​​website te versnellen door webpagina's in het cachegeheugen op te slaan en het constant opzoeken van databases te elimineren. JetPack geeft u een aantal uitstekende kijkersstatistieken.

Een back-up maken van uw WordPress-website en -database

Het is vanzelfsprekend dat het maken van een back-up van uw website en database erg belangrijk is. Gelukkig is dit relatief eenvoudig te doen. Maak een back-up van beide naar uw thuismap en vervolgens kunt u ze via scp naar een andere locatie kopiëren. Je kunt ook een momentopname maken via het Vultr-configuratiescherm. Het is een goed idee om beide te doen.

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

Uw WordPress-website herstellen

Als uw database beschadigd is geraakt en herstel nodig is, doet u het volgende:

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

Als je een wijziging hebt aangebracht in een WordPress-scriptbestand dat iets kapot heeft gemaakt, kun je WordPress altijd opnieuw installeren via het admin-configuratiescherm. Zoek naar de Updatessectie en klik op de link. Zoek naar een knop met het label Re-install Now. Hiermee wordt in ieder geval opgelost wat kapot is, maar het grootste deel van uw configuratie moet intact blijven.

Als je database in goede staat is, maar je hebt per ongeluk een bestand bewerkt en dingen gebroken tot het punt dat je niet eens bij de WordPress-beheerconsole kunt komen, doe dan het volgende:

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

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.