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


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

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

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

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、