Spuštění WordPressu na OpenBSD 6.6 s OpenBSDs HTTPD

Úvod

Vzhledem k zálibě OpenBSD pro bezpečnost má smysl pouze napájet váš web WordPress s ním, zejména proto, že WordPress a PHP mají tendenci být pohyblivými cíli pro děti se skripty. Protože httpd OpenBSD je navrženo hlavně pro zobrazování statických stránek, operace POST jsou vyhrazeny pro procesy fastcgi a slowcgi. To ztěžuje nepoctivému herci potenciálně narušit proces webového serveru a získat přístup k vašemu serveru. Operace POST jsou směrovány do procesu fastcgi a používají externí interpret. Tento článek bude diskutovat nejen o nastavení vašeho webu WordPress, ale o některých základních technikách údržby a o tom, jak zálohovat a obnovit váš web a jeho databázi. Kdekoli vidíte example.comjako doménu, nahraďte ji prosím svou doménou.

Počáteční konfigurace

Pokud jste tak ještě neučinili, budete muset vytvořit /etc/doas.confsoubor. Příkaz doas je snadná náhrada sudo v OpenBSD. Pro větší pohodlí jsem přidal možnost nopass, takže při používání doas nebudete muset znovu zadávat heslo. Pokud to nechcete mít, jednoduše nopass vynechejte.

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

V závislosti na tom, jak bylo OpenBSD zabaleno pro nasazení, někdy nemusí mít správce balíčků nakonfigurováno úložiště. Pro konfiguraci oficiálního úložiště OpenBSD musíme /etc/installurlsoubor vytvořit .

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

Nyní musíme přidat PHP a některé extra moduly, které bude WordPress potřebovat, aby zvládl věci jako obrázky a šifrování. Po zobrazení výzvy zvolte instalaci nejnovějšího balíčku PHP. Jedna věc, kterou musíte udělat, je zkopírovat soubory ini modulu ze vzorového adresáře do hlavního. To je nutné provést, aby bylo možné povolit další moduly PHP.

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

Získejte certifikáty Let's Encrypt

V dnešním světě musí být webové stránky obsluhovány přes SSL nebo musí být vyhledávači snižovány. Naštěstí má OpenBSD skvělou aplikaci s názvem acme-client. Klient acme automaticky vygeneruje nový soukromý klíč a požádá o nový plně platný certifikát. Acme-client závisí na tom, zda má webový server na svém místě, takže budeme muset vytvořit rychlou výchozí definici serveru.

Pomocí svého oblíbeného editoru vytvořte /etc/httpd.conf. Ostatní definice serveru přidáme do souboru později. Prozatím to bude stačit, aby acme-client fungoval správně.

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

Také pomocí svého oblíbeného editoru vytvořte /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 }

Nyní musíme povolit a spustit httpd. Jakmile to uděláme, můžeme spustit acme-client a čekat, až získá náš čerstvý, nový certifikát. Poté, co to uděláme, přidáme úlohu cron, abychom každých 7 dní automaticky požadovali novou, takže se nemusíme starat o vypršení platnosti.

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

Nyní vytvoříme úlohu cron. Přidejte tento řádek pod úplně poslední položku. V tomto případě říkáme acme-client, aby požádal o nový certifikát každou sobotu v 1:00.

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

Konfigurace HTTPD pro WordPress

Nyní je čas nastavit httpd pro WordPress. Namísto umístění definice naší webové stránky přímo do /etc/httpd.conf, ji umístíme do samostatného souboru s názvem /etc/httpd.conf.example.coma zahrneme ji do hlavního konfiguračního souboru. Obecně je dobrou praxí tyto dvě věci oddělit a ponechat definice pro celý web v hlavním konfiguračním souboru a nastavení pro doménu v jiném.

Na konec /etc/httpd.confsouboru přidejte následující řádek :

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

Nyní pomocí svého oblíbeného editoru vytvořte svůj /etc/httpd.conf.example.com. Pro usnadnění vytvoříme samostatné soubory protokolu pro vaši doménu. To usnadňuje hledání potenciálních problémů na vašem webu.

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

Pro větší bezpečnost se chystáme implementovat další výzvu k zadání uživatelského jména a hesla při přihlašování na administrační stránku WordPress. Vzhledem k tomu, že skriptovací děti rádi opakovaně zkoušejí a brutálně vynucují přihlášení WordPress, vytvoříme další přihlášení na úrovni webového serveru. Obvykle dostanou asi 5 odhadů, než WordPress vyvolá chybu 401 Unauthorized.

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

Připravte a nakonfigurujte PHP a PHP-FPM

Musíme provést změnu v php, aby vaše instalace WordPress mohla odesílat e-maily. WordPress a některé pluginy spoléhají na schopnost odesílat e-maily s upozorněním na aktualizace, upozornění a změny. Neschopnost posílat e-maily může narušit některé funkce WordPressu. Protože httpd běží v chrootovaném prostředí, musíme php sdělit, jak má odesílat e-maily. Kromě toho musíme provést několik vylepšení výkonu php-fpm.

Vyhledejte sendmail_pathřádek /etc/php-7.3.inia proveďte následující změnu:

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

Vyhledejte následující řádky /etc/php-fpm.confa změňte je následovně:

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

Dalším krokem je povolení a spuštění php-fpm.

doas rcctl enable php73_fpm doas rcctl start php73_fpm

Připravte a nakonfigurujte MariaDB

MariaDB je drop-in náhradní vidlice MySQL. Potřebujeme provést počáteční konfiguraci a přípravu databáze pro WordPress.

Než budeme moci efektivně používat MariaDB, musíme povolit démonu mysql používat více zdrojů, než je výchozí. Chcete-li to provést, proveďte následující změny /etc/login.confpřidáním této položky do spodní části.

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

Musíme provést nějaké změny v konfiguračním souboru MariaDB, /etc/my.cnf. Tím, že klient a server mysql komunikují prostřednictvím soketu domény UNIX namísto TCP, může být využití paměti vašeho serveru nižší. Nemusíte provádět všechny níže navrhované změny. Dvě důležité, které je třeba změnit, jsou socketřádek a komentář k bind-addressřádku. Tím se soket přesune do /var/wwwprostředí chroot, takže se WordPress může připojit k databázi. Zakomentováním bind-addressřádku zabráníme MariaDB naslouchat na TCP portu.

[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

Nyní musíme spustit instalační binární soubor MariaDB a povolit a spustit MariaDB. Tento postup nastaví heslo uživatele root a volitelně zruší testovací databázi. Je dobré řídit se všemi návrhy ve fázi bezpečné instalace.

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

Vytvořte databázi WordPress a uživatele databáze. Nezapomeňte nahradit vámi zvoleným <wp_user>uživatelským jménem databáze a <password>složitým heslem dle vašeho výběru.

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

Nainstalujte a nakonfigurujte WordPress

WordPress už nějakou dobu nemá oficiální port OpenBSD, protože v podstatě funguje hned po vybalení. Stáhněte, extrahujte a přesuňte instalační složku 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 {} \;

Musíme zkopírovat /etc/resolv.confa /etc/hostsdo adresáře, který se chystáme vytvořit s názvem /var/www/etc. Je to proto, aby se WordPress mohl úspěšně dostat na trh. Budete to potřebovat, abyste si mohli stáhnout pluginy a motivy přes web správce WordPress. Je také důležité, aby plugin Jet Pack fungoval správně.

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

Odtud přejděte na svůj web WordPress pomocí https prostřednictvím adresy URL, kterou jste zadali v definici webového serveru. Pokud vše funguje správně, měli byste vidět průvodce instalací WordPress. Když se dostanete k možnosti zadat databázový server, měli byste použítlocalhost:/var/run/mysql/mysql.sock

Jakmile je WordPress nainstalován, je čas nastavit permalinky tak, aby vypadaly lépe pro SEO. Na obrazovce správce WordPress přejděte na Settings -> Permalinks. Klikněte na Custom Structure a napište /posts/%postname%. Po provedení této změny klikněte na tlačítko Uložit změny. Nyní máte mnohem hezčí odkazy. Trvalý odkaz bude vypadat například takto:https://example.com/posts/example-blog-post

Odtud byste měli mít připravenou základní webovou stránku. Ujistěte se, že nainstalujete pluginy, jako je Jet Pack a WP-Super Cache. Plugin WP-Super Cache pomáhá urychlit váš web ukládáním webových stránek do mezipaměti a eliminací neustálého vyhledávání v databázi a JetPack vám poskytuje vynikající statistiky sledovanosti.

Zálohujte svůj web a databázi WordPress

Je samozřejmé, že zálohování webu a databáze je velmi důležité. Naštěstí je to relativně snadné. Zálohujte si oba do svého domovského adresáře a poté je můžete zkopírovat přes scp na jiné místo. Můžete také vytvořit snímek pomocí ovládacího panelu Vultr. Je dobré udělat obojí.

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

Obnovení vašeho webu WordPress

Pokud se vaše databáze poškodila a je nutná obnova, proveďte následující:

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

Pokud jste provedli změnu v souboru skriptu WordPress, která něco pokazila, můžete WordPress kdykoli znovu nainstalovat prostřednictvím ovládacího panelu správce. Vyhledejte Updatessekci a klikněte na odkaz. Hledejte tlačítko označené Re-install Now. Tím se alespoň opraví to, co je nefunkční, ale většina vaší konfigurace by měla zůstat nedotčená.

Pokud je vaše databáze v dobrém stavu, ale omylem jste upravili soubor a rozbili věci do bodu, kdy se nemůžete dostat ani do administrátorské konzole WordPress, proveďte následující:

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

Umělá inteligence není v budoucnosti, je zde přímo v současnosti V tomto blogu si přečtěte, jak aplikace umělé inteligence ovlivnily různé sektory.

Útoky DDOS: Stručný přehled

Útoky DDOS: Stručný přehled

Jste také obětí DDOS útoků a nemáte jasno v metodách prevence? Chcete-li vyřešit své dotazy, přečtěte si tento článek.

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Přemýšleli jste někdy, jak hackeři vydělávají peníze?

Možná jste slyšeli, že hackeři vydělávají spoustu peněz, ale napadlo vás někdy, jak takové peníze vydělávají? Pojďme diskutovat.

Revoluční vynálezy od Googlu, které vám usnadní život.

Revoluční vynálezy od Googlu, které vám usnadní život.

Chcete vidět revoluční vynálezy Google a jak tyto vynálezy změnily život každého dnešního člověka? Pak si přečtěte na blogu a podívejte se na vynálezy od Googlu.

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Friday Essential: Co se stalo s auty řízenými umělou inteligencí?

Koncept aut s vlastním pohonem, která vyrazí na silnice s pomocí umělé inteligence, je snem, který už nějakou dobu máme. Ale přes několik slibů nejsou nikde vidět. Přečtěte si tento blog a dozvíte se více…

Technologická singularita: vzdálená budoucnost lidské civilizace?

Technologická singularita: vzdálená budoucnost lidské civilizace?

Jak se věda vyvíjí rychlým tempem a přebírá mnoho našeho úsilí, stoupá také riziko, že se vystavíme nevysvětlitelné singularitě. Přečtěte si, co pro nás může znamenat singularita.

Evoluce ukládání dat – Infografika

Evoluce ukládání dat – Infografika

Způsoby ukládání dat se mohou vyvíjet od narození dat. Tento blog se zabývá vývojem ukládání dat na základě infografiky.

Funkcionality vrstev referenční architektury velkých dat

Funkcionality vrstev referenční architektury velkých dat

Přečtěte si blog, abyste co nejjednodušším způsobem poznali různé vrstvy v architektuře velkých dat a jejich funkce.

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

6 úžasných výhod toho, že máme v životě zařízení pro chytrou domácnost

V tomto digitálním světě se chytrá domácí zařízení stala klíčovou součástí života. Zde je několik úžasných výhod chytrých domácích zařízení o tom, jak náš život stojí za to žít a zjednodušit jej.

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Aktualizace doplňku macOS Catalina 10.15.4 způsobuje více problémů než řešení

Apple nedávno vydal doplňkovou aktualizaci macOS Catalina 10.15.4, která opravuje problémy, ale zdá se, že aktualizace způsobuje další problémy, které vedou k zablokování počítačů mac. Přečtěte si tento článek a dozvíte se více