Skip to content

PrestaShop

This guide will explain how to install a PrestaShop Docker container with LiteSpeed Web Server (LSWS) Enterprise, based on Ubuntu 20.04 Linux.

Prerequisites

  1. Install Docker
  2. Install Docker Compose

Configuration

Edit the .env file to update the demo site domain, default MySQL user, and password. Take a look at the Docker hub Tag page to update default LSWS and PHP versions.

Installation

Clone this repository, or copy the files from it into a new folder:

git clone https://github.com/litespeedtech/lsws-prestashop-docker-env.git

Open a terminal, cd to the folder in which docker-compose.yml is saved, and run:

docker-compose up

Note

If you wish to run container that simply has LiteSpeed Web Server alone (no PrestaShop), please see the usage method here.

Components

The Docker image installs the following packages on your system:

Component Version
Linux Ubuntu 20.04
LiteSpeed Web Server Latest stable version
MariaDB Stable version: 10.5
PHP Latest PrestaShop-supported version
ACME Latest from ACME official
PrestaShop 1.7.7.3
LSCache Module for PrestaShop 1.4.0
phpMyAdmin Latest from Docker Hub

Data Structure

This is the structure of the cloned project:

├── acme
├── bin
│   └── container
├── data
│   └── db
├── logs
│   ├── access.log
│   ├── error.log
│   ├── lsrestart.log
│   └── stderr.log
├── lsws
│   ├── admin-conf
│   └── conf
├── sites
│   └── localhost
├── LICENSE
├── README.md
└── docker-compose.yml

  • acme contains all applied certificates from Lets Encrypt
  • bin contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc.
  • data stores the MySQL database
  • logs contains all of the web server logs and virtual host access logs
  • lsws contains all web server configuration files
  • sites contains the document roots (the PrestaShop application will install here)

Usage

Starting a Container

Start the container with the up or start methods:

docker-compose up
You can run with daemon mode, like so:
docker-compose up -d
The container is now built and running.

Note

The container will auto-apply a 15-day trial license. Please contact LiteSpeed to extend the trial, or apply an existing license. New licenses start at $0.

Stopping a Container

docker-compose stop

Removing Containers

To stop and remove all containers, use the down command:

docker-compose down

Setting the WebAdmin Password

We strongly recommend you set your personal WedAdmin Console password right away.

bash bin/webadmin.sh my_password

Starting a Demo Site

After running the following command, you should be able to access the PrestaShop installation with the configured domain. By default the domain is http://localhost.

bash bin/demosite.sh -P

Creating a Domain and Virtual Host

bash bin/domain.sh [-A, --add] example.com

Tip

You can ignore SSL certificate warnings from the server. These occur if you haven't applied the certificate yet.

Deleting a Domain and Virtual Host

bash bin/domain.sh [-D, --del] example.com

Creating a Database

You can either automatically generate the user, password, and database names, or you can specify your own values. Use the following to auto generate:

bash bin/database.sh [-D, --domain] example.com
Use this command to specify your own names, substituting USER_NAME, MY_PASS, and DATABASE_NAME with your preferred values:
bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME

Installing a PrestaShop Site

To preconfigure PrestaShop, run the database.sh script for your domain

Then, you can use the following command to install PrestaShop:

./bin/appinstall.sh [-A, --app] prestashop [-D, --domain] example.com

Enable PrestaShop LSCache Module

The LSCache module is installed and is enabled by default. If you find it is not enabled, you may do so in LiteSpeed Cache > Settings. Set Enable LiteSpeed Cache to Yes.

Installing ACME

You need to run the ACME installation command the first time only. With email notification:

./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR

Applying a Let's Encrypt Certificate

Use the root domain in this command, and it will check for a certificate and automatically apply one with and without www:

./bin/acme.sh [-D, --domain] example.com

Updating Web Server

To upgrade the web server to the latest stable version, run the following:

bash bin/webadmin.sh [-U, --upgrade]

Applying OWASP ModSecurity

Enable OWASP mod_secure on the web server:

bash bin/webadmin.sh [-M, --mod-secure] enable
Disable OWASP mod_secure on the web server:
bash bin/webadmin.sh [-M, --mod-secure] disable

Tip

You can ignore ModSecurity warnings from the server. These occur if some of the rules are not supported by the server.

Applying a License to LSWS

Apply your license with command:

bash bin/webadmin.sh [-S, --serial] YOUR_SERIAL
Apply trial license to server with command:
bash bin/webadmin.sh [-S, --serial] TRIAL

Accessing the Database

After installation, you can use phpMinAdmin to access the database by visiting http://127.0.0.1:8080 or https://127.0.0.1:8443. The default username is root, and the password is the same as the one you supplied in the .env file.

Customization

If you want to customize the image by adding some packages, e.g. lsphp74-pspell, just extend it with a Dockerfile. 1. Create a custom folder and a custom/Dockerfile file under the main project. 2. Add the following example code to custom/Dockerfile:

FROM litespeedtech/litespeed:latest
RUN apt-get update && apt-get install lsphp74-pspell
3. Add build: ./custom directly under image: litespeedtech in docker-composefile, like so:
  litespeed:
    image: litespeedtech/litespeed:${LSWS_VERSION}-${PHP_VERSION}
    build: ./custom
4. Build and start with this command:
docker-compose up --build

FAQ

How do I Configure MTU with Docker?

A common problem when operating dockers within a virtualization infrastructure is that the network cards provided to virtual machines do not have the default MTU of 1500. If the outgoing interface has an MTU smaller than 1500, please consider applying the following rules to docker-compose.yml. This will avoid the package getting trimmed.

networks:                                
  default:                               
    driver: bridge                       
    driver_opts:                         
      com.docker.network.driver.mtu: 1400

Be sure to substitute the MTU number 1400 with your own docker outgoing interface MTU size.


Last update: June 24, 2021