Kör WordPress på OpenBSD 6.6 med OpenBSDs HTTPD

Introduktion

Med tanke på OpenBSD:s förkärlek för säkerhet är det bara meningsfullt att driva din WordPress-webbplats med det, särskilt eftersom WordPress och PHP tenderar att vara rörliga mål för skriptbarn. Eftersom OpenBSD:s httpd huvudsakligen är designad för att tillhandahålla statiska sidor, är POST-operationer reserverade för processerna fastcgi och slowcgi. Detta gör det svårare för en oseriös aktör att potentiellt bryta webbserverns process och få tillgång till din server. POST-operationer leds till fastcgi-processen och använder en extern tolk. Den här artikeln kommer att diskutera inte bara hur du ställer in din WordPress-webbplats utan även några grundläggande underhållstekniker och hur du säkerhetskopierar och återställer din webbplats och dess databas. Var du än ser example.comsom domän, vänligen ersätt den med din domän.

Initial konfiguration

Om du inte redan har gjort det måste du skapa en /etc/doas.conffil. Kommandot doas är OpenBSD:s enkla ersättning för sudo. För enkelhetens skull har jag lagt till nopass-alternativet så att du inte behöver skriva in ditt lösenord igen när du använder doas. Om du föredrar att inte ha detta, helt enkelt utelämna nopass.

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

Beroende på hur OpenBSD paketerades för distribution, kanske pakethanteraren inte har ett arkiv konfigurerat. För att konfigurera OpenBSDs officiella arkiv måste vi skapa /etc/installurlfilen.

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

Nu måste vi lägga till PHP och några extra moduler som WordPress kommer att behöva för att hantera saker som bilder och kryptering. När du uppmanas, välj att installera det senaste paketet med PHP. En sak du måste göra är att kopiera modulens ini-filer från exempelkatalogen till huvudkatalogen. Detta måste göras för att aktivera de ytterligare PHP-modulerna.

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

Skaffa Let's Encrypt-certifikat

I dagens värld måste webbplatser betjänas via SSL eller bli nedrankade av sökmotorer. Lyckligtvis har OpenBSD en fantastisk applikation som heter acme-client. Acme-klienten kommer automatiskt att generera en ny privat nyckel och begära ett nytt fullt giltigt certifikat. Acme-klienten är beroende av att ha en webbserver på plats så vi måste skapa en snabb standardserverdefinition.

Med din favoritredigerare skapar du /etc/httpd.conf. Vi kommer att lägga till de andra serverdefinitionerna till filen senare. För nu kommer detta att räcka så att acme-klienten fungerar korrekt.

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

Skapa också med din favoritredigerare /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 måste vi aktivera och starta httpd. När vi väl har gjort detta kan vi köra acme-client och vänta på att den ska få vårt fräscha, nya certifikat. När vi har gjort detta lägger vi till ett cron-jobb för att automatiskt begära ett nytt var 7:e dag så att vi inte behöver oroa oss för utgången.

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

Nu skapar vi cron-jobbet. Lägg till denna rad under den allra sista posten. I det här fallet säger vi åt acme-client att begära det nya certifikatet klockan 01:00 varje lördag.

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

Konfigurera HTTPD för WordPress

Nu är det dags att ställa in httpd för WordPress. Istället för att placera vår webbplats definition direkt i /etc/httpd.confkommer vi att placera den i en separat fil som heter /etc/httpd.conf.example.comoch inkludera den i huvudkonfigurationsfilen. Det är i allmänhet en god praxis att separera de två, att behålla webbplatstäckande definitioner i din huvudkonfigurationsfil och domänspecifika inställningar i en annan.

Lägg till följande rad längst ned i /etc/httpd.conffilen:

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

Använd nu din favoritredigerare och skapa din /etc/httpd.conf.example.com. För enkelhetens skull kommer vi att skapa separata loggfiler för din domän. Detta gör det enklare när du försöker jaga potentiella problem med din webbplats.

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

För ökad säkerhet kommer vi att implementera en extra uppmaning om ett användarnamn och lösenord när vi loggar in på WordPress administrationswebbplats. Eftersom scriptkiddies gillar att upprepade gånger försöka bruteforce WordPresss inloggning, skapar vi ytterligare en inloggning på webbservernivå. Vanligtvis får de cirka 5 gissningar innan WordPress kastar ett 401 obehörigt fel.

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

Förbered och konfigurera PHP och PHP-FPM

Vi måste göra en förändring i php så att din WordPress-installation kan skicka e-post. WordPress och vissa plugins förlitar sig på möjligheten att skicka e-postmeddelanden som meddelar dig om uppgraderingar, varningar och ändringar. Oförmågan att skicka e-post kan bryta vissa funktioner i WordPress. Eftersom httpd körs i chrooted miljö, måste vi berätta för php hur man skickar e-post. Dessutom måste vi göra några prestanda tweeks till php-fpm.

Leta efter sendmail_pathlinjen in /etc/php-7.3.inioch gör följande ändring:

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

Leta efter följande rader /etc/php-fpm.confoch ändra dem enligt följande:

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

Nästa steg är att aktivera och starta php-fpm.

doas rcctl enable php73_fpm doas rcctl start php73_fpm

Förbered och konfigurera MariaDB

MariaDB är en drop-in ersättningsgaffel för MySQL. Vi behöver göra en del inledande konfigurations- och databasförberedelser för WordPress.

Innan vi kan använda MariaDB effektivt måste vi tillåta mysql-demonen att använda fler resurser än standarden. För att göra detta, gör följande ändringar /etc/login.confgenom att lägga till denna post längst ned.

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

Vi måste göra några ändringar i MariaDB-konfigurationsfilen, /etc/my.cnf. Genom att låta mysql-klienten och servern kommunicera via UNIX-domänsocket istället för TCP, kan minnesanvändningen på din server hållas lägre. Du behöver inte göra alla ändringar som föreslås nedan. De två viktiga att ändra är socketlinjen och att kommentera bind-addresslinjen. Detta flyttar socket inuti /var/wwwchroot-miljön så att WordPress kan ansluta till databasen. Genom att kommentera bind-addressraden förhindrar vi MariaDB från att lyssna på en TCP-port.

[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 måste vi köra MariaDB-installationsbinären och aktivera och starta MariaDB. Denna procedur kommer att ställa in ett root-lösenord och eventuellt släppa testdatabasen. Det är en bra idé att följa alla förslag i det säkra installationsstadiet.

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

Skapa WordPress-databasen och databasanvändaren. Kom ihåg att ersätta <wp_user>med ditt val av databasanvändarnamn och <password>med ett komplext lösenord som du väljer.

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

Installera och konfigurera WordPress

WordPress har inte haft en officiell OpenBSD-port på ett bra tag eftersom det i stort sett fungerar direkt ur lådan. Ladda ner, extrahera och flytta WordPress-installationsmappen.

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

Vi måste kopiera /etc/resolv.confoch /etc/hoststill en katalog vi ska skapa som heter /var/www/etc. Detta för att WordPress framgångsrikt ska kunna nå marknaden. Du behöver detta för att ladda ner plugins och teman via WordPress adminwebbplats. Det är också viktigt att Jet Pack-pluginen fungerar korrekt.

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

Härifrån bläddrar du till din WordPress-webbplats med https via den URL som du angav i webbserverns definition. Om allt fungerar korrekt bör du se WordPress installationsguiden. När du kommer till alternativet att ange en databasserver bör du användalocalhost:/var/run/mysql/mysql.sock

När WordPress väl har installerats är det dags att ställa in permalänkarna så att de ser mer SEO-vänliga ut. Från WordPress adminskärm, gå till Settings -> Permalinks. Klicka på Anpassad struktur och skriv /posts/%postname%. När du har gjort denna ändring klickar du på knappen Spara ändringar. Du har nu mycket snyggare länkar. Till exempel kommer en permalänk att se ut så här:https://example.com/posts/example-blog-post

Härifrån bör du ha en grundläggande webbplats redo att gå. Se till att du installerar plugins som Jet Pack och WP-Super Cache. WP-Super Cache-plugin hjälper till att snabba upp din webbplats genom att cachelagra webbsidor och eliminera konstanta databasuppslagningar och JetPack ger dig utmärkt tittarstatistik.

Säkerhetskopiera din WordPress-webbplats och databas

Det borde vara självklart att säkerhetskopiering av din webbplats och databas är mycket viktigt. Tack och lov är detta en relativt enkel sak att göra. Säkerhetskopiera både till din hemkatalog och sedan kan du kopiera dem via scp till en annan plats. Du kan också skapa en ögonblicksbild via Vultr kontrollpanelen. Det är en bra idé att göra båda.

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

Återställa din WordPress-webbplats

Om din databas blev skadad och en återställning är nödvändig, gör följande:

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

Om du har gjort en ändring i en WordPress-skriptfil som har gått sönder något, kan du alltid installera om WordPress via administratörskontrollpanelen. Leta efter Updatesavsnittet och klicka på länken. Leta efter en knapp märkt Re-install Now. Detta kommer åtminstone att fixa det som är trasigt, men det mesta av din konfiguration bör förbli intakt.

Om din databas är i bra skick, men du har redigerat en fil av misstag och har sönder saker till den grad att du inte ens kan komma till WordPress-administratörskonsolen, gör du följande:

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


The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer