如何在Debian 9上安装PrestaShop
在本指南中,我们将向您展示如何在Debian 9.1发行版中安装和配置最新版本的Prestashop,以创建免费的在线购物车。
Prestashop是一个免费的开源电子商务内容管理平台,使用PHP编程语言编写,通常在Linux / Apache / Nginx Web服务器,PHP和MySQL / MariaDB数据库管理系统上部署。 Prestashop CMS今天被广泛用于为不同的企业创建网上商店,并为服务和商品做广告和销售。
要求
- Debian 9最小的安装在裸机或虚拟专用服务器上。
- 为您的系统网络接口卡之一配置的静态IP地址 。
- 为本地或远程帐户提供sudo root权限或直接访问root帐户。
- 一个域名,私人或公共,根据您的部署,配置正确的DNS记录。
初始配置
在开始在您自己的服务器上从源代码安装和配置Prestashop之前,首先要确保系统符合编译和安装应用程序的所有软件要求。 在第一步中,通过执行以下命令更新系统存储库和软件包。
apt update
apt upgrade
在下一步中,执行以下命令以安装一些必要的实用程序,这些实用程序将用于从命令行进一步管理您的系统。
apt install wget bash-completion zip unzip
接下来,通过执行以下命令来设置您的系统的名称。 相应地替换您的主机名变量。
hostnamectl set-hostname shop
通过执行以下命令验证计算机主机名和主机文件。
hostnamectl
cat /etc/hostname
hostname –s
hostname –f
最后,重新启动Debian服务器以正确应用内核更新和主机名更改。
systemctl reboot
Prestashop是一个基于Web的CMS电子商务平台,主要以PHP服务器端编程语言编写。 为了执行Prestashop PHP文件脚本,必须在服务器上安装并运行Web服务器(如Apache HTTP服务器和PHP处理网关)。 为了安装Apache Web服务器和PHP解释器以及Prestashop正常运行所需的所有PHP模块,请在服务器控制台中发出以下命令。
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-xml php7.0-gd php7.0-json php7.0-zip php7.0-intl php7.0-mcrypt php7.0-curl php7.0-intl php7.0-opcache
在安装Apache和PHP之后,测试Web服务器是否已启动并正在运行,并通过以root权限发出以下命令来监听端口80上的网络连接。
netstat –tlpn
如果您的Debian系统默认没有安装netstat网络实用程序,请执行以下命令进行安装。
apt install net-tools
通过检查netstat命令输出,您可以看到apache web服务器正在监听端口80上的传入网络连接。对于同样的任务,您还可以使用ss命令,该命令在Debian 9中默认自动安装。
ss -tlpn
如果您的系统上启用了防火墙(如UFW防火墙应用程序),则应该添加新的规则,以允许HTTP通信通过防火墙,方法是发出以下命令。
ufw allow WWW
要么
ufw allow 80/tcp
如果您使用iptables原始规则管理Debian服务器中的防火墙规则,请添加以下规则以允许防火墙上的端口80入站流量,以便访问者可以浏览Prestashop网上商店。
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
接下来,通过执行以下命令,启用并应用Prestashop CMS所需的以下Apache模块以正确运行。
a2enmod rewrite
systemctl restart apache2
最后,通过HTTP协议访问您的Debian计算机IP地址或您的域名或服务器FQDN,测试Apache Web服务器的默认网页是否可以显示在客户端的浏览器中,如下图所示。 如果您不知道您的机器IP地址,请执行ifconfig或ip命令以显示您的服务器的IP地址。
http://your_domain.tld
为了通过HTTPS协议安装并访问支持Prestashop的Web管理员面板和前端网站,以保护客户端流量,请发出以下命令启用Apache Web服务器SSL模块和SSL站点配置文件。
a2enmod ssl
a2ensite default-ssl.conf
接下来,使用文本编辑器打开Apache默认的SSL站点配置文件,并通过在DocumentRoot指令后面添加以下代码行来启用URL重写规则,如下面的示例所示:
nano /etc/apache2/sites-enabled/default-ssl.conf
SSL站点配置文件摘录:
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
此外,请对VirtualHost行进行以下更改,使其看起来像下面的摘录所示:
<VirtualHost *:443>
关闭SSL Apache文件并打开/etc/apache2/sites-enabled/000-default.conf文件进行编辑,并添加与SSL配置文件相同的URL重写规则。 在DocumentRoot语句之后插入代码行,如下例所示。
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
最后,重新启动Apache守护程序以应用到目前为止配置的所有规则,并通过HTTP协议访问您的域。 由于您在安装时使用由Apache发出的自动签名证书对,因此浏览器中应显示错误警告。 接受警告以继续并重定向到Apache默认网页。
systemctl restart apache2
HTTPS://yourdomain.tld
如果UFW防火墙应用阻止到HTTPS端口的传入网络连接,则应发出以下命令添加新规则以允许HTTPS流量通过防火墙。
ufw allow 'WWW Full'
要么
ufw allow 443/tcp
如果iptables是安装的默认防火墙应用程序来保护您的Debian系统在网络级别,添加以下规则允许防火墙端口443入站流量,以便访问者可以浏览您的域名。
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload
在下一步中,我们需要对PHP默认配置文件进行一些更改,以确保启用以下PHP变量,并且PHP 时区设置已正确配置,并与您的系统地理位置相匹配。 打开/etc/php/7.0/apache2/php.ini文件进行编辑,并确保下面的行设置如下。 另外,最初还要对PHP配置文件进行备份。
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
在php.ini配置文件中搜索,编辑和更改以下变量:
file_uploads = On
allow_url_fopen = On
memory_limit = 128 M
upload_max_file_size = 64M
date.timezone = Europe/London
增加memory_limit变量,以支持大文件附件,并根据您的实际时间,通过查看PHP文档所提供的时区列表来替换time.zone变量http://php.net/manual/en/timezones .PHP
如果要通过适用于PHP7的OPCache插件来提高网站页面的加载速度,请在PHP解释器配置文件的底部附加以下OPCache设置,具体如下:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
关闭php.ini配置文件,并检查是否验证PHP配置文件的末尾,通过发出以下命令来检查变量是否已被正确添加。
tail /etc/php/7.0/apache2/php.ini
完成上述所有更改后,通过发出以下命令来重新启动apache守护进程以应用新的更改。
systemctl restart apache2
最后,通过执行以下命令创建一个PHP信息文件,并通过访问以下URL中浏览器的PHP信息脚本文件来检查PHP时区是否已正确配置,如下图所示。 向下滚动到日期设置来检查php时区配置。
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
HTTPS://domain.tld/info.php
Prestashop在RDBMS数据库中存储不同的配置,例如用户,会话,联系人,产品,目录等。 在本指南中,我们将配置Prestashop使用MariaDB数据库作为后端。 发出以下命令来安装MariaDB数据库和访问mysql数据库所需的PHP模块。
apt install mariadb-server php7.0-mysql
安装MariaDB之后,通过运行netstat命令来验证守护进程是否正在运行,并监听本地主机端口3306上的连接。
netstat –tlpn | grep mysql
然后,通过发出以下命令登录到MySQL控制台并保护MariaDB root帐户。
mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit
在下一步中,通过执行由Debian拉伸存储库中的安装包提供的脚本mysql_secure_installation来保护MariaDB。 在运行时,脚本会询问一系列旨在保护MariaDB数据库的问题,例如:更改MySQL root密码,删除匿名用户,禁用远程root登录和删除测试数据库。 通过发出以下命令来执行脚本,并确保您为所有问题输入yes以完全保护MySQL守护进程。 使用下面的脚本输出除了作为指导。
sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] 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? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
为了测试MariaDB安全性,请尝试从无控制台密码的控制台登录数据库。 如果没有为root帐户提供密码,则应拒绝对数据库的访问。 如果提供了密码,登录过程应该被授予MySQL控制台,如下面的截图所示。
mysql -h localhost -u root
mysql -h localhost -u root –p
接下来,登录到MariaDB数据库控制台,通过发出以下命令为Prestashop和具有将用于管理Prestashop数据库的密码的用户创建一个数据库。 相应地替换PrestaShop数据库名称,用户名和密码。
mysql –u root -p
create database my_shop;
grant all privileges on my_shop.* to 'shop_user' identified by 'shop_password';
flush privileges;
exit
为了应用到目前为止所做的所有更改,请重新启动MySQL和Apache守护程序,并通过发出以下命令来验证守护程序是否正在运行。
systemctl restart mysql apache2
systemctl status mysql apache2
安装PrestaShop
当您的电子商务网上商店安装满足所有系统要求后,请访问GitHub https://github.com/PrestaShop/PrestaShop/releases上的Prestashop发布页面,并通过发布wget实用程序下载最新的zip压缩包压缩包在下面的示例中说明。
wget https://github.com/PrestaShop/PrestaShop/releases/download/1.7.2.3/prestashop_1.7.2.3.zip
zip压缩文件下载完成后,直接将Prestashop压缩文件解压缩到您的Web服务器文档根目录,并通过执行以下命令列出解压缩的文件。 另外,将Apache Web服务器安装的默认index.html文件移除到webroot路径,并删除前面创建的info.php文件。
rm /var/www/html/index.html
rm /var/www/html/info.php
unzip prestashop_1.7.2.3.zip -d /var/www/html/
ls /var/www/html/
接下来,执行以下命令,以授予Apache运行时用户对Web根路径的完全写入权限。 使用ls命令列出位于/ var / www / html /目录中的Prestashop安装文件的权限。
chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/
继续进行Prestashop CMS安装,方法是打开浏览器并通过HTTPS协议浏览服务器的IP地址或域名。 在第一个安装屏幕上,Prestashop安装程序脚本将从Web服务器的Web根路径展开prestashop.zip文件的内容,如下图所示。
https://yourdomain.tld
提取完成后,您可以切换到命令行并列出/ var / www / html /目录的内容,以查看所有Prestashop提取的文件。
ls -la /var/www/html/
在下一个屏幕上,Prestashop安装程序将显示一个欢迎屏幕,并要求您选择安装语言才能继续安装过程。 选择您的语言,然后点击下一步按钮继续下一步。
在下一个安装屏幕上,选中“我同意许可条款”,然后按下一步按钮继续,如下图所示。
Prestashop安装程序现在将执行一系列检查,以确定与您的系统和环境的兼容性,并将列出最终的错误(如果找到)。 如果您的系统环境与PrestaShop安装兼容,则应在您的网页上显示绿色消息,如下图所示。 再次点击下一步按钮,随着安装过程进一步移动。
在下一个屏幕上,添加有关您商店的必要信息,例如商店名称,主要活动,您的商店注册所在的国家和帐户详细信息。 请提供一个电子邮件地址,以便访问Prestashop后端Web面板和一个用于此帐户的强密码,如下图所示。 完成后点击下一步按钮继续。
在下一个安装屏幕上添加之前为Prestashop创建的MySQL数据库地址,名称和凭证,点击' Test your database connection now'按钮。 如果与MySQL数据库的连接成功,请点击下一步按钮开始安装过程。
等待几分钟让安装程序填写所有必需的信息并完成安装过程,如下面的截图所示。
安装完成后,安装程序将显示您支持的Web管理面板登录信息和所需的超链接,以访问将用于管理您的网上商店的Prestashop 后端办公室以及您的商店的前台 ,这些信息将显示给您的客户。
确保您点击“后台管理”按钮以访问商店后台。 您应该记下商店后台地址或书签,以便将来从其他浏览器登录到Web管理员面板。
尝试登录到后台时,如下图所示的警告消息会通知您,应该从域webroot路径中删除安装目录。
为了能够登录到Prestashop支持的管理面板,返回到您的服务器控制台并执行以下命令删除Prestashop安装目录。
rm -rf /var/www/html/install/
之后,重新加载Prestashop后台页面并在安装过程中使用凭据设置登录到管理面板,如以下屏幕截图所示。
在第一次登录时,浏览器将显示一条欢迎消息。 点击开始按钮会将您重定向到您可以开始添加第一个产品的目录,如下图所示。
为了访问Prestashop前端网页,只需在浏览器中输入您的域名,您将被自动重定向到初始页面,如下图所示。
但是,现在,商店只能通过未加密的HTTP协议进行无担保访问。 为了在Prestashop中启用HTTPS支持,请登录后台面板并导航至配置 - >商店参数 - >常规 , 点击此处查看您的商店是否支持HTTPS链接,如下图所示。
执行SSL测试后,将启用SSL按钮切换到YES,并向下滚动到页面底部,点击保存按钮以应用配置。 但是,到目前为止,该配置仅支持Back Office链接的SSL支持。 将访问您的商店域名的客户端将被定向到未加密的连接。
为了确保访问者在您的域名上的流量,请将“ 启用所有页面上的SSL”按钮切换到“是”,如下图所示,向下滚动并点击页面底部的“ 保存”按钮以应用设置。
要测试客户端现在是否自动重定向到通过HTTPS协议通过安全连接访问您的域,请刷新Prestashop前端页面或在浏览器中键入您的域名。 您的商店域名现在应该通过HTTP协议进行访问,如下图所示。
就这样! 您已经在Debian 9.1上成功安装并配置了PrestaShop。 但是,由于您的Apache HTTP服务器使用自签名证书来加密服务器和访问者浏览器之间的流量,因此总是会在浏览器中首次访问商店时生成并显示一条警告消息。 此警告对您的网上商店业务不利。 在这种情况下,您应该购买由受信任的证书颁发机构颁发的证书或从Let's Encrypt CA 获取免费证书对。
有关Prestashop的其他自定义配置,请访问以下地址的文档页面: http : //doc.prestashop.com/display/PS17/Installing+PrestaShop