How to Install PrestaShop with LAMP Stack and Let’s Encrypt SSL on Debian 11

PrestaShop is a commonly used PHP-based CMS (Content Management System). For small & large businesses PrestaShop can be a good fit.  In this article, we are going to learn how to install PrestaShop on Debian 11. So, let’s get started.

Pre-requisites :

  • A system with Debian 11 installed and running.

  • root access to the system.

  • LAMP Stack installed and running, for this, you can refer to one of our guides on installing the LAMP Stack (Apache, MariaDB, and PHP).

Once you're all set, we'll proceed with PrestaShop installation and configuration.

Create Database

Let us begin with creating a Database and a user. We will then grant the required privileges to the user so it can interact with the Database.

mysql -u root

CREATE DATABASE ccpresta;

CREATE USER 'ccpresta'@'localhost' IDENTIFIED BY 'UYGVc%$#Erfgt*&^%4';

GRANT ALL PRIVILEGES ON ccpresta.* TO 'ccpresta'@'localhost';

FLUSH PRIVILEGES;

quit

The above commands will give complete access to ccpresta Database to the user ccpresta.We would suggest using a strong and long password.

Configure PHP Settings for PrestaShop

Configure PHP Memory Limit, Post max size, and Upload max filesize. You can change the limit as per your need.

sed -i 's/memory_limit = .*/memory_limit = 256M/' /etc/php/7.4/apache2/php.ini

sed -i 's/post_max_size = .*/post_max_size = 64M/' /etc/php/7.4/apache2/php.ini

sed -i 's/upload_max_filesize = .*/upload_max_filesize = 64M/' /etc/php/7.4/apache2/php.ini

Enable Apache module if not already enabled then restart the Web Server.

a2enmod php7.4

systemctl restart apache2

Configuring Apache vHost

Now, create a new Apache configuration file dev.domainhere.info.conf for PrestaShop with the following command. Replace dev.domainhere.info with the domain name of your own for all the below code examples:

vi /etc/apache2/sites-available/dev.domainhere.info.conf

Now, press i to go to INSERT mode and type in the following lines of codes in the dev.domainhere.info.conf file.

<VirtualHost *:80>

ServerName dev.domainhere.info
ServerAlias dev.domainhere.info
ServerAdmin admin@dev.domainhere.info
DocumentRoot /var/www/html/dev.domainhere.info

ErrorLog ${APACHE_LOG_DIR}/dev.domainhere.info_error.log
CustomLog ${APACHE_LOG_DIR}/dev.domainhere.info_access.log combined

<Directory /var/www/html/dev.domainhere.info>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>

</VirtualHost>

Now make directory for PrestaShop files:

mkdir -p /var/www/html/dev.domainhere.info/

Enable SSL and Rewrite:

a2ensite dev.domainhere.info

a2enmod rewrite ssl

Restart Apache:

systemctl restart apache2

Install Let’s Encrypt SSL Certificate

Let's issue an SSL certificate for the domain for this we will need a snap package for Debian operating system.

We will update and install the snap package on the system:

apt update

apt install -y snapd

snap install core && sudo snap refresh core

Next, with the help of snap, we will install the certbot client which is used to create Let's Encrypt certificates:

snap install --classic certbot

ln -s /snap/bin/certbot /usr/bin/certbot

Install SSL Certificate

Use the certbot command to issue a Let's Encrypt certificate. The command will auto-detect the domains available or configured in the vHost configuration:

certbot --apache

SSL certificates are valid for 90 days. The renewal process is now automated, you do not have to renew this manually.

Enable http and https ( 80/443 ):

To enable http and https connection through the firewall, follow the commands:

sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

Download PrestaShop

Let's download PrestaShop:

cd /etc/www/html/dev.domainhere.info

Check PrestaShop Latest Versions Here.

wget https://www.prestashop.com/en/system/files/ps_releases/prestashop_1.7.8.2.zip

unzip prestashop_1.7.8.2.zip

unzip prestashop.zip

rm prestashop_1.7.8.2.zip

rm prestashop.zip

chown -R www-data:www-data /var/www/html/dev.domainhere.info/

Configuring PrestaShop

Now open the IP address from your browser, this will redirect you to configuring the final parts of PrestaShop installation.

https://dev.domainhere.info

Replace the dev.domainhere.info with the actual IP or domain configured on the server.

Now we should remove the installtion directory using below commad:

sudo rm -rf /var/www/html/dev.domainhere.info/{install,docs,README.md}

Input the Database details which was configured earlier. Follow the below steps:

Now you have successfully installed PrestaShop with LAMP Stack and Let’s Encrypt SSL on Debian 11.