Pogon WordPress na OpenBSD 6.6 z OpenBSD HTTPD

Uvod

Glede na to, da je OpenBSD nagnjen k varnosti, je smiselno, da z njim napajate svoje spletno mesto WordPress, še posebej, ker sta WordPress in PHP ponavadi premikajoča se tarča za skriptne otroke. Ker je OpenBSD-jev httpd zasnovan predvsem za prikaz statičnih strani, so operacije POST rezervirane za procesa fastcgi in slowcgi. Zaradi tega lopov akter težje prekine proces spletnega strežnika in pridobi dostop do vašega strežnika. Operacije POST se prenašajo v proces fastcgi in uporabljajo zunanji tolmač. Ta članek ne bo razpravljal samo o nastavitvi vašega spletnega mesta WordPress, temveč o nekaterih osnovnih tehnikah vzdrževanja in o tem, kako varnostno kopirati in obnoviti vaše spletno mesto in njegovo bazo podatkov. Kjerkoli vidite example.comkot domeno, jo zamenjajte s svojo domeno.

Začetna konfiguracija

Če tega še niste storili, boste morali ustvariti /etc/doas.confdatoteko. Ukaz doas je OpenBSD enostavna zamenjava za sudo. Za udobje sem dodal možnost nopass, tako da vam ne bo treba znova vnašati gesla, ko uporabljate doas. Če tega ne želite imeti, preprosto izpustite nopass.

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

Odvisno od tega, kako je bil OpenBSD zapakiran za uvajanje, včasih upravitelj paketov morda nima konfiguriranega skladišča. Za konfiguracijo uradnega repozitorija OpenBSD moramo ustvariti /etc/installurldatoteko.

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

Zdaj moramo dodati PHP in nekaj dodatnih modulov, ki jih bo WordPress potreboval za obdelavo stvari, kot so slike in šifriranje. Ko ste pozvani, izberite namestitev najnovejšega paketa PHP. Ena stvar, ki jo morate storiti, je kopirati datoteke ini modula iz vzorčnega imenika v glavni. To je treba storiti, da omogočite dodatne module 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/.

Pridobite certifikate Let's Encrypt

V današnjem svetu morajo biti spletna mesta prikazana prek SSL-ja ali pa jih iskalniki znižajo. Na srečo ima OpenBSD odlično aplikacijo, imenovano acme-client. Odjemalec acme bo samodejno ustvaril nov zasebni ključ in zahteval novo, popolnoma veljavno potrdilo. Odjemalec acme je odvisen od tega, da ima nameščen spletni strežnik, zato bomo morali ustvariti hitro privzeto definicijo strežnika.

S svojim najljubšim urejevalnikom ustvarite /etc/httpd.conf. Druge definicije strežnika bomo v datoteko dodali pozneje. Zaenkrat bo to dovolj, da bo acme-client pravilno deloval.

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

S svojim najljubšim urejevalnikom ustvarite tudi /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 }

Zdaj moramo omogočiti in zagnati httpd. Ko to storimo, lahko zaženemo acme-client in počakamo, da pridobi naše novo, novo potrdilo. Ko bomo to naredili, bomo dodali opravilo cron, ki bo samodejno zahtevalo novo vsakih 7 dni, tako da nam ni treba skrbeti za potek.

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

Zdaj ustvarimo cron opravilo. Dodajte to vrstico pod zadnji vnos. V tem primeru acme-clientu sporočamo, da zahteva novo potrdilo vsako soboto ob 1:00 zjutraj.

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

Konfiguriranje HTTPD za WordPress

Zdaj je čas za nastavitev httpd za WordPress. Namesto da bi definicijo našega spletnega mesta postavili neposredno v /etc/httpd.conf, jo bomo postavili v ločeno datoteko, imenovano /etc/httpd.conf.example.comin jo vključili v glavno konfiguracijsko datoteko. Na splošno je dobra praksa ločiti oboje, tako da v glavni konfiguracijski datoteki ohranite definicije za celotno spletno mesto, nastavitve, specifične za domeno, pa v drugi.

Dodajte naslednjo vrstico na dno /etc/httpd.confdatoteke:

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

Zdaj z uporabo svojega najljubšega urejevalnika ustvarite svoj /etc/httpd.conf.example.com. Za udobje bomo ustvarili ločene datoteke dnevnika za vašo domeno. Tako boste lažje odpravili morebitne težave z vašim spletnim mestom.

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

Za večjo varnost bomo implementirali dodaten poziv za uporabniško ime in geslo ob prijavi na stran administracije WordPress. Ker otroci s skripti radi večkrat poskušajo nasilno izsiliti prijavo v WordPress, ustvarimo dodatno prijavo na ravni spletnega strežnika. Običajno prejmejo približno 5 ugibanj, preden WordPress vrne napako 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

Pripravite in konfigurirajte PHP in PHP-FPM

Spremeniti moramo php, da lahko vaša namestitev WordPress pošilja e-pošto. WordPress in nekateri vtičniki se zanašajo na zmožnost pošiljanja e-pošte, ki vas obvešča o nadgradnjah, opozorilih in spremembah. Nezmožnost pošiljanja e-pošte lahko pokvari nekatere funkcije WordPressa. Ker httpd deluje v chrooted okolju, moramo php povedati, kako pošilja e-pošto. Poleg tega moramo narediti nekaj prilagoditev zmogljivosti php-fpm.

Poiščite sendmail_pathvrstico /etc/php-7.3.iniin naredite naslednjo spremembo:

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

Poiščite naslednje vrstice /etc/php-fpm.confin jih spremenite na naslednji način:

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

Naslednji korak je omogočiti in zagnati php-fpm.

doas rcctl enable php73_fpm doas rcctl start php73_fpm

Pripravite in konfigurirajte MariaDB

MariaDB je nadomestna vilica MySQL. Opraviti moramo nekaj začetne konfiguracije in priprave baze podatkov za WordPress.

Preden lahko učinkovito uporabljamo MariaDB, moramo demonu mysql dovoliti, da uporablja več virov kot je privzeto. Če želite to narediti, naredite naslednje spremembe tako, da /etc/login.confdodate ta vnos na dnu.

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

V konfiguracijsko datoteko MariaDB moramo narediti nekaj sprememb, /etc/my.cnf. Če odjemalec in strežnik mysql komunicirata prek vtičnice domene UNIX namesto TCP, lahko zmanjšate porabo pomnilnika vašega strežnika. Ni vam treba narediti vseh spodaj predlaganih sprememb. Dve pomembni, ki ju je treba spremeniti, sta socketvrstica in komentiranje bind-addressvrstice. To premakne vtičnico znotraj /var/wwwokolja chroot, tako da se lahko WordPress poveže z bazo podatkov. S komentiranjem bind-addressvrstice preprečimo, da bi MariaDB poslušala vrata 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

Zdaj moramo zagnati namestitveno binarno datoteko MariaDB ter omogočiti in zagnati MariaDB. Ta postopek bo nastavil korensko geslo in po želji izpustil testno bazo podatkov. Dobro je, da upoštevate vse predloge v fazi varne namestitve.

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

Ustvarite zbirko podatkov WordPress in uporabnika baze podatkov. Ne pozabite zamenjati <wp_user>z uporabniškim imenom baze podatkov po vaši izbiri in <password>s kompleksnim geslom po vaši izbiri.

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

Namestite in konfigurirajte WordPress

WordPress že kar nekaj časa nima uradnih vrat OpenBSD, ker precej deluje takoj iz škatle. Prenesite, ekstrahirajte in premaknite namestitveno mapo 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 {} \;

Kopirati moramo /etc/resolv.confin /etc/hostsv imenik, ki ga bomo ustvarili, z imenom /var/www/etc. To je zato, da lahko WordPress uspešno doseže trg. To boste potrebovali za prenos vtičnikov in tem prek skrbniškega mesta WordPress. Prav tako je pomembno, da vtičnik Jet Pack pravilno deluje.

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

Od tu brskajte do svojega spletnega mesta WordPress z uporabo https prek URL-ja, ki ste ga navedli v definiciji spletnega strežnika. Če vse deluje pravilno, bi morali videti čarovnika za namestitev WordPressa. Ko pridete do možnosti za določitev strežnika baz podatkov, uporabitelocalhost:/var/run/mysql/mysql.sock

Ko je WordPress nameščen, je čas, da nastavite stalne povezave, da bodo videti bolj prijazne do SEO. Na skrbniškem zaslonu WordPress pojdite na Settings -> Permalinks. Kliknite na Struktura po meri in vnesite /posts/%postname%. Ko naredite to spremembo, kliknite gumb Shrani spremembe. Zdaj imate veliko lepše povezave. Na primer, stalna povezava bo videti tako:https://example.com/posts/example-blog-post

Od tu naprej bi morali imeti pripravljeno osnovno spletno mesto. Poskrbite, da boste namestili vtičnike, kot sta Jet Pack in WP-Super Cache. Vtičnik WP-Super Cache pomaga pospešiti vaše spletno mesto s predpomnjenjem spletnih strani in odpravo nenehnih iskanj v bazi podatkov, JetPack pa vam daje nekaj odličnih statistik gledanosti.

Varnostno kopiranje vašega spletnega mesta in baze podatkov WordPress

Samoumevno je, da je varnostno kopiranje vašega spletnega mesta in baze podatkov zelo pomembno. Na srečo je to razmeroma enostavno narediti. Varnostno kopirajte oba v domači imenik, nato pa ju lahko preko scp kopirate na drugo lokacijo. Posnetek lahko ustvarite tudi prek nadzorne plošče Vultr. Dobro je narediti oboje.

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

Obnovitev vašega spletnega mesta WordPress

Če je vaša baza podatkov poškodovana in je potrebna obnovitev, naredite naslednje:

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

Če ste spremenili datoteko skripta WordPress, ki je nekaj pokvarila, lahko WordPress vedno znova namestite prek skrbniške nadzorne plošče. Poiščite Updatesrazdelek in kliknite na povezavo. Poiščite gumb z oznako Re-install Now. To bo vsaj popravilo, kar je pokvarjeno, vendar mora večina vaše konfiguracije ostati nedotaknjena.

Če je vaša zbirka podatkov v dobrem stanju, vendar ste pomotoma uredili datoteko in stvari pokvarili do te mere, da ne morete priti niti do skrbniške konzole WordPress, naredite naslednje:

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


Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več