OpenBSD як рішення для електронної комерції з PrestaShop і Apache

Вступ

У цьому посібнику демонструється OpenBSD як рішення для електронної комерції з використанням PrestaShop і Apache.

Apache потрібен, оскільки PrestaShop має складні вимоги до перезапису URL-адрес, які не підтримуються вбудованим веб-сервером OpenBSD, httpd. У цьому посібнику використовуються самопідписані сертифікати. Для виробництва використовуйте перевірений сертифікат.

Завдання на підготовку

Тимчасово створити звичайного користувача, якому дозволено використовувати doasбез пароля. Цей доступ буде видалено після налаштування.

user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf

Додайте сховище пакетів OpenBSD.

echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl

Пересилайте щоденні електронні листи про статус та безпеку на вашу адресу.

echo '[email protected]' > /root/.forward

Встановіть ім'я хоста сервера.

echo 'www.example.com' > /etc/myname
hostname www.example.com

Додайте FQDN та IP-адресу вашого сервера до /etc/hosts.
Замініть 192.0.2.1на свою IP-адресу Vultr.

127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com

Додайте необхідні пакети для PrestaShop і Apache. Коли буде запропоновано, виберіть найновіші версії.

doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip

Створено самопідписаний сертифікат SSL для тестування. Встановіть Загальне ім’я для FQDN вашого сервера, наприклад www.example.com.

openssl req -x509 -new -nodes -newkey rsa:4096 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/example.com.crt -days 3650 -sha256
chmod 0600 /etc/ssl/private/example.com.key

Завантажте та розпакуйте PrestaShop

Знайдіть URL-адресу останньої версії PrestaShop , завантажте /tmpта розпакуйте її /var/www/htdocs/prestashop.

cd /tmp
wget <https://download.prestashop.com/download/releases/prestashop_1.7.6.4.zip>
unzip prestashop_1.7.6.4.zip -d /var/www/htdocs/prestashop
chown -R www:www /var/www/htdocs/prestashop

Налаштуйте брандмауер OpenBSD (pf).

Налаштуйте брандмауер на блокування всього вхідного трафіку, крім ssh , www та https .

Зробіть резервну копію /etc/pf.conf.

cp /etc/pf.conf /etc/pf.conf.bak

Відредагуйте, /etc/pf.confяк показано.

set skip on lo

block in
pass out  

pass in on egress inet proto tcp to port {ssh, www, https} \
    flags S/SA keep state

Перевірте та активуйте правила брандмауера.

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf

Налаштуйте OpenSMTPD як ретранслятор електронної пошти

Скопіюйте свій /etc/mail/smtpd.confфайл.

cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak

Відредагуйте, /etc/mail/smtpd.confяк показано нижче.

Примітки: * Визначення таблиці для секретів містить ім’я користувача та пароль для передачі пошти. * Вихідне дію переглядає своє ім'я користувача та пароль під ярликом prestashopв /etc/mail/secretsі ретранслюють електронну пошту через сервер електронної пошти.

    table aliases file:/etc/mail/aliases
    table secrets file:/etc/mail/secrets

    listen on lo0

    action "local_mail" mbox alias <aliases>
    action "outbound" relay host smtp+tls://[email protected]:587 \
        tls no-verify auth <secrets>

    match from local for local action "local_mail"
    match from local for any action "outbound"

Створюйте /etc/mail/secrets

Замініть адресу електронної пошти та пароль обліковими даними, які ви використовуєте для свого сервера електронної пошти.

echo "prestashop [email protected]:password" > /etc/mail/secrets

Установіть дозволи для захисту /etc/mail/secrets

chmod 0600 /etc/secrets

Перегляньте файл конфігурації на наявність помилок і перезапустіть демон smtpd.

smtpd -n
rcctl restart smtpd

Налаштуйте середовище PHP та PHP-FPM

Налаштуйте процес PHP-FPM для прослуховування через сокет TCP замість сокета домену UNIX.

Зробіть наступні зміни для /etc/php-fpm.confфайлу.

...
; If using a TCP port, never expose this to a public network.
;listen = /var/www/run/php-fpm.sock
listen = 127.0.0.1:9000

Make some additional changes to the PHP environment in /etc/php-7.3.ini. This file name may change slightly if the version is newer than 7.3. These changes:

  • Allow for larger files to be uploaded.
  • Disable the chrooted environment.
  • Configure PHP to send email via sendmail.

    ; Default Value: not set
    ;chroot = /var/www
    ...
    ; Maximum allowed size for uploaded files.
    ; <http://php.net/upload-max-filesize>
    upload_max_filesize = 6M
    ...
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; <http://php.net/sendmail-path>
    ;sendmail_path =
    sendmail_path = /usr/sbin/sendmail -t -i
    ...
    ; Whether to allow the treatment of URLs (like <http://> or <ftp://)> as files.
    ; <http://php.net/allow-url-fopen>
    allow_url_fopen = On
    ...
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; <http://php.net/post-max-size>
    post_max_size = 12M
    

    Enable the PHP plugins.

    cp /etc/php-7.3.sample/* /etc/php-7.3/.

Enable and start the PHP-FPM daemon. The daemon name might be slightly different if the version is newer.

rcctl enable php73_fpm
rcctl start php73_fpm

Configuring MariaDB

MariaDB provides the database backend for PrestaShop. Because MariaDB needs more open files than the default class allows, create a special class in /etc/login.conf.

At the bottom of the file, add the following lines:

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

Install MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Configure MariaDB security.

 mysql_secure_installation

Create the PrestaShop database. Use a strong password.

mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT

Configuring Apache

Back up /etc/apache2/httpd2.conf

cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak

Внесіть наступні зміни в /etc/apache2/httpd2.conf, використовуючи #для включення та вимкнення модулів.

Listen 443
...
LoadModule mpm_event_module /usr/local/lib/apache2/mod_mpm_event.so
#LoadModule mpm_prefork_module /usr/local/lib/apache2/mod_mpm_prefork.so
LoadModule proxy_module /usr/local/lib/apache2/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/lib/apache2/mod_proxy_fcgi.so
LoadModule ssl_module /usr/local/lib/apache2/mod_ssl.so
LoadModule rewrite_module /usr/local/lib/apache2/mod_rewrite.so
...
ServerAdmin [email protected]
ServerName 192.0.2.1:80
  • Ще кілька змін /etc/apache2/httpd2.confвідбуваються в нижній частині файлу. Вилучіть #із зазначених заяв про включення.

  • Додайте рядки віртуального хостингу останніми.

    # Server-pool management (MPM specific)
    Include /etc/apache2/extra/httpd-mpm.conf
    ...
    # Virtual Hosts
    IncludeOptional /etc/apache2/sites/*.conf
    

Створіть /etc/apache2/sitesкаталог.

mkdir /etc/apache2/sites

Створіть /etc/apache2/sites/example.confз такою інформацією:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

  SSLEngine On
  SSLCertificateFile "/etc/ssl/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCipherSuite HIGH:!aNULL

</VirtualHost>

Налаштуйте модуль проксі Apache, додавши наступне до /etc/apache2/sites/example.conf

<IfModule proxy_module>
  <IfModule dir_module>
    DirectoryIndex index.php
  </IfModule>
  <FilesMatch "\.php$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>
</IfModule>

Перевірте конфігурацію, потім увімкніть і запустіть Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Переконайтеся, що Apache прослуховує порти 80 і 443.

netstat -ln -finet

Active Internet connections (only servers)
Proto   Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp          0      0  *.443                  *.*                    LISTEN
tcp          0      0  127.0.0.1.25           *.*                    LISTEN
tcp          0      0  *.22                   *.*                    LISTEN
tcp          0      0  *.80                   *.*                    LISTEN
tcp          0      0  127.0.0.1.3306         *.*                    LISTEN
tcp          0      0  127.0.0.1.9000         *.*                    LISTEN

Встановіть PrestaShop

Перейдіть на свій веб-сайт за адресою http://www.example.com. Запуститься майстер встановлення PrestaShop.

Після завершення інсталяції зверніть увагу на посилання магазину та адміністративні посилання та видаліть каталог /var/www/htdocs/prestashop/install.

Увімкніть SSL.

  • Натисніть Параметри магазину
  • Натисніть Загальні
  • Увімкніть SSL для всіх частин вашого магазину

Змініть пароль адміністратора.

  • Натисніть Додаткові параметри
  • Натисніть Команда
  • Змінити пароль.

Деякі підсумкові завдання

Створіть резервну копію вашого магазину та його бази даних:

cd /var/www/htdocs
doas tar cvfz /home/auser/prestashop.tar.gz prestashop/
doas mysqldump -u prestashop -p prestashop | gzip -4 > /home/auser/prestashop.sql.tar.gz
doas chown auser:auser /home/auser/prestashop*

Видаліть доступ doas для вашого облікового запису користувача, повторно створивши doas.confфайл.

echo 'permit keepenv :wheel' > /etc/doas.conf

Як встановити Tiny Tiny RSS Reader на FreeBSD 11 FAMP VPS

Як встановити Tiny Tiny RSS Reader на FreeBSD 11 FAMP VPS

Використання іншої системи? Tiny Tiny RSS Reader — це безкоштовний зчитувач і агрегатор новин (RSS/Atom) із відкритим вихідним кодом, що розміщується на власному веб-сторінці.

Як встановити Wiki.js на FreeBSD 11

Як встановити Wiki.js на FreeBSD 11

Використання іншої системи? Wiki.js — це безкоштовний сучасний вікі-додаток з відкритим вихідним кодом, побудований на Node.js, MongoDB, Git і Markdown. Вихідний код Wiki.js є публічним

Як встановити CMS Pagekit 1.0 на FreeBSD 11 FAMP VPS

Як встановити CMS Pagekit 1.0 на FreeBSD 11 FAMP VPS

Використання іншої системи? Pagekit 1.0 CMS – це красива, модульна, розширювана та легка, безкоштовна система керування вмістом (CMS) з відкритим вихідним кодом.

Як встановити MODX Revolution на FreeBSD 11 FAMP VPS

Як встановити MODX Revolution на FreeBSD 11 FAMP VPS

Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована система управління вмістом (CMS) корпоративного рівня з відкритим кодом, написана на PHP. Це я

Налаштування OpenBSD 5.5 64-розрядної

Налаштування OpenBSD 5.5 64-розрядної

У цій статті ви дізнаєтеся, як налаштувати OpenBSD 5.5 (64-розрядна версія) на KVM за допомогою Vultr VPS. Крок 1. Увійдіть в панель керування Vultr. Крок 2. Натисніть РОЗВЕРНУТИ

Як встановити osTicket на FreeBSD 12

Як встановити osTicket на FreeBSD 12

Використання іншої системи? osTicket — це система продажу квитків з відкритим вихідним кодом. Вихідний код osTicket відкрито розміщено на Github. У цьому підручнику

Як встановити Flarum Forum на FreeBSD 12

Як встановити Flarum Forum на FreeBSD 12

Використання іншої системи? Flarum — це безкоштовне програмне забезпечення нового покоління з відкритим вихідним кодом, яке робить онлайн-обговорення веселими. Вихідний код Flarum розміщений o

Як увімкнути TLS 1.3 у Nginx на FreeBSD 12

Як увімкнути TLS 1.3 у Nginx на FreeBSD 12

Використання іншої системи? TLS 1.3 — це версія протоколу безпеки транспортного рівня (TLS), який був опублікований у 2018 році як запропонований стандарт у RFC 8446.

Встановіть WordPress на OpenBSD 6.2

Встановіть WordPress на OpenBSD 6.2

Вступ WordPress є домінуючою системою керування вмістом в Інтернеті. Він забезпечує все, від блогів до складних веб-сайтів із динамічним вмістом

Як встановити Subrion 4.1 CMS на FreeBSD 11 FAMP VPS

Як встановити Subrion 4.1 CMS на FreeBSD 11 FAMP VPS

Використання іншої системи? Subrion 4.1 CMS — це потужна та гнучка система керування вмістом із відкритим кодом (CMS), яка забезпечує інтуїтивно зрозумілий та зрозумілий вміст

Як налаштувати DJBDNS на FreeBSD

Як налаштувати DJBDNS на FreeBSD

Цей підручник покаже вам, як налаштувати службу DNS, яку легко підтримувати, легко налаштовувати і яка, як правило, є більш безпечною, ніж класичний BIN

Як встановити стек Nginx, MySQL та PHP (FEMP) на FreeBSD 12.0

Як встановити стек Nginx, MySQL та PHP (FEMP) на FreeBSD 12.0

Стек FEMP, який можна порівняти зі стеком LEMP в Linux, являє собою набір програмного забезпечення з відкритим вихідним кодом, яке зазвичай встановлюється разом для забезпечення FreeBS

Встановлення MongoDB на FreeBSD 10

Встановлення MongoDB на FreeBSD 10

MongoDB — це база даних NoSQL світового класу, яка часто використовується в нових веб-додатках. Він забезпечує високопродуктивні запити, шардінг та реплікацію

Як встановити Моніку на FreeBSD 12

Як встановити Моніку на FreeBSD 12

Використання іншої системи? Monica — це відкрита система управління особистими відносинами. Подумайте про це як про CRM (популярний інструмент, який використовується відділами продажів у м

OpenBSD як рішення для електронної комерції з PrestaShop і Apache

OpenBSD як рішення для електронної комерції з PrestaShop і Apache

Вступ У цьому підручнику демонструється OpenBSD як рішення для електронної комерції з використанням PrestaShop і Apache. Apache потрібен, оскільки PrestaShop має складну UR

Встановлення Fork CMS на FreeBSD 12

Встановлення Fork CMS на FreeBSD 12

Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM

Як встановити Directus 6.4 CMS на FreeBSD 11 FAMP VPS

Як встановити Directus 6.4 CMS на FreeBSD 11 FAMP VPS

Використання іншої системи? Directus 6.4 CMS — це потужна та гнучка, безкоштовна система керування вмістом без голови (CMS) з відкритим вихідним кодом, яка надає розробнику

Підвищення безпеки для FreeBSD за допомогою IPFW і SSHGuard

Підвищення безпеки для FreeBSD за допомогою IPFW і SSHGuard

Сервери VPS часто стають мішенню зловмисників. Поширений тип атаки відображається в системних журналах у вигляді сотень несанкціонованих спроб входу через ssh. Налаштовуючи

Налаштуйте httpd в OpenBSD

Налаштуйте httpd в OpenBSD

Вступ OpenBSD 5.6 представив новий демон під назвою httpd, який підтримує CGI (через FastCGI) і TLS. Для встановлення нового http не потрібно додатково працювати

Налаштуйте iRedMail на FreeBSD 10

Налаштуйте iRedMail на FreeBSD 10

Цей підручник покаже вам, як встановити групове програмне забезпечення iRedMail на нову інсталяцію FreeBSD 10. Ви повинні використовувати сервер з принаймні одним гігабайтом o

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

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

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

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