如何在Ubuntu 18.04上安装PrestaShop

PrestaShop是一个免费的开源电子商务平台。 它基于PHP和MySQL,可以使用免费和高级的插件和主题进行扩展。

凭借直观的管理界面,多个支付网关,多种语言,分析和报告等功能,PrestaShop是许多在线商家的首选平台。

在本教程中,我们将向您展示如何在Ubuntu 18.04服务器上安装PrestaShop。 我们将使用Nginx作为Web服务器,使用最新的PHP 7.2和MySQL / MariaDB作为数据库服务器。

先决条件

在继续本教程之前,请确保满足以下先决条件:

  • 有一个指向您的公共服务器IP的域名。 我们将使用 example.com
  • 按照以下说明将Nginx安装在Ubuntu服务器上。
  • 为您的域安装的SSL证书,用于加密用户信息。 您可以按照以下说明安装免费的“让我们加密SSL”证书。

将系统软件包更新到最新版本并安装unzip实用程序:

sudo apt update && sudo apt upgradesudo apt install unzip

创建一个MySQL数据库

PrestaShop将其信息存储在MySQL数据库中。

如果您的服务器上安装了MySQL或MariaDB,则可以跳过此步骤。 否则,通过键入以下内容,从Ubuntu的默认存储库安装MySQL 5.7服务器软件包:

sudo apt install mysql-server mysql-client

对于全新的MySQL安装,建议运行 mysql_secure_installation 命令以提高MySQL服务器的安全性。

要创建数据库,请登录到mysql shell:

sudo mysql

在MySQL Shell中,运行以下SQL语句以创建一个名为 prestashop

CREATE DATABASE prestashop;

接下来,创建一个名为 prestashop 并通过运行以下命令向用户授予必要的权限:

GRANT ALL ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'change-with-strong-password';

别忘了改变 change-with-strong-password 具有强密码。

完成后,通过键入以下内容退出MySQL控制台:

EXIT;

安装和配置PHP#

PHP 7.2是Ubuntu 18.04中的默认PHP版本,PrestaShop完全支持并推荐使用PHP 7.2。

运行以下命令以安装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.inisudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.inisudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.inisudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.inisudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.inisudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini

正在下载PrestaShop#

在撰写本文时,PrestaShop的最新稳定版本为version 1.7.6.2

使用以下wget命令从PrestaShop下载页面下载最新版本的PrestaShop:

cd /tmpwget 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

该档案文件包含另一个zip文件“ prestashop.zip”,其中包含所有PrestaShop文件。 将文件解压缩到域的文档根目录中:

sudo unzip prestashop.zip -d /var/www/html/example.com

设置正确的权限,以使Web服务器可以使用以下命令完全访问站点的文件和目录 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;
    }
}

不要忘记用您的PrestaShop域替换example.com,并用您的管理目录替换“ 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预安装

确保满足所有预安装要求,并且您的系统与PrestaShop兼容。

在下一个屏幕上,您需要输入商店详细信息。 电子邮件地址是访问PrestaShop管理后端的用户名。

安装PrestaShop详细信息

接下来,安装向导将要求您输入数据库连接详细信息。 输入您先前创建的MySQL用户和数据库详细信息:

安装PrestaShop数据库

单击“下一步”按钮,安装将开始:

安装PrestaShop Assistant

安装可能需要几分钟,完成后将显示以下页面,通知您PrestaShop已安装。

安装PrestaShop

出于安全原因,您需要删除安装目录。 为此,请返回到终端并输入以下内容 rm 命令:

sudo rm -rf /var/www/html/example.com/install

要访问您的PrestaShop管理仪表板,请单击“管理您的商店”按钮。 输入您的电子邮件和密码,您将被重定向到管理仪表板。

从这里,您可以开始自定义PrestaShop安装并添加新产品。

结论#

您已在Ubuntu 18.04服务器上成功安装PrestaShop。 PrestaShop文档是学习更多有关如何管理PrestaShop安装的良好起点。

如有疑问,请在下面发表评论。

ubuntu prestashop mysql php nginx电子商务

Sidebar