锐安盾-网站安全加速服务

中国站

联系我们

400-002-9968

售前咨询

售后服务

注册 登录

博客 > 如何在 Debian10 上搭建 PrestaShop 外贸电商平台?

如何在 Debian10 上搭建 PrestaShop 外贸电商平台?

  • 标签:
  • Debian
  • PrestaShop
  • 外贸电商

浏览量:472次评论:0次

作者:锐成网络整理时间:2024-07-11 16:38:24

PrestaShop 是一个开源,免费,可扩展的网上购物系统, 基于 PHPMySQL 以及 Smarty 引擎编程,模块化设计,可以使用插件和主题进行扩展,能轻易实现多种语言,多种货币浏览交易,支持Paypal等几乎所有的支付手段,是外贸网站建站的佳选。本教程讲一步一步教你如何在Debian10上搭建PrestaShop电商系统

如何在 Debian10 上搭建 PrestaShop 外贸电商平台?

前提条件

1、一台安装了Debian10系统的VPS服务器。

2、登录用的root账号。

配置SSH登录

首先,我们使用root账号登录系统,创建应用账号以及配置SSH登录。

ssh root@your_server_ip

更新系统软件:

apt update -y && apt upgrade -y

新建一个linux265账号供后续使用:

adduser linux265

usermod -a -G sudo linux265

修改SSH配置,为加固安全调整其默认的22端口号。

nano /etc/ssh/sshd_config

在sush_config文件中,找到以下选项并修改为如下内容,其中的端口号你可以根据自己需要设置:

Port 22100

Protocol 2

PermitRootLogin no

在文件最后增加如下内容:

UseDNS no

AllowUsers linux265

保存sush_config文件,并通过如下命令重启ssh服务,使其配置生效。

systemctl restart ssh.service

此时,可以按CTRL+D退出当前终端登录,使用新创建的账号ssh登录到服务器。

ssh -p 22100 linux265@ip_address

安装PHP及相关PHP模块

通过下面一条命令安装PHP环境以及相关PHP模块:

sudo apt install php-fpm php-common php-mysql php-gmp php-curl php-intl php-mbstring php-xmlrpc php-gd php-bcmath php-imap php-xml php-cli php-zip unzip wget git curl -y

安装完成后,打开/etc/php/7.3/fpm/php.ini文件进行编辑,找到如下内容选项,调整文件上传等相关参数值如下:

file_uploads = On

allow_url_fopen = On

short_open_tag = On

memory_limit = 256M

cgi.fix_pathinfo = 0

upload_max_filesize = 100M

max_execution_time = 360

保存文件,通过以下命令重启PHP-FPM服务:

sudo systemctl restart php7.3-fpm.service

安装配置Nginx

nginx的安装也非常简单,只需要简单的一条命令即可。

sudo apt install nginx

安装完成后,配置PrestaShop需要的站点服务。此时在目录/etc/nginx/sites-available/创建myshop.com配置文件:

sudo nano /etc/nginx/sites-available/myshop.com

在文件中添加如下内容:

server {

    # Ipv4

    listen 80;

    # IPv6

    listen [::]:80;

    # SSL Ipv4 & v6

    # listen 443 ssl;

    # listen [::]:443 ssl;

    # ssl_session_timeout 24h;

    # ssl_session_cache shared:SSL:10m;

    # ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    # ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:AES128-SHA:!ADH:!AECDH:!MD5;

    # ssl_prefer_server_ciphers on;

    # Do not forget to create this file before with OpenSSL : "openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048"

    # ssl_dhparam /etc/nginx/ssl/dhparam.pem;

    # Your domain names here

    server_name myshop.com  www.myshop.com;

    #Your website root location

    root /var/www/myshop/;

    index index.php;

    #Log

    access_log /var/log/nginx/myshop_access.log;

    error_log /var/log/nginx/myshop_error.log;

    # Your admin folder

    set $admin_dir /admin730nzdtkb;

    # Gzip Settings, convert all types.

    gzip on;

    gzip_vary on;

    gzip_proxied any;

    # Can be enhance to 5, but it can slow you server

    # gzip_comp_level    5;

    # gzip_min_length    256;

    gzip_types

        application/atom+xml

        application/javascript

        application/json

        application/ld+json

        application/manifest+json

        application/rss+xml

        application/vnd.geo+json

        application/vnd.ms-fontobject

        application/x-font-ttf

        application/x-web-app-manifest+json

        application/xhtml+xml

        application/xml

        font/opentype

        image/bmp

        image/svg+xml

        image/x-icon

        text/cache-manifest

        text/css

        text/plain

        text/vcard

        text/vnd.rim.location.xloc

        text/vtt

        text/x-component

        text/x-cross-domain-policy;

        # Supposed to be the case but we never know

        # text/html;

    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    # Symfony controllers

    location ~ /(international|_profiler|module|product|feature|attribute|supplier|combination|specific-price|configure)/(.*)$ {

          try_files $uri $uri/ /index.php?q=$uri&$args $admin_dir/index.php$is_args$args;        

    }

 

    # Redirect needed to "hide" index.php

    location / {

#        try_files $uri $uri/ /index.php$uri&$args;

        # Old image system ?

                    rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;

                    rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2.jpg last;

                    rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3.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.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.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.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.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.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.jpg last;

                    rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;

                    rewrite ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1.jpg last;

                    rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;

                    try_files $uri $uri/ /index.php?$args;  

    }

    error_page 404 /index.php?controller=404;

    # Static assets delivery optimisations

    add_header Strict-Transport-Security max-age=31536000;

    # Cloudflare / Max CDN fix

    location ~* \.(eot|otf|ttf|woff|woff2)$ {

        add_header Access-Control-Allow-Origin *;

    }

    location ~* \.(css|js|docx|zip|pptx|swf|txt|jpg|jpeg|png|gif|swf|webp|flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$ {

      expires max;

      log_not_found off;

      add_header Pragma public;

      add_header Cache-Control "public, must-revalidate, proxy-revalidate";

    }

    # Deny access to .htaccess .DS_Store .htpasswd etc

    location ~ /\. {

        deny all;

    }

    # PHP 7 FPM part

    location ~ [^/]\.php(/|$) {

        fastcgi_index index.php;

        # Switch if needed

        include /etc/nginx/fastcgi_params;

        # include fcgi.conf;

        # Do not forget to update this part if needed

        # fastcgi_pass 127.0.0.1:9000;  

        fastcgi_pass unix:/run/php/php7.3-fpm.sock;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_keep_conn on;

        fastcgi_read_timeout 30s;

        fastcgi_send_timeout 30s;

        # In case of long loading or 502 / 504 errors

        # fastcgi_buffer_size 256k;

        # fastcgi_buffers 256 16k;

        # fastcgi_busy_buffers_size 256k;

        client_max_body_size 10M;

        # Temp file tweak

        fastcgi_max_temp_file_size 0;

        fastcgi_temp_file_write_size 256k;

   }

   # Allow access to robots.txt but disable logging every access

   location = /robots.txt {

       allow all;

       log_not_found off;

       access_log off;

   }

 

   # Prevent injection of php files in directories a user can upload stuff

   location /upload {

       location ~ \.php$ { deny all; }

   }

   location /img {

       location ~ \.php$ {  deny all;}

   }

   # Ban access to source code directories

   location ~ ^/(app|bin|cache|classes|config|controllers|docs|localization|override|src|tests|tools|translations|travis-scripts|vendor)/ {

      deny all;

   }

   # Banned file types

   location ~ \.(htaccess|yml|log|twig|sass|git|tpl)$ {

       deny all;

   }

}

注意:配置文件中的域名根据自己实际情况填写,这里只是使用了myshop.com进行举例。SSL证书则需要自己购买或者申请免费的Let's Encrypt 证书。当然你也可以执行如下命令来使用Let's Encrypt 证书:

sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface -y

sudo apt install python3-certbot-nginx

sudo certbot --nginx -d myshop.com -d www.myshop.com

如果要重新获得SSL证书可以运行如下命令,你也可以将其设置为crontab job定期执行获取更新证书:

sudo certbot renew --dry-run

保存myshop.com配置文件,并创建如下软链接。

sudo ln -s /etc/nginx/sites-available/myshop.com /etc/nginx/sites-enabled/

以上操作完成后,使用如下命令验证配置文件的正确性以及重启nginx以及PHP-FPM服务。

sudo nginx -t //验证配置文件的正确性

sudo systemctl restart nginx.service

sudo systemctl restart php7.3-fpm.service

安装数据库

在Debian10上,mariadb已经取代MySQL成为默认的数据库,我们通过以下命令进行安装:

sudo apt install mariadb-server mariadb-client

安装完成后,执行如下命令,加固数据库安全并重置数据库root账号密码:

sudo mysql_secure_installation

命令执行后,终端会有交互提示,所有的默认输入"y"回车即可。

之后,通过以下命令登录数据库:

mysql -u root -p

登录成功后,之后输入以下命令创建数据库以及数据库账号:

CREATE DATABASE dbprestashop DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

GRANT ALL ON dbprestashop.* TO 'prestashopuser'@'localhost' IDENTIFIED BY '123456';

FLUSH PRIVILEGES;

EXIT;

下载并安装PrestaShop

通过wget命令下载安装PrestaShop,如果想了解wget命令的使用,可以参考

cd /tmp && wget https://download.prestashop.com/download/releases/prestashop_1.7.6.5.zip

下载完成后,通过unzip命令解压,将解压的程序拷贝到/var/www/目录中,并修改相应的权限,如下命令:

sudo unzip prestashop.zip -d /var/www/myshop

sudo chown -R www-data:www-data /var/www/myshop/

sudo find . -type d -exec chmod 0755 {} \;

sudo find . -type f -exec chmod 0644 {} \;

以上所有操作完成后,我们就可以在浏览器中输入对应的地址通过安装向导一步一步安装PrestaShop了。

例如在浏览器地址中输入:https://www.myshop.com之后就会进入到安装向导页面。

设置防火墙

使用ufw对防火墙进行管理,可以通过以下命令进行设置:

sudo apt install ufw  //install ufw

sudo ufw enable

sudo ufw app list

sudo ufw allow 22100/tcp comment 'Open port ssh tcp port 22100'

sudo ufw allow 80

sudo ufw allow 443

sudo ufw status

至此,整个在Debian10上如何一步一步安装PrestaShop电商平台程序的讲解已经完成,如果你正在使用PrestaShop搭建外贸电商平台,不妨尝试一下。

重要声明:本文来自Linux265,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。

我的评论

还未登录?点击登录

微信扫码沟通
微信扫码沟通

微信扫码沟通

售前咨询
合作
售后
return head