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
これらのパッケージの一部は、システムにすでにインストールされている可能性があります。
最初のステップは、ファイアウォールを構成することです。 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)
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>
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を選択します セットアップを完了します。
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
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を設定する必要があります。
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
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
https://abantecart.example.com
を起動します ブラウザで、次の画面が表示されます。
チェックボックスをオンにしてライセンスに同意し、続行を押します 続行します。次に、インストーラーはすべての要件が満たされているかどうかを確認します。
すべて問題がない場合は、続行を押します 次のページに進みます。
データベースのクレデンシャルを入力するように求められます。ここで、コントロールパネルにアクセスするための管理者アカウントとセキュリティキーを作成できます。デモデータが必要な場合は、チェックボックスをオフのままにします。最初から開始する場合は、オフのままにします。
続行を押します 終了したら続行します。その後、インストーラーはすべてのセットアップを続行し、完了すると、次の画面が表示されます。
コントロールパネルへのリンクが必要になるため、ブックマークしてください。次のコマンドを実行して、インストーラーファイルは不要であり、セキュリティ上のリスクがあるため、削除します。
$ sudo rm -rf /var/www/html/abantecart/install
コントロールパネルにログインすると、ショップの設定を完了するように求められます。
クイックウィザードを閉じて、以下に示すコントロールパネルから構成するか、ウィザードを続行して基本設定をセットアップすることができます。
これで、Debian11ベースのサーバーでのAbanteCartのセットアップに関するチュートリアルは終了です。ご不明な点がございましたら、下のコメント欄に投稿してください。