Изпълняване на WordPress на OpenBSD 6.6 с OpenBSDs HTTPD

Въведение

Като се има предвид склонността на OpenBSD към сигурността, има смисъл само да захранвате вашия уебсайт WordPress с него, особено защото WordPress и PHP са склонни да бъдат движещи се цели за деца със скриптове. Тъй като httpd на OpenBSD е предназначен основно за обслужване на статични страници, POST операциите са запазени за процесите fastcgi и slowcgi. Това прави по-трудно за измамник потенциално да наруши процеса на уеб сървъра и да получи достъп до вашия сървър. POST операциите се прехвърлят към процеса на fastcgi и използват външен интерпретатор. Тази статия ще обсъди не само настройката на вашия WordPress сайт, но и някои основни техники за поддръжка и как да архивирате и възстановите вашия сайт и неговата база данни. Където и да видите example.comкато домейн, моля, заменете го с вашия домейн.

Първоначална конфигурация

Ако все още не сте го направили, ще трябва да създадете /etc/doas.confфайл. Командата doas е лесната замяна на sudo на OpenBSD. За удобство добавих опцията nopass, така че да не се налага да въвеждате отново паролата си, когато използвате doas. Ако предпочитате да нямате това, просто пропуснете nopass.

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

В зависимост от това как OpenBSD е бил пакетиран за внедряване, понякога мениджърът на пакети може да няма конфигурирано хранилище. За да конфигурираме официалното хранилище на OpenBSD, трябва да създадем /etc/installurlфайла.

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

Сега трябва да добавим PHP и някои допълнителни модули, от които WordPress ще се нуждае, за да обработва неща като изображения и криптиране. Когато бъдете подканени, изберете да инсталирате най-новия пакет на PHP. Едно нещо, което трябва да направите, е да копирате ini файловете на модула от примерната директория в основната. Това трябва да се направи, за да се активират допълнителните 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/.

Получете сертификати Let's Encrypt

В днешния свят уебсайтовете трябва да се обслужват чрез SSL или да бъдат понижавани от търсачките. За щастие OpenBSD има страхотно приложение, наречено acme-client. acme-клиентът автоматично ще генерира нов частен ключ и ще поиска нов напълно валиден сертификат. acme-клиентът зависи от наличието на уеб сървър, така че ще трябва да създадем бърза дефиниция на сървъра по подразбиране.

С любимия си редактор създайте /etc/httpd.conf. Ще добавим другите дефиниции на сървъра към файла по-късно. Засега това ще бъде достатъчно, за да може acme-client да функционира правилно.

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

Също така, като използвате любимия си редактор, създайте /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 }

Сега трябва да активираме и стартираме httpd. След като направим това, тогава можем да стартираме acme-client и да изчакаме да получи нашия нов, нов сертификат. След като направим това, ще добавим задача за cron, за да поискаме автоматично нова на всеки 7 дни, така че не е нужно да се притесняваме за изтичане.

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

Сега създаваме заданието на cron. Добавете този ред под последния запис. В този случай казваме на acme-client да поиска новия сертификат в 1:00 сутринта всяка събота.

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

Конфигуриране на HTTPD за WordPress

Сега е време да настроите httpd за WordPress. Вместо да поставим дефиницията на нашия уебсайт директно в /etc/httpd.conf, ние ще го поставим в отделен файл, наречен /etc/httpd.conf.example.comи ще го включим в основния конфигурационен файл. Като цяло е добра практика да разделите двете, като запазите дефинициите за целия сайт в основния си конфигурационен файл, а специфичните за домейна настройки в различен.

Добавете следния ред в долната част на /etc/httpd.confфайла си:

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

Сега, като използвате любимия си редактор, създайте своя /etc/httpd.conf.example.com. За удобство ще създадем отделни лог файлове за вашия домейн. Това улеснява, когато се опитвате да преследвате потенциални проблеми с вашия сайт.

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

За по-голяма сигурност ще внедрим допълнителна подкана за потребителско име и парола при влизане в административния сайт на WordPress. Тъй като децата със скриптове обичат многократно да опитват да насилят влизането на WordPress, ние създаваме допълнително влизане на ниво уеб сървър. Обикновено те получават около 5 предположения, преди WordPress да изведе грешка 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

Подгответе и конфигурирайте PHP и PHP-FPM

Трябва да направим промяна в php, така че вашата инсталация на WordPress да може да изпраща имейли. WordPress и някои плъгини разчитат на възможността да изпращат имейли, уведомяващи ви за надстройки, сигнали и промени. Невъзможността за изпращане на имейли може да наруши определени функции на WordPress. Тъй като httpd работи в chrooted среда, трябва да кажем на php как да изпраща имейли. Освен това трябва да направим някои промени в производителността на php-fpm.

Потърсете sendmail_pathреда /etc/php-7.3.iniи направете следната промяна:

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

Потърсете следните редове /etc/php-fpm.confи ги променете, както следва:

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

Следващата стъпка е да активирате и стартирате php-fpm.

doas rcctl enable php73_fpm doas rcctl start php73_fpm

Подгответе и конфигурирайте MariaDB

MariaDB е заместваща вилка на MySQL. Трябва да извършим първоначална работа по конфигуриране и подготовка на база данни за WordPress.

Преди да можем да използваме MariaDB ефективно, трябва да позволим на демона mysql да използва повече ресурси, отколкото е по подразбиране. За да направите това, направете следните промени, /etc/login.confкато добавите този запис в долната част.

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

Трябва да направим някои промени в конфигурационния файл на MariaDB, /etc/my.cnf. Като накарате mysql клиент и сървър да комуникират чрез UNIX домейн сокет вместо TCP, използването на паметта на вашия сървър може да се поддържа по-ниско. Не е нужно да правите всички промени, предложени по-долу. Двете важни за промяна са socketлинията и да се коментира bind-addressреда. Това премества сокета в /var/wwwсредата на chroot, така че WordPress да може да се свърже с базата данни. Като коментираме bind-addressреда, ние предотвратяваме прослушването на MariaDB на 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

Сега трябва да стартираме двоичния файл за инсталиране на MariaDB и да активираме и стартираме MariaDB. Тази процедура ще зададе root парола и по желание ще премахне тестовата база данни. Добра идея е да следвате всички предложения на етапа на защитена инсталация.

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

Създайте базата данни на WordPress и потребител на базата данни. Не забравяйте да замените <wp_user>с избрано от вас потребителско име на база данни и <password>сложна парола по ваш избор.

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

Инсталирайте и конфигурирайте WordPress

WordPress не е имал официален OpenBSD порт от доста време, защото почти работи веднага след изваждането. Изтеглете, извлечете и преместете инсталационната папка на 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 {} \;

Трябва да копираме /etc/resolv.confи /etc/hostsв директория, която ще създадем, наречена /var/www/etc. Това е така, за да може WordPress успешно да достигне до пазара. Това ще ви е необходимо, за да изтеглите плъгини и теми чрез администраторския сайт на WordPress. Също така е важно плъгинът Jet Pack да работи правилно.

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

От тук прегледайте вашия уебсайт на WordPress, като използвате https чрез URL адреса, който сте посочили в дефиницията на уеб сървъра. Ако всичко работи правилно, трябва да видите съветника за инсталиране на WordPress. Когато стигнете до опцията да посочите сървър на база данни, трябва да използватеlocalhost:/var/run/mysql/mysql.sock

След като WordPress бъде инсталиран, е време да настроите постоянните връзки, така че да изглеждат по-удобни за SEO. От администраторския екран на WordPress отидете на Settings -> Permalinks. Щракнете върху Персонализирана структура и въведете /posts/%postname%. След като направите тази промяна, щракнете върху бутона Запазване на промените. Вече имате много по-добре изглеждащи връзки. Например, постоянна връзка ще изглежда така:https://example.com/posts/example-blog-post

Оттук нататък трябва да имате основен уебсайт, готов за работа. Уверете се, че инсталирате плъгини като Jet Pack и WP-Super Cache. Приставката WP-Super Cache помага за ускоряване на вашия уебсайт, като кешира уеб страници и елиминира постоянните търсения в базата данни, а JetPack ви дава някои отлични статистически данни за гледаемостта.

Архивиране на вашия WordPress уебсайт и база данни

От само себе си се разбира, че архивирането на вашия уебсайт и база данни е много важно. За щастие, това е сравнително лесно да се направи. Архивирайте и двете във вашата домашна директория и след това можете да ги копирате чрез scp на друго място. Можете също да създадете моментна снимка чрез контролния панел Vultr. Добра идея е да направите и двете.

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

Възстановяване на вашия WordPress уебсайт

Ако вашата база данни се повреди и е необходимо възстановяване, изпълнете следното:

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

Ако сте направили промяна в скриптов файл на WordPress, който е счупил нещо, винаги можете да преинсталирате WordPress чрез администраторския контролен панел. Потърсете Updatesсекцията и кликнете върху връзката. Потърсете бутон с етикет Re-install Now. Това поне ще поправи това, което е счупено, но по-голямата част от конфигурацията ви трябва да остане непокътната.

Ако вашата база данни е в добро състояние, но случайно сте редактирали файл и сте развалили нещата до точката, в която дори не можете да стигнете до администраторската конзола на WordPress, направете следното:

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


Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече