如何在 Ubuntu 18.04 上安装 PrestaShop

2023-11-05

普斯塔商店是一个免费开源的电子商务平台。它基于 PHP 和 MySQL,可以通过免费和高级插件和主题进行扩展。

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

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

先决条件#

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

  • 有一个域名指向您的公共服务器IP。我们将使用example.com.
  • Nginx 通过以下方式安装在您的 Ubuntu 服务器上这些说明 .
  • 为您的域安装 SSL 证书,用于加密用户信息。您可以按照以下步骤安装免费的 Let’s Encrypt SSL 证书这些说明 .

将系统包更新到最新版本并安装解压实用程序 :

sudo apt update && sudo apt upgradesudo apt install unzip

创建 MySQL 数据库#

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

If MySQL or MariaDB已安装在您的服务器上,您可以跳过此步骤。否则,请输入以下命令从 Ubuntu 的默认存储库安装 MySQL 5.7 服务器包:

sudo apt install mysql-server mysql-client
对于全新的 MySQL 安装,建议运行mysql_secure_installation命令来提高 MySQL 服务器的安全性。

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

sudo mysql

在 MySQL shell 中,运行以下 SQL 语句创建一个新数据库 named prestashop:

CREATE DATABASE prestashop;

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

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 和所有必需的 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 的最新稳定版本是 版本1.7.6.2.

从以下位置下载最新版本的 PrestaShopPrestaShop 下载页面使用以下内容wget命令 :

cd /tmpwget https://download.prestashop.com/download/releases/prestashop_1.7.6.2.zip

下载完成后,创建一个目录来保存我们的 PrestaShop 文件:

sudo mkdir -p /var/www/html/example.com

Next, 提取 PrestaShop 存档 :

unzip prestashop_*.zip

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

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 安装并添加新产品。

结论#

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

如果您有疑问,请随时在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 18.04 上安装 PrestaShop 的相关文章

  • Docker Desktop 未安装,提示 docker-ce-cli 无法安装

    在一次在线培训课程中 讲师提到他有 安装了 Docker Desktop 的 Ubuntu 虚拟机 因此 我尝试在 Windows 10 物理主机上安装相同的程序指示 https docs docker com desktop linux
  • 如何在 php 中访问名为变量的对象属性?

    以 JSON 编码的 Google API 返回一个如下所示的对象 updated gt stdClass Object t gt 2010 08 18T19 17 42 026Z 任何人都知道我如何访问 t value object gt
  • 如何区分两个同名的多选列表

    对于我正在构建的系统 我需要查看第一个列表中出现了哪些选项 通过 POST 请求 以及第二个列表中出现了哪些选项
  • AJAX VS PHP 动态网页?

    当您只能使用 php 来实现动态网页时 为什么要使用 AJAX 呢 使用 AJAX 的主要原因是用户体验 UX 现在 AJAX 不一定会改善每个实例的用户体验 所以在很多地方坚持使用纯 PHP 完全没问题 但想象一下这样的情况 网站上有一个
  • 如何在 Symfony 和 Doctrine 中实现 ManyToMany 和 OneToMany?

    我发现该文档在解释实体之间关系的创建方面非常糟糕 因此 我必须向我的 StackExchangers 同胞寻求帮助 所以 我正在尝试构建以下案例 Case 1 A User属于一个或多个Group and a Group可以有很多Permi
  • 将 Php 数组编码为 json [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想对我的 php 数组进行编码 A
  • PHP:如何将信息返回到等待的脚本并继续处理

    假设有两个脚本Requester php和Provider php Requester需要Provider进行处理并向其发出http请求 Provider php data data 在这种情况下 Provider 很快就找到了答案 但为了
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • 请检查 PPA 名称或格式是否正确

    在我的 Ubuntu 14 04 中 我尝试安装 Captiva 图标包 如上所列这个 omgubuntu 帖子 http www omgubuntu co uk 2014 09 4 gorgeous linux icon themes d
  • PHP-向某些浏览器显示消息

    我已经搜索过这个 我发现的一切都超出了我的需要 我以前用 JavaScript 做过这个 但我真的更喜欢使用 PHP 我将如何根据访问者使用的浏览器向他们显示消息 Example IE 用户会看到 您正在使用 Internet Explor
  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • 存储过程函数中的动态表名

    我编写了一个存储过程函数来从表中获取名称 问题是我希望将表名作为参数传入 有几个不同的表我需要使用此函数 DELIMITER CREATE DEFINER root localhost FUNCTION getName tableName
  • 正在 WordPress 中上传媒体,但显示错误“上传时发生错误。请稍后重试。”

    我试图在 WordPress 媒体上传中上传 jpeg 图像 上传时 显示错误 上传时发生错误 请稍后再试 上传时出现错误消息 但是当我重新加载页面时 图像显示在列表中 如下所示 重新加载页面后 所以 图片正在上传 这意味着不存在文件夹权限
  • 控制器 HMVC 内的 CodeIgniter 负载控制器

    我在用着http github com philsturgeon codeigniter template http github com philsturgeon codeigniter template 对于模板 我尝试将其他控制器视图
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • PHP7.1上读取会话数据失败

    分享一个我遇到的问题 现已解决 在我的开发机器上 我使用 PHP 运行 IIS 我升级到 PHP7 突然我的代码不再工作 返回此错误 session start 读取会话数据失败 用户 路径 C WINDOWS temp 看起来像是权限问题
  • 使用 Laravel Socialite 登录 facebook

    然而 我是 Laravel 的新手 我正在遵循以下教程http www codeanchor net blog complete laravel socialite tutorial http www codeanchor net blog
  • BASH 中的空函数

    我正在使用 FPM 工具创建 deb 包 此工具在从支持的文件中删除包之前 之后创建 不幸的是FPM生成的bash脚本包含这样的函数 dummy 该脚本退出时出现错误 语法错误 意外 BASH 不允许空函数吗 哪个版本的 bash linu
  • 在 JAX-WS 中使用安全性的最佳实践是什么

    这是场景 我有一些需要保护的 Web 服务 JAX WS 目前 为了身份验证需求 我提供了额外的 SecurityWService 它为授权用户提供了一些需要在请求其他服务时描述的 userid 和 sessionid 使用一些java安全
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count

随机推荐

  • 如何在 CentOS 8 上配置静态 IP 地址

    问题 如何在 CentOS 8 上更改或配置 IP 地址 在 CentOS 桌面系统上设置静态 IP 地址的步骤 截至今天 CentOS 8 Linux 操作系统是 CentOS 的最新可用版本 桌面提供了一个有吸引力的 GUI 来使用它
  • Java 开发人员的重要代码格式化技巧

    Java 代码格式化是编写干净 可读和可维护代码的一个重要方面 在整个团队或组织中采用一套一致的格式化规则将显着提高代码库的整体质量 使开发人员更容易理解 修改和调试代码 本文将概述 Java 代码格式化最佳实践 讨论开发人员可以用来增强代
  • 如何在 Fedora 35/34/33 上安装 Erlang

    Erlang是一种编程语言 用于构建具有高可用性要求的大规模可扩展的软实时系统 Erlang运行时系统内置了对并发 分布式和容错的支持 本教程将帮助您在 Fedora Linux 系统上安装 erlang 步骤 1 在 Fedora 上安装
  • 如何在 Ubuntu 和 Debian 上设置 Squid 代理服务器

    如果您正在寻找一种增强 Debian 服务器安全性和性能的方法 那么设置 Squid 代理服务器可能是一个不错的选择 Squid 是一种广泛使用的开源代理服务器 提供缓存 过滤和身份验证等各种功能 在本文中 我们将讨论在 Ubuntu 和基
  • 如何在 CentOS 8 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 本文介绍了在 CentOS 8 上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 先决条件 要遵循
  • Linux 中的日期命令

    在本教程中 我们将介绍以下基础知识date命令 The date命令显示或设置系统日期 它最常用于以不同格式打印日期和时间以及计算未来和过去的日期 使用Linuxdate命令 语法为date命令如下 date OPTION FORMAT 要
  • 如何在 CentOS 8 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用非常广泛 包括医学图像分析 拼接街景图像
  • 如何在 Linux 中设置和列出环境变量

    在基于 Linux 和 Unix 的系统中 环境变量是一组动态命名值 存储在系统中 供在 shell 或子 shell 中启动的应用程序使用 简而言之 环境变量是具有名称和关联值的变量 环境变量允许您自定义系统的工作方式以及系统上应用程序的
  • 如何在 Debian 10 上安装 Gradle

    Gradle 是一个强大而灵活的构建工具 主要用于 Java 项目 结合了 Ant 和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对象的编程语言 用于 Java 平台定义项目和构建脚本
  • 如何在 Linux、Windows 和 macOS 上编辑 Hosts 文件

    Hosts 文件用于将域名 主机名 映射到 IP 地址 它是所有操作系统 包括 Linux Windows 和 macOS 都使用的纯文本文件 主机文件的优先级高于 DNS 当您输入要访问的网站的域名时 必须将域名转换为其相应的IP地址 操
  • Bash 连接字符串

    最常用的字符串操作之一是连接 字符串连接只是一个奇特的编程术语 用于通过将一个字符串附加到另一个字符串的末尾来将字符串连接在一起 在本教程中 我们将解释如何在 Bash 中连接字符串 连接字符串 连接两个或多个字符串变量的最简单方法是将它们
  • 如何在 Debian 9 上安装和使用 Docker Compose

    Docker 组合是一个允许您定义和编排多容器 Docker 应用程序的工具 它使用 YAML 文件来配置应用程序的容器 网络和卷 Compose 可用于多种目的 单主机应用程序部署 自动化测试和本地开发是 Docker Compose 最
  • 如何在 Debian 10 Linux 上安装 Apache Web 服务器

    Apache HTTP 服务器是世界上最流行的 Web 服务器之一 它是一个开源 跨平台的 HTTP 服务器 为大部分互联网网站提供支持 Apache 提供了许多强大的功能 可以通过附加模块进行扩展 在本教程中 我们将解释如何在 Debia
  • 如何在 Debian 9 上安装 PHP

    Debian 9 附带的 PHP 7 0 版本很快就会停止支持 并且不再接收安全更新 在本教程中 我们将引导您完成在 Debian 9 服务器上安装 PHP 7 2 的步骤 我们还将向您展示如何配置 Apache 和 Nginx 来运行 P
  • 如何在 Debian 9 上使用 VSFTPD 设置 FTP 服务器

    FTP 文件传输协议 是一种标准网络协议 用于在远程网络之间传输文件 为了更安全 更快速的数据传输 请使用SCP or SFTP 有许多可用于 Linux 的开源 FTP 服务器 最流行和最广泛使用的是PureFTPd ProFTPD an
  • Linux 中的 Xargs 命令

    The xargs实用程序允许您从标准输入构建和执行命令 它通常通过管道与其他命令结合使用 With xargs 您可以提供标准输入作为命令行实用程序的参数 例如mkdir and rm 在本教程中 我们将介绍使用xargs命令 如何使用L
  • 如何在 Ubuntu 18.04 上安装 Chromium Web 浏览器

    Chromium是一款专为现代网络打造的快速 稳定且安全的浏览器 它是许多浏览器的基础 包括世界上使用最广泛的网络浏览器谷歌浏览器 Chromium 和 Google Chrome 之间的主要区别在于 Chromium 是开源的 与 Chr
  • 如何在 Raspberry Pi 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 引擎构建的开源跨平台 JavaScript 运行时环境 允许服务器端执行 JavaScript 代码 它主要用于构建服务器端应用程序 但作为全栈和前端解决方案也非常流行 n
  • 如何在 Debian 9 上安装 Tomcat 9

    Apache Tomcat 是一个开源应用程序服务器 支持 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术 它是当今世界上使用最广泛的应用程序和 Web 服务器之一 本
  • 如何在 Ubuntu 18.04 上安装 PrestaShop

    普斯塔商店是一个免费开源的电子商务平台 它基于 PHP 和 MySQL 可以通过免费和高级插件和主题进行扩展 PrestaShop 具有直观的管理界面 多个支付网关 多语言 分析和报告等功能 是许多在线商家的首选平台 在本教程中 我们将向您