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

Добавьте полное доменное имя и 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 для тестирования. Задайте для общего имени полное доменное имя вашего сервера, например, 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

Thest файл конфигурации для ошибок и перезапустите демон 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

Внесите некоторые дополнительные изменения в среду PHP в /etc/php-7.3.ini. Это имя файла может немного измениться, если версия новее, чем 7.3. Эти изменения:

  • Разрешить для загрузки больших файлов.
  • Отключить изолированную среду.
  • Настройте PHP для отправки электронной почты через 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
    

    Включите плагины PHP.

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

Включите и запустите демон PHP-FPM. Имя демона может немного отличаться, если версия новее.

rcctl enable php73_fpm
rcctl start php73_fpm

Настройка MariaDB

MariaDB предоставляет базу данных для PrestaShop. Поскольку MariaDB нужно больше открытых файлов, чем позволяет класс по умолчанию, создайте специальный класс в /etc/login.conf.

Внизу файла добавьте следующие строки:

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

Установите MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Настройте безопасность MariaDB.

 mysql_secure_installation

Создайте базу данных PrestaShop. Используйте надежный пароль.

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

Настройка Apache

Резервное копирование /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


Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

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

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

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

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

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

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше