GNU/Linux >> Linux の 問題 >  >> Debian

Debian11にNginxとSSLを使用してAbanteCartをインストールする方法

Abantecartは、無料のオープンソースで機能豊富なeコマースアプリケーションです。 PHPで記述されており、HTML5、Bootstrap、MVCなどの最新テクノロジーを利用しています。デジタルおよび物理的な製品のサポート、複数の支払いゲートウェイと通貨、複数の言語、クーポン、ストアクレジット、および顧客ダッシュボードとの統合を備えた単一のインストールを使用して、複数のオンラインストアを作成できます。メールマーケティングキャンペーンを実行したり、バナーを作成してユーザーエンゲージメントを高めることができます。さらに、わかりやすいURLをサポートするSEOに最適化されており、複数の分析プラットフォームと統合され、プラグインをサポートしています。

このチュートリアルでは、Debian11ベースのサーバーにAbantecartをインストールする方法を学習します。

前提条件
  • Debian11を実行しているサーバー。

  • sudo権限を持つroot以外のユーザー。

  • すべてが更新されます。

    $ sudo apt update && sudo apt upgrade
    
  • システムに必要なパッケージはほとんどありません。

    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y
    

    これらのパッケージの一部は、システムにすでにインストールされている可能性があります。

ステップ1-ファイアウォールを構成する

最初のステップは、ファイアウォールを構成することです。 Debianにはufw(Uncomplicated Firewall)が付属しています。

ファイアウォールが実行されているかどうかを確認します。

$ sudo ufw status

次の出力が得られるはずです。

Status: inactive

SSHポートを許可して、ファイアウォールが有効にしたときに現在の接続を切断しないようにします。

$ sudo ufw allow OpenSSH

HTTPポートとHTTPSポートも許可します。

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

ファイアウォールを有効にする

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

ファイアウォールのステータスをもう一度確認してください。

$ sudo ufw status

同様の出力が表示されるはずです。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
ステップ2-PHPをインストールする

AbantecartはPHP8.0をサポートしています。これをインストールするには、OndrejのPHPリポジトリを使用します。次のコマンドを実行して、リポジトリを追加します。

$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

リポジトリに関連付けられたGPGキーを追加します。

$ wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

Debianリポジトリを更新します。

$ sudo apt update

PHP8.0と必要な拡張機能をインストールします。

$ sudo apt install php8.0-cli php8.0-fpm php8.0-mysql php8.0-gd php8.0-common php8.0-curl php8.0-xml php8.0-mbstring
> ステップ3-MySQLをインストールする

MySQLサーバーをインストールするには、最初のステップはパッケージのGPGキーを追加することです

Debianには、.gpgを設定するためにGPGコマンドを個別に実行する必要があるバグがあります。 ディレクトリ。

$ sudo gpg

Ctrl + Cを押します 上記のコマンドを終了します。 GPGキーをインポートし、/usr/share/keyringsに保存します ディレクトリ。

$ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/mysql8.0-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --brecv-keys 3A79BD29

公式のMySQLリポジトリを追加します。

$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mysql8.0-archive-keyring.gpg] http://repo.mysql.com/apt/debian/ `lsb_release -cs` mysql-8.0" \
    | sudo tee /etc/apt/sources.list.d/mysql-8.list

Debianリポジトリを更新します。

$ sudo apt update

MySQLをインストールします。

$ sudo apt install mysql-server

ルートパスワードの設定を求める設定画面が表示されます。強力なパスワードを選択してください。

パスワードの確認を求められます。次に、新しい認証システムを説明する画面が表示されます。 OKを選択します 続行します。

最後に、認証方法を選択するように求められます。 強力なパスワード暗号化を選択します OKを選択します セットアップを完了します。

ステップ4-Nginxをインストールする

Debianには古いバージョンのNginxが同梱されています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。

公式のNginx署名キーをインポートします。

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
	 | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginxの安定バージョンのリポジトリを追加します。

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
    http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Debianリポジトリを更新します。

$ sudo apt update

Nginxをインストールします。

$ sudo apt install nginx

インストールを確認します。必ずsudoを使用してください DebianでNginxコマンドを実行するたび。そうしないと、機能しません。

$ sudo nginx -v
nginx version: nginx/1.20.2

Nginxサービスを有効にします。

$ sudo systemctl enable nginx

ステップ5-AbanteCart用にMySQLを構成する

安全なMySQLのインストール。

$ sudo mysql_secure_installation

最初のステップとして、rootパスワードの入力を求められます。次に、パスワードの検証プラグインを設定するかどうかを尋ねられます。このプラグインを使用して、MySQLパスワードの強度をテストできます。 Yを選択します 続行します。次のステップで、パスワード検証レベルを選択するように求められます。 2を選択します これは最強のレベルであり、パスワードは8文字以上で、大文字、小文字、数字、特殊文字が混在している必要があります。

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

次のステップでは、rootパスワードを変更するかどうかを尋ねられます。 Nを押します 続行します。

Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

Yを押します 次にENTER 次のすべてのプロンプトのキーを押して、匿名ユーザーとテストデータベースを削除し、rootログインを無効にして、新しく設定されたルールをロードします。

...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 - Dropping test database...
Success.
 - Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
...
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!

MySQLシェルに入ります。ルートパスワードを入力して続行します。

$ mysql -u root -p

abcartを作成します ユーザー。パスワードが前に設定した要件を満たしていることを確認してください。

mysql> CREATE USER 'abcart'@'localhost' IDENTIFIED BY 'Your_password2';

abantecartを作成します データベース。

mysql> CREATE DATABASE abantecart;

abantecartのユーザー権限を付与します データベース。

mysql> GRANT ALL PRIVILEGES ON abantecart.* TO 'abcart'@'localhost';

シェルを終了します。

mysql> exit
ステップ6-AbanteCartをインストールします

GithubからAbanteCartの最新バージョンをダウンロードします。

$ wget https://github.com/abantecart/abantecart-src/archive/master.zip

ファイルを抽出します。

$ unzip master.zip

AbantecartのパブリックWebルートディレクトリを作成します。

$ sudo mkdir /var/www/html/abantecart -p

抽出したabantecart-src-master/public_htmlをコピーします ディレクトリをwebrootディレクトリに移動します。スラッシュ( / )に注意してください )次のコマンドの最後にあります。

$ sudo cp -r abantecart-src-master/public_html /var/www/html/abantecart/

webrootディレクトリに適切な権限を設定します。

$ sudo chown -R nginx:nginx /var/www/html/abantecart

これで、基本的なインストールは完了です。次に、インストールを完了する前にSSLとNginxを設定する必要があります。

ステップ7-SSLをインストールする

Let's Encryptを使用してSSL証明書をインストールするには、Certbotツールをインストールする必要があります。

そのためにSnapdパッケージインストーラーを使用します。ほとんどのDebianサーバーには付属していないため、Snapをインストールしてください。

$ sudo apt install snapd

Snapdのバージョンが最新であることを確認してください。

$ sudo snap install core && sudo snap refresh core

Certbotをインストールします。

$ sudo snap install --classic certbot

次のコマンドを使用して、/usr/binへのシンボリックリンクを作成してCertbotコマンドを実行できるようにします。 ディレクトリ。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

インストールを確認します。

$ certbot --version
certbot 1.22.0

SSL証明書を生成します。

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d abantecart.example.com

上記のコマンドは、証明書を/etc/letsencrypt/live/abantecart.example.comにダウンロードします。 サーバー上のディレクトリ。

Diffie-Hellmanグループを生成します 証明書。

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Let'sEncryptの自動更新用のチャレンジWebルートディレクトリを作成します。

$ sudo mkdir -p /var/lib/letsencrypt

Cronジョブを作成してSSLを更新します。証明書を確認し、必要に応じて更新するために毎日実行されます。そのためには、まず、ファイル/etc/cron.daily/certbot-renewを作成します。 開いて編集します。

$ sudo nano /etc/cron.daily/certbot-renew

次のコードを貼り付けます。

#!/bin/sh
certbot renew --cert-name abantecart.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

タスクファイルの権限を変更して実行可能にします。

$ sudo chmod +x /etc/cron.daily/certbot-renew
ステップ8-NginxとPHPを構成する

PHP-FPMを構成する

ファイル/etc/php/8.0/fpm/pool.d/www.confを開きます 。

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Unixユーザー/PHPプロセスのグループをnginxに設定する必要があります 。 user=www-dataを見つけます およびgroup=www-data ファイル内の行をnginxに変更します 。

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

また、listen.owner=www-dataの行を見つけます およびlisten.group=www-data ファイル内でそれらをnginxに変更します 。

listen.owner = nginx
listen.group = nginx

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

次のステップは、PHPopcache拡張機能を無効にすることです。

ファイル/etc/php/8.0/fpm/conf.d/10-opcache.iniを開きます 編集用。

$ sudo nano /etc/php/8.0/fpm/conf.d/10-opcache.ini

最後に次の行を貼り付けます。

opcache.enable=0

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

PHP-fpmプロセスを再起動します。

$ sudo systemctl restart php8.0-fpm

Nginxを構成する

ファイル/etc/nginx/conf.d/abantecart.confを作成して開きます 編集用。

$ sudo nano /etc/nginx/conf.d/abantecart.conf

次のコードを貼り付けます。

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  abantecart.example.com;

    access_log  /var/log/nginx/abantecart.access.log;
    error_log   /var/log/nginx/abantecart.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/abantecart.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/abantecart.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/abantecart.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;
    
    root /var/www/html/abantecart;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    # Pass PHP Scripts To FastCGI Server
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Depends On The PHP Version
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
        try_files $uri =404;
    }
    
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    
    # Make sure files with the following extensions do not get loaded by nginx because nginx would
    # display the source code, and these files can contain PASSWORDS!
    location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
        deny all;
    }
    
    # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
    
    ### Retina images handler. Check cookie and looking for file with @2x at the end of name
    location ~* ^(.*)\.(jpg|jpeg|png|gif|webp)$ {
        set $hidpi_uri [email protected]$2;
        if ($http_cookie !~ 'HTTP_IS_RETINA=1') {
          break;
        }
        try_files $hidpi_uri $uri =404;
    }

    location ~*  \.(jpg|jpeg|png|gif|css|js|ico|webp)$ {
        expires max;
        log_not_found off;
    }
    
    location ~ /(system/logs|resources/download) {
      deny all;
      return 403;
    }
    
    location /admin/ {
        location ~ .*\.(php)?$ {
          deny all;
          return 403;
        }
    }
    
    #rewrite for images for retina-displays
    location ~ / {
        if (!-e $request_filename){
            rewrite ^/(.*)\?*$ /index.php?_route_=$1 last;
        }
    }
}
# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  abantecart.example.com;
    return 301   https://$host$request_uri;
}

Ctrl + Xを押してファイルを保存します Yと入力します 終了したらプロンプトが表示されたら。

ファイル/etc/nginx/nginx.confを開きます 編集用。

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;の行の前に次の行を追加します 。

server_names_hash_bucket_size  64;

Ctrl + Xを押してファイルを保存します Yと入力します プロンプトが表示されたら。

Nginx構成ファイルの構文を確認します。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Nginxサービスを開始して、新しい構成を有効にします。

$ sudo systemctl start nginx
ステップ9-インストールの完了

https://abantecart.example.comを起動します ブラウザで、次の画面が表示されます。

チェックボックスをオンにしてライセンスに同意し、続行を押します 続行します。次に、インストーラーはすべての要件が満たされているかどうかを確認します。

すべて問題がない場合は、続行を押します 次のページに進みます。

データベースのクレデンシャルを入力するように求められます。ここで、コントロールパネルにアクセスするための管理者アカウントとセキュリティキーを作成できます。デモデータが必要な場合は、チェックボックスをオフのままにします。最初から開始する場合は、オフのままにします。

続行を押します 終了したら続行します。その後、インストーラーはすべてのセットアップを続行し、完了すると、次の画面が表示されます。

コントロールパネルへのリンクが必要になるため、ブックマークしてください。次のコマンドを実行して、インストーラーファイルは不要であり、セキュリティ上のリスクがあるため、削除します。

$ sudo rm -rf /var/www/html/abantecart/install

コントロールパネルにログインすると、ショップの設定を完了するように求められます。

クイックウィザードを閉じて、以下に示すコントロールパネルから構成するか、ウィザードを続行して基本設定をセットアップすることができます。

結論

これで、Debian11ベースのサーバーでのAbanteCartのセットアップに関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。


Debian
  1. Debian 8にNginxをインストールする方法(Jessie)

  2. Debian 9にNginxをインストールする方法(ストレッチ)

  3. Debian11にNginxを使用してWonderCMSをインストールする方法

  1. Debian9にNginxをインストールする方法

  2. Debian9でApacheを使用してDrupalをインストールおよび構成する方法

  3. Lets Encrypt and Secure Nginx with SSL/TLSをDebian9にインストールする

  1. Debian9にNginxを使用してInvoicePlaneをインストールする方法

  2. Drupal 9をNginxでインストールし、Debian10でSSLを暗号化する方法

  3. Nginxと無料でDiscourseForumをインストールする方法Debian11でSSLを暗号化する