GithubHelp home page GithubHelp logo

litespeedtech / lsws-docker-env Goto Github PK

View Code? Open in Web Editor NEW
30.0 7.0 15.0 136 KB

LiteSpeed Enterprise Docker Environment

License: MIT License

Shell 100.00%
docker-image docker litespeed wordpress docker-compose

lsws-docker-env's Introduction

LiteSpeed WordPress Docker Container

Build Status docker pulls

Install a Lightweight WordPress container with LiteSpeed stable version based on Ubuntu 22.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. 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-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 22.04
LiteSpeed Latest version
MariaDB Stable version: 10.5
PHP Latest version
LiteSpeed Cache Latest from WordPress.org
ACME Latest from ACME official
WordPress Latest from WordPress
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 web server logs and virtual host access logs

  • lsws contains all web server configuration files

  • sites contains the document roots (the WordPress 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 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 WordPress installation with the configured domain. By default the domain is http://localhost.

bash bin/demosite.sh

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

Use this command to specify your own names, substituting 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 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:

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

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

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 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

Please ignore ModSecurity warnings from the server. They happen if some of the rules are not supported by the server.

Applying 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. 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
  1. Add build: ./custom line under the "image: litespeedtech" of docker-compose file. So it will looks like this
  litespeed:
    image: litespeedtech/litespeed:${LSWS_VERSION}-${PHP_VERSION}
    build: ./custom
  1. Build and start it with command:
docker compose up --build

Support & Feedback

If you still have a question after using LiteSpeed Docker, you have a few options.

Pull requests are always welcome

lsws-docker-env's People

Contributors

code-egg avatar jodumont avatar lars-hagen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lsws-docker-env's Issues

[ERROR] litespeed is not running.

$ docker logs lsws-docker-env_litespeed_1

--2020-02-09 10:53:17--  http://license.litespeedtech.com/reseller/trial.key
Resolving license.litespeedtech.com (license.litespeedtech.com)... 34.231.236.27
Connecting to license.litespeedtech.com (license.litespeedtech.com)|34.231.236.27|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 256 [application/octet-stream]
Saving to: '/usr/local/lsws/conf/trial.key'

     0K                                                       100% 21.0M=0s

2020-02-09 10:53:18 (21.0 MB/s) - '/usr/local/lsws/conf/trial.key' saved [256/256]

[ERROR] litespeed is not running.
2020-02-09 10:53:19.397070 [NOTICE] Memory size is: 8167996KB.
2020-02-09 10:53:19.707399 [NOTICE] [OK] Updated license key has been created at /usr/local/lsws/conf/trial.key.
[OK] litespeed: pid=35.
litespeed is running with PID 35.
--2020-02-09 10:53:23--  http://license.litespeedtech.com/reseller/trial.key
Resolving license.litespeedtech.com (license.litespeedtech.com)... 34.231.236.27
Connecting to license.litespeedtech.com (license.litespeedtech.com)|34.231.236.27|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 256 [application/octet-stream]
Saving to: '/usr/local/lsws/conf/trial.key'

     0K                                                       100% 29.0M=0s

2020-02-09 10:53:23 (29.0 MB/s) - '/usr/local/lsws/conf/trial.key' saved [256/256]

[ERROR] litespeed is not running.
2020-02-09 10:53:24.988730 [NOTICE] Memory size is: 8167996KB.
2020-02-09 10:53:25.290836 [NOTICE] [OK] Updated license key has been created at /usr/local/lsws/conf/trial.key.
[OK] litespeed: pid=35.
litespeed is running with PID 35.

Cannot start LSWS via docker compose.

Maybe my test machine has too much memory? But the application of the trail key should not be unable to start because of too much memory.

Performance tuning of LSWS on docker.

Hi IT seems that the default /dev/shm size is 64MB and this folder is being used by the config by default. I guess it will reduce the cache usefulness and slow down the system.
The options is easy to fix by setting shm_size in the compose or potentialy by mounting system /dev/shm to the container /dev/shm (I haven't seen docs about that yet though).

I'm writing to start a conversation what else can be missing in the docker containers that may negatively affect the performance in production settings. I'm moving a website with ~100k monthly users to the dockerized lsws.
I'm running on bare metal Ryzen 3700X with 64 GB and nvme ssd. I'm happy to run some load tests.

The reason why I'd like to use the dockerized setup is it security and ability to migrate to larger hardware when needed.

Would you like to help ?

license error

I used 15 day trial and then I changed one of my old license ip to this server but litespeed container failes.

ws-docker-env-litespeed-1 | [FATAL] license problem, back to Apache!
lsws-docker-env-litespeed-1 | [ERROR] Failed to start litespeed!
lsws-docker-env-litespeed-1 | --2022-09-19 03:19:47-- http://license.litespeedtech.com/reseller/trial.key
lsws-docker-env-litespeed-1 | Resolving license.litespeedtech.com (license.litespeedtech.com)... 135.148.138.120
lsws-docker-env-litespeed-1 | Connecting to license.litespeedtech.com (license.litespeedtech.com)|135.148.138.120|:80... connected.
lsws-docker-env-litespeed-1 | HTTP request sent, awaiting response... 200 OK
lsws-docker-env-litespeed-1 | Length: 256 [application/octet-stream]
lsws-docker-env-litespeed-1 | Saving to: '/usr/local/lsws/conf/trial.key'
lsws-docker-env-litespeed-1 |
lsws-docker-env-litespeed-1 | 0K 100% 11.3M=0s
lsws-docker-env-litespeed-1 |
lsws-docker-env-litespeed-1 | 2022-09-19 03:19:47 (11.3 MB/s) - '/usr/local/lsws/conf/trial.key' saved [256/256]
lsws-docker-env-litespeed-1 |
lsws-docker-env-litespeed-1 | 2022-09-19 03:19:48.381457 [NOTICE] Memory size is: 8151784KB.
lsws-docker-env-litespeed-1 | 2022-09-19 03:19:49.104877 [ERROR] [LICENSE] License key operation failure: ERR LC.VT: Your trial period has terminated. Please contact sales if you need to extend your trial.
lsws-docker-env-litespeed-1 | [FATAL] license problem, back to Apache!
lsws-docker-env-litespeed-1 | [ERROR] Failed to start litespeed!
lsws-docker-env-litespeed-1 | [ERROR] Failed to find your license key under - /usr/local/lsws/ or /usr/local/lsws/conf/!
lsws-docker-env-litespeed-1 | [ERROR] Failed to find your license key under - /usr/local/lsws/ or /usr/local/lsws/conf/!
lsws-docker-env-litespeed-1 | [FATAL] license problem, back to Apache!
lsws-docker-env-litespeed-1 | [ERROR] Failed to start litespeed!

how should I reset the docker so that license change be okay.

Upgrade path for live environment

Hi,

Do you have some thoughts how to upgrade the dockerised lsws on a production environment, with minimal downtime?
I was thinking about spanning new instance on the same box different ports test it locally then switching to the it using firewall once testing is done. But I'm not sure if I won't run in to problems and since, the software needs license I will have troubles to test it on a separate server. So I would appreciate help.

I see that the docker container updates it self automatically to minor version. I hope it wont do the upgrade to a major release automatically.

lsws license breaks when docker container is being rebuild

Hi
After rebuilding a docker container I'm getting this error

Server signature does not match the license key #3.
Please request a new license key!

I think I've solved that by removing the license key and requesting it again but that will be an issue if i run this setup in production as it will slow down upgrades

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.