PrestaShopとApacheを使用したEコマースソリューションとしてのOpenBSD

前書き

このチュートリアルでは、PrestaShopとApacheを使用したeコマースソリューションとしてOpenBSDを紹介します。

PrestaShopにはOpenBSDの組み込みWebサーバーであるhttpdではサポートされていない複雑なURL書き換え要件があるため、Apacheが必要です。このチュートリアルでは、自己署名証明書を使用します。検証には、検証済みの証明書を使用してください。

準備作業

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.1Vultr IPアドレスに置き換えます。

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証明書を作成しました。Common Nameをサーバーの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をダウンロードして抽出する

PrestaShop最新バージョンの URLを見つけ、にダウンロードし/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)ファイアウォールを構成する

sshwwwhttpsを除くすべての受信トラフィックをブロックするようにファイアウォールを構成します

のバックアップコピーを作成します/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プロセスを構成して、UNIXドメインソケットではなくTCPソケットをリッスンします。

/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より新しい場合、このファイル名は若干変更される可能性があります。これらの変更:

  • より大きなファイルをアップロードできるようにします。
  • chrootされた環境を無効にします。
  • sendmail経由でメールを送信するようにPHPを設定します。

    ; 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ファイルの下部に向かって、さらにいくつかの変更が行われます。#示されたincludeステートメントから削除してください。

  • 最後に仮想ホスティングの行を追加します。

    # 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を有効にする

管理パスワードを変更します。

  • Advanced Parametersをクリックします。
  • チームをクリック
  • パスワードを変更してください。

いくつかの最終タスク

ストアとそのデータベースをバックアップします。

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.confファイルを再作成して、ユーザーアカウントのdoasアクセスを削除します。

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


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。