Запуск WordPress на OpenBSD 6.6 з OpenBSD 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. Натисніть на Custom Structure і введіть /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 {} \;


Leave a Comment

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

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. Прочитайте цю статтю, щоб дізнатися більше