如何在Ubuntu 18.04上安装PrestaShop
PrestaShop是一个免费的开源电子商务平台。
它基于PHP和MySQL,可以使用免费和高级的插件和主题进行扩展。
凭借直观的管理界面,多个支付网关,多种语言,分析和报告等功能,PrestaShop是许多在线商家的首选平台。
在本教程中,我们将向我们展示如何在Ubuntu 18.04服务器上安装PrestaShop。
我们将使用Nginx作为网络服务器,使用最新的PHP 7.2和MySQL/MariaDB作为数据库服务器。
准备工作
在继续本教程之前,请确保满足以下准备工作:
- 有一个指向公共服务器IP的域名。我们将使用'example.com'。
- 按照以下说明将Nginx安装在Ubuntu服务器上。
- 为域安装的SSL证书,用于加密用户信息。我们可以按照以下说明安装免费的Let's Encrypt 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”的MySQL用户帐户,并通过运行以下命令向该用户授予必要的权限:
GRANT ALL ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY '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的最新稳定版本是版本'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
设置正确的权限,以便网络服务器可以使用以下“ 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//.jpg last; rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$/img/p///.jpg last; rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$/img/p////.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$/img/p/////.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$/img/p//////.jpg last; rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$/img/p///////.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////////.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/////////.jpg last; rewrite ^/c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$/img/c/.jpg last; rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$/img/c/.jpg last; # AlphaImageLoader for IE and fancybox rewrite ^images_ie/?([^/]+)\.(jpe?g|png|gif)$js/jquery/plugins/fancybox/images/. last; # Web service API rewrite ^/api/?(.*)$/webservice/dispatcher.php?url= last; # Installation sandbox rewrite ^(/install(?:-dev)?/sandbox)/(.*) //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安装并添加新产品。