Update README.md for improved formatting and phpMyAdmin link correction

This commit is contained in:
Anh Duc Le
2025-10-24 11:15:16 +07:00
parent 91df8b2fa7
commit 4e94a92300
+117 -50
View File
@@ -1,32 +1,42 @@
# OpenLiteSpeed WordPress Docker Container # OpenLiteSpeed WordPress Docker Container
![ols-docker-env](https://socialify.git.ci/litespeedtech/ols-docker-env/image?custom_language=Shell&description=1&font=Inter&forks=1&issues=1&language=1&logo=https%3A%2F%2Fwww.litespeedtech.com%2Fimages%2Flogos%2Flitespeed%2Flitespeed-logo-square.svg&name=1&owner=1&pattern=Plus&pulls=1&stargazers=1&theme=Auto)
[![Build Status](https://github.com/litespeedtech/ols-docker-env/workflows/docker-build/badge.svg)](https://github.com/litespeedtech/ols-docker-env/actions/) [![Build Status](https://github.com/litespeedtech/ols-docker-env/workflows/docker-build/badge.svg)](https://github.com/litespeedtech/ols-docker-env/actions/)
[![docker pulls](https://img.shields.io/docker/pulls/litespeedtech/openlitespeed?style=flat&color=blue)](https://hub.docker.com/r/litespeedtech/openlitespeed) [![docker pulls](https://img.shields.io/docker/pulls/litespeedtech/openlitespeed?style=flat&color=blue)](https://hub.docker.com/r/litespeedtech/openlitespeed)
[<img src="https://img.shields.io/badge/slack-LiteSpeed-blue.svg?logo=slack">](litespeedtech.com/slack) [![LiteSpeed on Slack](https://img.shields.io/badge/slack-LiteSpeed-blue.svg?logo=slack)](https://litespeedtech.com/slack)
[<img src="https://img.shields.io/twitter/follow/litespeedtech.svg?label=Follow&style=social">](https://twitter.com/litespeedtech) [![Follow on Twitter](https://img.shields.io/twitter/follow/litespeedtech.svg?label=Follow&style=social)](https://twitter.com/litespeedtech)
Install a lightweight WordPress container with OpenLiteSpeed Edge or Stable version based on Ubuntu 24.04 Linux. Install a lightweight WordPress container with OpenLiteSpeed Edge or Stable version based on Ubuntu 24.04 Linux.
### Prerequisites ## Prerequisites
1. [Install Docker](https://www.docker.com/) 1. [Install Docker](https://www.docker.com/)
2. [Install Docker Compose](https://docs.docker.com/compose/) 2. [Install Docker Compose](https://docs.docker.com/compose/)
## Configuration ## Configuration
Edit the `.env` file to update the demo site domain, default MySQL user, and password. Edit the `.env` file to update the demo site domain, default MySQL user, and password.
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. 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.
## Installation ## Installation
Clone this repository or copy the files from this repository into a new folder: Clone this repository or copy the files from this repository into a new folder:
```
```bash
git clone https://github.com/litespeedtech/ols-docker-env.git git clone https://github.com/litespeedtech/ols-docker-env.git
``` ```
Open a terminal, `cd` to the folder in which `docker compose.yml` is saved, and run: Open a terminal, `cd` to the folder in which `docker compose.yml` is saved, and run:
```
```bash
docker compose up docker compose up
``` ```
Note: If you wish to run a single web server container, please see the [usage method here](https://github.com/litespeedtech/ols-dockerfiles#usage). Note: If you wish to run a single web server container, please see the [usage method here](https://github.com/litespeedtech/ols-dockerfiles#usage).
## Components ## Components
The docker image installs the following packages on your system: The docker image installs the following packages on your system:
|Component|Version| |Component|Version|
@@ -38,11 +48,13 @@ The docker image installs the following packages on your system:
|LiteSpeed Cache|[Latest from WordPress.org](https://wordpress.org/plugins/litespeed-cache/)| |LiteSpeed Cache|[Latest from WordPress.org](https://wordpress.org/plugins/litespeed-cache/)|
|ACME|[Latest from ACME official](https://github.com/acmesh-official/get.acme.sh)| |ACME|[Latest from ACME official](https://github.com/acmesh-official/get.acme.sh)|
|WordPress|[Latest from WordPress](https://wordpress.org/download/)| |WordPress|[Latest from WordPress](https://wordpress.org/download/)|
|phpMyAdmin|[Latest from dockerhub](https://hub.docker.com/r/bitnami/phpmyadmin/)| |phpMyAdmin|[Latest from dockerhub](https://hub.docker.com/r/phpmyadmin/phpmyadmin/)|
|Redis|[Latest from dockerhub](https://hub.docker.com/_/redis/)| |Redis|[Latest from dockerhub](https://hub.docker.com/_/redis/)|
## Data Structure ## Data Structure
Cloned project Cloned project
```bash ```bash
├── acme ├── acme
├── bin ├── bin
@@ -64,140 +76,195 @@ Cloned project
└── docker-compose.yml └── docker-compose.yml
``` ```
* `acme` contains all applied certificates from Lets Encrypt * `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 * `bin` contains multiple CLI scripts to allow you add or delete virtual hosts, install applications, upgrade, etc
* `data` stores the MySQL database * `data` stores the MySQL database
* `logs` contains all of the web server logs and virtual host access logs * `logs` contains all of the web server logs and virtual host access logs
* `lsws` contains all web server configuration files * `lsws` contains all web server configuration files
* `sites` contains the document roots (the WordPress application will install here) * `sites` contains the document roots (the WordPress application will install here)
## Usage ## Usage
### Starting a Container ### Starting a Container
Start the container with the `up` or `start` methods: Start the container with the `up` or `start` methods:
```
```bash
docker compose up docker compose up
``` ```
You can run with daemon mode, like so: You can run with daemon mode, like so:
```
```bash
docker compose up -d docker compose up -d
``` ```
The container is now built and running. The container is now built and running.
### Stopping a Container ### Stopping a Container
```
```bash
docker compose stop docker compose stop
``` ```
### Removing Containers ### Removing Containers
To stop and remove all containers, use the `down` command: To stop and remove all containers, use the `down` command:
```
```bash
docker compose down docker compose down
``` ```
### Setting the WebAdmin Password ### Setting the WebAdmin Password
We strongly recommend you set your personal password right away. We strongly recommend you set your personal password right away.
```
```bash
bash bin/webadmin.sh my_password bash bin/webadmin.sh my_password
``` ```
### Starting a Demo Site ### Starting a Demo Site
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.
``` 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>.
```bash
bash bin/demosite.sh bash bin/demosite.sh
``` ```
### Creating a Domain and Virtual Host ### Creating a Domain and Virtual Host
```
```bash
bash bin/domain.sh [-A, --add] example.com 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. > Please ignore SSL certificate warnings from the server. They happen if you haven't applied the certificate.
>
### Deleting a Domain and Virtual Host ### Deleting a Domain and Virtual Host
```
```bash
bash bin/domain.sh [-D, --del] example.com bash bin/domain.sh [-D, --del] example.com
``` ```
### Creating a Database ### Creating a Database
You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate: You can either automatically generate the user, password, and database names, or specify them. Use the following to auto generate:
```
```bash
bash bin/database.sh [-D, --domain] example.com bash bin/database.sh [-D, --domain] example.com
``` ```
Use this command to specify your own names, substituting `user_name`, `my_password`, and `database_name` with your preferred values: Use this command to specify your own names, substituting `user_name`, `my_password`, and `database_name` with your preferred values:
```
```bash
bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME bash bin/database.sh [-D, --domain] example.com [-U, --user] USER_NAME [-P, --password] MY_PASS [-DB, --database] DATABASE_NAME
``` ```
### Installing a WordPress Site ### 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: To preconfigure the `wp-config` file, run the `database.sh` script for your domain, before you use the following command to install WordPress:
```
./bin/appinstall.sh [-A, --app] wordpress [-D, --domain] example.com ```bash
bash bin/appinstall.sh [-A, --app] wordpress [-D, --domain] example.com
``` ```
### Connecting to Redis ### 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. 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.
### Install ACME ### Install ACME
We need to run the ACME installation command the **first time only**. We need to run the ACME installation command the **first time only**.
With email notification: With email notification:
```bash
bash bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR
``` ```
./bin/acme.sh [-I, --install] [-E, --email] EMAIL_ADDR
```
### Applying a Let's Encrypt Certificate ### 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`: 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 ```bash
bash bin/acme.sh [-D, --domain] example.com
``` ```
Other parameters: Other parameters:
* [`-r`, `--renew`]: Renew a specific domain with -D or --domain parameter if posibile. To force renew, use -f parameter. * [`-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. * [`-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. * [`-f`, `-F`, `--force`]: Force renew for a specific domain or all domains.
* [`-v`, `--revoke`]: Revoke a domain. * [`-v`, `--revoke`]: Revoke a domain.
* [`-V`, `--remove`]: Remove a domain. * [`-V`, `--remove`]: Remove a domain.
### Update Web Server ### Update Web Server
To upgrade the web server to latest stable version, run the following: To upgrade the web server to latest stable version, run the following:
```
```bash
bash bin/webadmin.sh [-U, --upgrade] bash bin/webadmin.sh [-U, --upgrade]
``` ```
### Apply OWASP ModSecurity ### Apply OWASP ModSecurity
Enable OWASP `mod_secure` on the web server: Enable OWASP `mod_secure` on the web server:
```
```bash
bash bin/webadmin.sh [-M, --mod-secure] enable bash bin/webadmin.sh [-M, --mod-secure] enable
``` ```
Disable OWASP `mod_secure` on the web server: Disable OWASP `mod_secure` on the web server:
```
```bash
bash bin/webadmin.sh [-M, --mod-secure] disable bash bin/webadmin.sh [-M, --mod-secure] disable
``` ```
>Please ignore ModSecurity warnings from the server. They happen if some of the rules are not supported by the server. >Please ignore ModSecurity warnings from the server. They happen if some of the rules are not supported by the server.
>
### Accessing the Database ### 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. 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 ## Customization
If you want to customize the image by adding some packages, e.g. `lsphp83-pspell`, just extend it with a Dockerfile. If you want to customize the image by adding some packages, e.g. `lsphp83-pspell`, just extend it with a Dockerfile.
1. We can create a `custom` folder and a `custom/Dockerfile` file under the main project. 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 2. Add the following example code to `Dockerfile` under the custom folder
```
FROM litespeedtech/openlitespeed:latest ```bash
RUN apt-get update && apt-get install lsphp83-pspell -y FROM litespeedtech/openlitespeed:latest
``` RUN apt-get update && apt-get install lsphp83-pspell -y
```
3. Add `build: ./custom` line under the "image: litespeedtech" of docker-composefile. So it will looks like this 3. Add `build: ./custom` line under the "image: litespeedtech" of docker-composefile. So it will looks like this
```
litespeed: ```bash
image: litespeedtech/openlitespeed:${OLS_VERSION}-${PHP_VERSION} litespeed:
build: ./custom image: litespeedtech/openlitespeed:${OLS_VERSION}-${PHP_VERSION}
``` build: ./custom
```
4. Build and start it with command: 4. Build and start it with command:
```
docker compose up --build ```bash
``` docker compose up --build
```
## Support & Feedback ## Support & Feedback
If you still have a question after using OpenLiteSpeed Docker, you have a few options. If you still have a question after using OpenLiteSpeed Docker, you have a few options.
* Join [the GoLiteSpeed Slack community](https://litespeedtech.com/slack) for real-time discussion * Join [the GoLiteSpeed Slack community](https://litespeedtech.com/slack) for real-time discussion
* Post to [the OpenLiteSpeed Forums](https://forum.openlitespeed.org/) for community support * 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 * Reporting any issue on [Github ols-docker-env](https://github.com/litespeedtech/ols-docker-env/issues) project
**Pull requests are always welcome** **_Pull requests are always welcome!_**