PrestaShopは、無料のオープンソースeコマースプラットフォームです。 PHPとMySQLに基づいており、無料およびプレミアムのプラグインとテーマで拡張できます。
直感的な管理インターフェース、複数の支払いゲートウェイ、多言語、分析、レポートなどの機能を備えたPrestaShopは、多くのオンラインマーチャントに最適なプラットフォームです。
このチュートリアルでは、Ubuntu18.04サーバーにPrestaShopをインストールする方法を示します。 NginxをWebサーバーとして使用し、最新のPHP7.2とMySQL/MariaDBをデータベースサーバーとして使用します。
前提条件#
このチュートリアルを続行する前に、次の前提条件を満たしていることを確認してください。
- パブリックサーバーのIPを指すドメイン名を使用します。
example.com
を使用します 。 - Nginxは、次の手順に従ってUbuntuサーバーにインストールされます。
- ユーザーの情報を暗号化するためにドメインにインストールされたSSL証明書。次の手順に従って、無料のLet’sEncryptSSL証明書をインストールできます。
システムパッケージを最新バージョンに更新し、解凍ユーティリティをインストールします。
sudo apt update && sudo apt upgrade
sudo apt install unzip
MySQLデータベースの作成#
PrestaShopはその情報をMySQLデータベースに保存します。
MySQLまたはMariaDBがサーバーにインストールされている場合は、この手順をスキップできます。それ以外の場合は、次のように入力して、UbuntuのデフォルトリポジトリからMySQL5.7サーバーパッケージをインストールします。
sudo apt install mysql-server mysql-client
MySQLを新しくインストールする場合は、mysql_secure_installation
を実行することをお勧めします。 MySQLサーバーのセキュリティを向上させるコマンド。 データベースを作成するには、mysqlシェルにログインします。
sudo mysql
MySQLシェル内から、次のSQLステートメントを実行して、prestashop
という名前の新しいデータベースを作成します。 :
CREATE DATABASE prestashop;
次に、prestashop
という名前のMySQLユーザーアカウントを作成します 次のコマンドを実行して、ユーザーに必要な権限を付与します。
GRANT ALL ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'change-with-strong-password';
change-with-strong-password
を変更することを忘れないでください 強力なパスワードを使用します。 完了したら、次のように入力してMySQLコンソールを終了します。
EXIT;
PHPのインストールと構成#
PHP7.2はUbuntu18.04のデフォルトのPHPバージョンであり、PrestaShopで完全にサポートされ、推奨されています。
次のコマンドを実行して、PHPと必要なすべてのPHPモジュールをインストールします。
sudo apt install php7.2-common php7.2-cli php7.2-fpm php7.2-opcache php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap
インストールプロセスが完了すると、PHP-FPMサービスが自動的に開始されます。次のように入力して確認できます:
sudo systemctl status php7.2-fpm
出力は次のようになります。
* php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-03-24 11:53:33 PDT; 14s ago
Docs: man:php-fpm7.2(8)
Main PID: 15853 (php-fpm7.2)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
次のsed
を実行します 推奨されるPHPオプションを設定するコマンド:
sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini
PrestaShopのダウンロード#
この記事を書いている時点で、PrestaShopの最新の安定バージョンはバージョン1.7.6.2
です。 。
次のwgetコマンドを使用して、PrestaShopダウンロードページからPrestaShopの最新バージョンをダウンロードします。
cd /tmp
wget https://download.prestashop.com/download/releases/prestashop_1.7.6.2.zip
ダウンロードが完了したら、PrestaShopファイルを保持するディレクトリを作成します。
sudo mkdir -p /var/www/html/example.com
次に、PrestaShopアーカイブを抽出します:
unzip prestashop_*.zip
このアーカイブには、すべてのPrestaShopファイルを含む別のzipファイル「prestashop.zip」が含まれています。ドメインのドキュメントルートディレクトリにファイルを抽出します:
sudo unzip prestashop.zip -d /var/www/html/example.com
次のchown
を使用して、ウェブサーバーがサイトのファイルとディレクトリに完全にアクセスできるように、適切な権限を設定します コマンド:
sudo chown -R www-data: /var/www/html
Nginxの構成#
これで、UbuntuサーバーにSSL証明書がインストールされたNginxがすでにインストールされているはずです。そうでない場合は、このチュートリアルの前提条件を確認してください。
テキストエディタを開き、次のファイルを作成します。
sudo nano /etc/nginx/sites-available/example.com
/etc/nginx/sites-available/example.com server {
listen 80;
listen 443 ssl http2;
server_name example.com www.example.com;
root /var/www/html/example.com;
index index.php;
# SSL parameters
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
include snippets/letsencrypt.conf;
# Cloudflare / Max CDN fix
location ~* \.(eot|otf|ttf|woff(?:2)?)$ {
add_header Access-Control-Allow-Origin *;
}
# Do not save logs for these
location = /favicon.ico {
auth_basic off;
allow all;
log_not_found off;
access_log off;
}
location = /robots.txt {
auth_basic off;
allow all;
log_not_found off;
access_log off;
}
# Images
rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$1$2$3.jpg last;
rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
rewrite ^/c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ /img/c/$1$2$3.jpg last;
rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ /img/c/$1$2.jpg last;
# AlphaImageLoader for IE and fancybox
rewrite ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 last;
# Web service API
rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
# Installation sandbox
rewrite ^(/install(?:-dev)?/sandbox)/(.*) /$1/test.php last;
#Change this block to your admin folder
location /admin_CHANGE_ME {
if (!-e $request_filename) {
rewrite ^/.*$ /admin_CHANGE_ME/index.php last;
}
}
# File security
# .htaccess .DS_Store .htpasswd etc
location ~ /\. {
deny all;
}
# Source code directories
location ~ ^/(app|bin|cache|classes|config|controllers|docs|localization|override|src|tests|tools|translations|travis-scripts|vendor|var)/ {
deny all;
}
# Prevent exposing other sensitive files
location ~ \.(yml|log|tpl|twig|sass)$ {
deny all;
}
# Prevent injection of php files
location /upload {
location ~ \.php$ {
deny all;
}
}
location /img {
location ~ \.php$ {
deny all;
}
}
# PHP FPM part
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
example.comをPrestaShopドメインに置き換え、「admin_CHANGE_ME」を管理ディレクトリに置き換えることを忘れないでください。 Prestashopルートディレクトリの内容を一覧表示すると、ディレクトリ名を見つけることができます。
sudo ls -l /var/www/html/example.com | grep admin
また、SSL証明書ファイルへの正しいパスを使用していることを確認してください。この構成で使用されるスニペットは、このガイドで作成されています。
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 restart nginx
PrestaShopのインストール#
PrestaShopがダウンロードされ、サーバーの構成が完了したので、Webインターフェイスからインストールを完了することができます。
ブラウザを開き、ドメインを入力すると、次のような画面が表示されます。
使用する言語を選択し、[次へ]ボタンをクリックします。
次の画面で、PrestaShopライセンス契約が表示されます。ライセンスを読み、「上記の利用規約に同意します」を選択します。続行するには:
次に、次の情報ページが表示されます。
インストール前のすべての要件が満たされていること、およびシステムがPrestaShopと互換性があることを確認してください。
次の画面で、店舗の詳細を入力する必要があります。メールアドレスは、PrestaShop管理バックエンドにアクセスするためのユーザー名です。
次に、セットアップウィザードで、データベース接続の詳細を入力するように求められます。以前に作成したMySQLユーザーとデータベースの詳細を入力します:
「次へ」ボタンをクリックすると、インストールが開始されます:
インストールには数分かかる場合があります。完了すると、PrestaShopがインストールされたことを通知する次のページが表示されます。
セキュリティ上の理由から、インストールディレクトリを削除する必要があります。これを行うには、ターミナルに戻り、次のrm
を入力します。 コマンド:
sudo rm -rf /var/www/html/example.com/install
PrestaShop管理ダッシュボードにアクセスするには、[ストアの管理]ボタンをクリックします。メールアドレスとパスワードを入力すると、管理ダッシュボードにリダイレクトされます。
ここから、PrestaShopインストールのカスタマイズを開始し、新製品を追加できます。