Magento¶
Install a Magento container with LiteSpeed stable version based on Ubuntu 18.04 Linux.
Prerequisites¶
Configuration¶
Edit the .env
file to update the demo site domain, default MySQL user, and password. Feel free to check Docker hub Tag page if you want to update default litespeed and php versions.
Installation¶
Clone this repository or copy the files from this repository into a new folder:
git clone https://github.com/litespeedtech/lsws-magento-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 a single web server container, please see the usage method here.
Components¶
The docker image installs the following packages on your system:
Component | Version |
---|---|
Linux | Ubuntu 18.04 |
LiteSpeed | Latest version |
MariaDB | Stable version: 10.3 |
PHP | Latest version |
LiteSpeed Cache | Latest from WordPress.org |
Litemage Cache | Latest from litespeedtech |
ACME | Latest from ACME official |
WordPress | Latest from WordPress |
Magento | Version 2.4.0 |
phpMyAdmin | Latest from dockerhub |
Data Structure¶
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 webserver logs and virtual host access logs -
lsws
contains all web server configuration files -
sites
contains the document roots (the Magento application will install here)
Usage¶
Starting a Container¶
Start the container with the up
or start
methods:
docker-compose up
docker-compose up -d
Note: The container will auto-apply a 15-day trial license. Please contact LiteSpeed to extend the trial, or apply your own license, starting from $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 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 Magento installation with the configured domain. By default the domain is http://localhost.
bash bin/demosite.sh -M
bash bin/demosite.sh -M -S
Creating a Domain and Virtual Host¶
bash bin/domain.sh [-A, --add] example.com
Please ignore SSL certificate warnings from the server. They happen if you haven't applied the certificate.
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 specify them. Use the following to auto generate:
bash bin/database.sh [-D, --domain] example.com
user_name
, my_password
, 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 Magento Site¶
To preconfigure the magento file, run the database.sh
script for your domain, before you use the following command to install Magento:
./bin/appinstall.sh [-A, --app] Magento [-D, --domain] example.com
./bin/appinstall.sh [-A, --app] Magento [-D, --domain] example.com [-S, --sample]
Installing ACME¶
We need to run the ACME installation command the first time only. With email notification:
./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR
./bin/acme.sh [-I, --install] [-NE, --no-email]
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 webserver 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
mod_secure
on the web server: bash bin/webadmin.sh [-M, --mod-secure] disable
Please ignore the ModSecurity warnings from the server. They happen if some of the rules are not supported by the server.
Applying license to LSWS¶
Apply for your license with the command:
bash bin/webadmin.sh [-S, --serial] YOUR_SERIAL
bash bin/webadmin.sh [-S, --serial] TRIAL
Accessing the Database¶
After installation, you can use PHPMyAdmin 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. We can create a custom
folder and a custom/Dockerfile
file under the main project. 2. Add the following example code to Dockerfile
under the custom folder
FROM litespeedtech/litespeed:latest
RUN apt-get update && apt-get install lsphp74-pspell -y
build: ./custom
line under the "image: litespeedtech" of docker-composefile. So it will looks like this litespeed:
image: litespeedtech/litespeed:${LSWS_VERSION}-${PHP_VERSION}
build: ./custom
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.