2020-02-26 10:34:45 -05:00
# OpenLiteSpeed WordPress Docker Container
2021-03-08 16:02:27 +08:00
[](https://github.com/litespeedtech/ols-docker-env/actions/)
2020-01-23 12:20:10 -05:00
[](https://hub.docker.com/r/litespeedtech/openlitespeed)
2020-02-26 10:59:31 -05:00
[<img src="https://img.shields.io/badge/slack-LiteSpeed-blue.svg?logo=slack"> ](litespeedtech.com/slack )
[<img src="https://img.shields.io/twitter/follow/litespeedtech.svg?label=Follow&style=social"> ](https://twitter.com/litespeedtech )
2019-12-19 09:47:10 -05:00
2024-11-08 14:31:06 +08:00
Install a lightweight WordPress container with OpenLiteSpeed Edge or Stable version based on Ubuntu 24.04 Linux.
2019-12-18 16:24:03 -05:00
### Prerequisites
1. [Install Docker ](https://www.docker.com/ )
2. [Install Docker Compose ](https://docs.docker.com/compose/ )
## Configuration
2020-01-16 11:35:52 -05:00
Edit the `.env` file to update the demo site domain, default MySQL user, and password.
2020-02-26 15:44:53 -05:00
Feel free to check [Docker hub Tag page ](https://hub.docker.com/repository/docker/litespeedtech/openlitespeed/tags ) if you want to update default openlitespeed and php versions.
2019-12-18 16:24:03 -05:00
## Installation
2020-02-26 11:09:02 -05:00
Clone this repository or copy the files from this repository into a new folder:
```
git clone https://github.com/litespeedtech/ols-docker-env.git
```
2022-10-26 20:44:37 +08:00
Open a terminal, `cd` to the folder in which `docker compose.yml` is saved, and run:
2019-12-18 16:24:03 -05:00
```
2022-10-26 20:44:37 +08:00
docker compose up
2019-12-18 16:24:03 -05:00
```
2019-12-18 17:06:00 -05:00
2020-02-26 15:44:53 -05:00
Note: If you wish to run a single web server container, please see the [usage method here ](https://github.com/litespeedtech/ols-dockerfiles#usage ).
2020-02-26 11:09:02 -05:00
2020-01-10 16:12:22 -05:00
## Components
2020-01-16 11:35:52 -05:00
The docker image installs the following packages on your system:
2019-12-18 16:24:03 -05:00
2020-01-10 16:12:22 -05:00
|Component|Version|
| :-------------: | :-------------: |
2024-10-02 09:53:32 +08:00
|Linux|Ubuntu 24.04|
2024-01-03 15:32:23 +08:00
|OpenLiteSpeed|[Latest version ](https://hub.docker.com/r/litespeedtech/openlitespeed )|
2024-10-02 09:53:32 +08:00
|MariaDB|[Stable version: 11.4 ](https://hub.docker.com/_/mariadb )|
2020-02-26 15:44:53 -05:00
|PHP|[Latest version ](http://rpms.litespeedtech.com/debian/ )|
2020-01-10 16:12:22 -05:00
|LiteSpeed Cache|[Latest from WordPress.org ](https://wordpress.org/plugins/litespeed-cache/ )|
2020-02-26 10:34:45 -05:00
|ACME|[Latest from ACME official ](https://github.com/acmesh-official/get.acme.sh )|
2020-01-10 16:12:22 -05:00
|WordPress|[Latest from WordPress ](https://wordpress.org/download/ )|
2020-01-28 15:19:16 -05:00
|phpMyAdmin|[Latest from dockerhub ](https://hub.docker.com/r/bitnami/phpmyadmin/ )|
2024-01-03 15:32:23 +08:00
|Redis|[Latest from dockerhub ](https://hub.docker.com/_/redis/ )|
2019-12-18 16:24:03 -05:00
2020-01-16 11:35:52 -05:00
## Data Structure
2020-02-26 10:34:45 -05:00
Cloned project
``` bash
├── acme
├── bin
│ └── container
├── data
│ └── db
├── logs
│ ├── access.log
│ ├── error.log
│ ├── lsrestart.log
│ └── stderr.log
├── lsws
│ ├── admin-conf
│ └── conf
2020-02-26 15:44:53 -05:00
├── sites
2020-02-26 10:34:45 -05:00
│ └── localhost
├── LICENSE
├── README.md
2020-02-26 15:44:53 -05:00
└── docker-compose.yml
```
2020-03-04 16:30:52 -05:00
2020-02-26 15:44:53 -05:00
* `acme` contains all applied certificates from Lets Encrypt
2020-03-04 16:30:52 -05:00
2020-02-26 15:44:53 -05:00
* `bin` contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc
2020-03-04 16:30:52 -05:00
2020-02-26 15:44:53 -05:00
* `data` stores the MySQL database
2020-03-04 16:30:52 -05:00
2020-02-26 15:44:53 -05:00
* `logs` contains all of the web server logs and virtual host access logs
2020-03-04 16:30:52 -05:00
2020-02-26 15:44:53 -05:00
* `lsws` contains all web server configuration files
2020-03-04 16:30:52 -05:00
2020-02-26 15:44:53 -05:00
* `sites` contains the document roots (the WordPress application will install here)
2020-01-16 11:35:52 -05:00
2019-12-18 17:06:00 -05:00
## Usage
2020-01-16 11:35:52 -05:00
### Starting a Container
Start the container with the `up` or `start` methods:
2019-12-18 17:06:00 -05:00
```
2022-10-26 20:44:37 +08:00
docker compose up
2019-12-18 17:06:00 -05:00
```
2020-01-16 11:35:52 -05:00
You can run with daemon mode, like so:
2019-12-18 17:06:00 -05:00
```
2022-10-26 20:44:37 +08:00
docker compose up -d
2019-12-18 17:06:00 -05:00
```
2020-01-16 11:35:52 -05:00
The container is now built and running.
### Stopping a Container
2019-12-18 17:06:00 -05:00
```
2022-10-26 20:44:37 +08:00
docker compose stop
2019-12-18 17:06:00 -05:00
```
2020-01-16 11:35:52 -05:00
### Removing Containers
To stop and remove all containers, use the `down` command:
2019-12-18 17:06:00 -05:00
```
2022-10-26 20:44:37 +08:00
docker compose down
2019-12-18 17:06:00 -05:00
```
2020-01-16 11:35:52 -05:00
### Setting the WebAdmin Password
We strongly recommend you set your personal password right away.
2020-01-10 16:12:22 -05:00
```
2020-03-04 16:30:52 -05:00
bash bin/webadmin.sh my_password
2020-01-10 16:12:22 -05:00
```
2020-01-16 11:35:52 -05:00
### Starting a Demo Site
2020-03-04 16:30:52 -05:00
After running the following command, you should be able to access the WordPress installation with the configured domain. By default the domain is http://localhost.
2020-01-10 16:12:22 -05:00
```
bash bin/demosite.sh
```
2020-01-16 11:35:52 -05:00
### Creating a Domain and Virtual Host
2020-01-10 16:12:22 -05:00
```
2020-03-04 16:30:52 -05:00
bash bin/domain.sh [-A, --add] example.com
2020-02-26 10:34:45 -05:00
```
2020-03-12 11:16:31 -04:00
> Please ignore SSL certificate warnings from the server. They happen if you haven't applied the certificate.
2020-02-26 10:34:45 -05:00
### Deleting a Domain and Virtual Host
```
2020-03-04 16:30:52 -05:00
bash bin/domain.sh [-D, --del] example.com
2020-01-10 16:12:22 -05:00
```
2020-01-16 11:35:52 -05:00
### Creating a Database
You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate:
2020-01-10 16:12:22 -05:00
```
2020-03-04 16:30:52 -05:00
bash bin/database.sh [-D, --domain] example.com
2020-01-10 16:12:22 -05:00
```
2020-01-16 11:35:52 -05:00
Use this command to specify your own names, substituting `user_name` , `my_password` , and `database_name` with your preferred values:
2020-01-10 16:12:22 -05:00
```
2020-03-04 16:30:52 -05:00
bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME
2020-01-10 16:12:22 -05:00
```
2020-01-16 11:35:52 -05:00
### Installing a WordPress Site
To preconfigure the `wp-config` file, run the `database.sh` script for your domain, before you use the following command to install WordPress:
2020-01-10 16:12:22 -05:00
```
2020-03-04 16:30:52 -05:00
./bin/appinstall.sh [-A, --app] wordpress [-D, --domain] example.com
2020-02-26 10:34:45 -05:00
```
2024-01-03 15:32:23 +08:00
### Connecting to Redis
Go to [WordPress > LSCache Plugin > Cache > Object ](https://docs.litespeedtech.com/lscache/lscwp/cache/#object-tab ), select **Redis ** method and input `redis` to the Host field.
2020-02-26 10:34:45 -05:00
### Install ACME
2020-02-26 15:44:53 -05:00
We need to run the ACME installation command the **first time only ** .
With email notification:
2020-02-26 10:34:45 -05:00
```
2020-03-04 16:30:52 -05:00
./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR
2020-02-26 10:34:45 -05:00
```
2020-01-16 11:35:52 -05:00
### 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` :
2020-01-10 16:12:22 -05:00
```
2020-03-04 16:30:52 -05:00
./bin/acme.sh [-D, --domain] example.com
2020-01-10 16:12:22 -05:00
```
2022-10-21 11:51:07 +08:00
Other parameters:
* [`-r` , `--renew` ]: Renew a specific domain with -D or --domain parameter if posibile. To force renew, use -f parameter.
* [`-R` , `--renew-all` ]: Renew all domains if possible. To force renew, use -f parameter.
* [`-f` , `-F` , `--force` ]: Force renew for a specific domain or all domains.
* [`-v` , `--revoke` ]: Revoke a domain.
* [`-V` , `--remove` ]: Remove a domain.
2020-01-23 12:20:10 -05:00
### Update Web Server
2020-02-26 15:44:53 -05:00
To upgrade the web server to latest stable version, run the following:
2020-01-23 12:20:10 -05:00
```
2020-03-04 16:30:52 -05:00
bash bin/webadmin.sh [-U, --upgrade]
2020-01-23 12:20:10 -05:00
```
2020-02-26 10:34:45 -05:00
### Apply OWASP ModSecurity
2020-02-26 15:44:53 -05:00
Enable OWASP `mod_secure` on the web server:
2020-02-26 10:34:45 -05:00
```
2020-03-11 11:05:54 -04:00
bash bin/webadmin.sh [-M, --mod-secure] enable
2020-02-26 10:34:45 -05:00
```
2020-02-26 15:44:53 -05:00
Disable OWASP `mod_secure` on the web server:
2020-02-26 10:34:45 -05:00
```
2020-03-11 11:05:54 -04:00
bash bin/webadmin.sh [-M, --mod-secure] disable
2020-02-26 10:34:45 -05:00
```
2020-03-12 11:16:31 -04:00
>Please ignore ModSecurity warnings from the server. They happen if some of the rules are not supported by the server.
2020-01-16 11:35:52 -05:00
### Accessing the Database
2020-02-26 15:44:53 -05:00
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.
2019-12-19 12:16:37 -05:00
2020-03-11 11:05:54 -04:00
## Customization
2024-10-02 09:53:32 +08:00
If you want to customize the image by adding some packages, e.g. `lsphp83-pspell` , just extend it with a Dockerfile.
2020-03-11 11:05:54 -04:00
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/openlitespeed:latest
2024-10-02 09:53:32 +08:00
RUN apt-get update && apt-get install lsphp83-pspell -y
2020-03-11 11:05:54 -04:00
```
3. Add `build: ./custom` line under the "image: litespeedtech" of docker-composefile. So it will looks like this
```
litespeed:
image: litespeedtech/openlitespeed:${OLS_VERSION}-${PHP_VERSION}
build: ./custom
```
4. Build and start it with command:
```
2022-10-26 20:44:37 +08:00
docker compose up --build
2020-03-11 11:05:54 -04:00
```
2019-12-19 12:16:37 -05:00
## Support & Feedback
If you still have a question after using OpenLiteSpeed Docker, you have a few options.
2020-11-04 15:07:39 +08:00
* Join [the GoLiteSpeed Slack community ](https://litespeedtech.com/slack ) for real-time discussion
2019-12-19 12:16:37 -05:00
* Post to [the OpenLiteSpeed Forums ](https://forum.openlitespeed.org/ ) for community support
* Reporting any issue on [Github ols-docker-env ](https://github.com/litespeedtech/ols-docker-env/issues ) project
2020-02-07 16:02:44 -05:00
**Pull requests are always welcome **