This tutorial is going to show you how to install LOMP stack (OpenLiteSpeed, MariaDB, and PHP8.0) on Ubuntu 20.04/18.04. A software stack is a set of software tools bundled together. LOMP stands for Linux, OpenLiteSpeed, MariaDB/MySQL and PHP, which can power dynamic websites and web applications. Linux is the operating system; OpenLiteSpeed is the web server; MariaDB/MySQL is the database server and PHP is the server-side scripting language responsible for generating dynamic web pages.
Why is OpenLiteSpeed Better Than Apache/Nginx
Previously we discussed how to install LAMP stack (Apache) and LEMP stack (Nginx). Why are we switching to OpenLiteSpeed? Because it’s much more performant.
- 5X More requests per second.
- LSAPI allows better PHP performance than mod_PHP and PHP-FPM.
- Extremely low CPU and memory footprint.
- HTTP/3. As OpenLiteSpeed focuses on speed, it adopts new technology faster than Nginx does.
- Built-in PageSpeed and ModSecurity module. If you use Nginx, you have to re-compile these two modules every time you upgrade Nginx.
- Buil-in page cache integration with popular web applications like WordPress, Magento, Joomla, Prestashop, Opencart, Drupal, xenForo, Laravel, Shopware, and MediaWiki.
- Anti-DDoS connection and bandwidth throttling.
- Built-in Brotli compression for static files.
- Web-based admin panel.
Requirements
To follow this tutorial, you need an Ubuntu 20.04/18.04 OS running on a remote server.
If you are looking for a high-performance VPS (Virtual Private Server), then you can go to ScalaHosting website to create an account. Choose the self-managed Linux VPS plan. Use coupon code linuxbabe2021
on payment page to save $100 if you choose to pay 12 months upfront. You can follow the tutorial linked below to properly set up your Linux VPS server on ScalaHosting.
And if you need to set up LOMP stack with a domain name, I recommend buying domain names from NameCheap because the price is low and they give whois privacy protection free for life.
Step 1: Update Software Packages
Before we install the LOMP stack, it’s a good practice to update repository and software packages by running the following command on your Ubuntu 20.04/18.04 OS.
sudo apt update;sudo apt upgrade
Step 2: Install OpenLiteSpeed Web Server
OpenLiteSpeed isn’t included in the default Ubuntu software repository, so we will have to install it from the upstream official repository. Run the following command to add OpenLiteSpeed repository to your Ubuntu system.
wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | sudo bash
The above command will also import the OpenLiteSpeed GPG key to Ubuntu system so that APT can verify package integrity during installation. Then install OpenLiteSpeed with:
sudo apt install -y openlitespeed
After it’s installed, we can enable OpenLiteSpeed to auto-start at boot time by running the following command.
sudo systemctl enable lshttpd
Then start OpenLiteSpeed with this command:
sudo systemctl start lshttpd
Now check its status.
sudo systemctl status lshttpd
Sample output:
● lshttpd.service - OpenLiteSpeed HTTP Server Loaded: loaded (/etc/systemd/system/lshttpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-05-31 04:59:06 EDT; 14min ago Main PID: 7213 (litespeed) CGroup: /system.slice/lshttpd.service ├─7213 openlitespeed (lshttpd - main) ├─7224 openlitespeed (lscgid) ├─7253 openlitespeed (lshttpd - #01) └─7254 openlitespeed (lshttpd - #02) May 31 04:59:04 focal systemd[1]: Starting OpenLiteSpeed HTTP Server... May 31 04:59:04 focal lswsctrl[7171]: [OK] litespeed: pid=7213. May 31 04:59:06 focal systemd[1]: Started OpenLiteSpeed HTTP Server.
“Enabled” indicates that auto-start at boot time is enabled and we can see that OpenLiteSpeed is running. If the above command doesn’t immediately quit after running. You need to press “q” to make it quit.
Check OpenLiteSpeed version.
/usr/local/lsws/bin/openlitespeed -v
Output:
LiteSpeed/1.6.21 Open module versions: modgzip 1.1 cache 1.62 modinspector 1.1 uploadprogress 1.1 mod_security 1.4 (built: Tue Apr 6 13:20:57 UTC 2021) module versions: modgzip 1.1 cache 1.62 modinspector 1.1 uploadprogress 1.1 mod_security 1.4
By default, OpenLiteSpeed listens on port 8088, we need to make it listening on port 80. Edit the main configuration file with a command-line text editor like Nano.
sudo nano /usr/local/lsws/conf/httpd_config.conf
Find the following lines
listener Default{ address *:8088 secure 0 map Example * }
Change 8088
to 80
.
listener Default{ address *:80 secure 0 map Example * }
Save and close the file. Then restart OpenLiteSpeed.
sudo systemctl restart lshttpd
Note: If you have other web servers like Nginx running on the server, you need to stop it, then restart OpenLiteSpeed.
sudo systemctl stop nginx
Now type in the public IP address of your Ubuntu 20.04/18.04 server in the browser address bar. You should see the “Congratulations” Web page, which means OpenLiteSpeed Web server is running properly.
If the connection is refused or failed to complete, there might be a firewall preventing incoming requests to TCP port 80. If you are using iptables firewall, then you need to run the following command to open TCP port 80.
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
If you are using UFW firewall, then run this command to open TCP port 80.
sudo ufw allow http
By default, OpenLiteSpeed web server runs as nobody
user and nogroup
group. The default document root directory is /usr/local/lsws/Example/html
.
Step 3: Install MariaDB Database Server
MariaDB is a drop-in replacement for MySQL. It is developed by former members of MySQL team who are concerned that Oracle might turn MySQL into a closed-source product. Enter the following command to install MariaDB on Ubuntu 20.04/18.04.
sudo apt install mariadb-server mariadb-client
After it’s installed, MariaDB server should be automatically stared. Use systemctl to check its status.
systemctl status mariadb
Output:
● mariadb.service - MariaDB 10.3.29 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 9161 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 9451) Memory: 64.7M CGroup: /system.slice/mariadb.service └─9161 /usr/sbin/mysqld
If it’s not running, start it with this command:
sudo systemctl start mariadb
To enable MariaDB to automatically start at boot time, run
sudo systemctl enable mariadb
Now run the post installation security script.
sudo mysql_secure_installation
When it asks you to enter MariaDB root password, press Enter key as the root password isn’t set yet. Then enter y to set the root password for MariaDB server.
Next, you can press Enter to answer all remaining questions, which will remove anonymous user, disable remote root login and remove test database. This step is a basic requirement for MariaDB database security. (Notice that Y is capitalized, which means it is the default answer. )
By default, the MaraiDB package on Ubuntu uses unix_socket
to authenticate user login, which basically means you can use username and password of the OS to log into MariaDB console. So you can run the following command to login without providing MariaDB root password.
sudo mariadb -u root
To exit, run
exit;
Check MariaDB server version information.
mariadb --version
As you can see, we have installed MariaDB 10.3.29.
mariadb Ver 15.1 Distrib 10.3.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Step 4: Install PHP8.0
When we install OpenLiteSpeed, it automatically installs the lsphp73
package, which is a PHP 7.3 build made for OpenLiteSpeed. We can install PHP8.0 with the following command.
sudo apt install lsphp80 lsphp80-mysql lsphp80-common lsphp80-opcache lsphp80-curl
Check the version number.
/usr/local/lsws/lsphp80/bin/php8.0 -v
Sample output:
PHP 8.0.6 (cli) (built: May 7 2021 15:17:48) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.6, Copyright (c) Zend Technologies with Zend OPcache v8.0.6, Copyright (c), by Zend Technologies
Although we installed just 5 PHP8.0 packages, the OpenLiteSpeed PHP build ships with many PHP modules. You can check enabled PHP modules with the following command.
/usr/local/lsws/lsphp80/bin/php8.0 --modules
Step 5: Test PHP
There’s a phpinfo.php
file under /usr/local/lsws/Example/html
directory, so you can enter server-ip-address/phpinfo.php
in the browser address bar to test PHP with OpenLiteSpeed Web server, Replace sever-ip-address
with your actual IP.
You should see your server’s PHP information. This means PHP scripts can run properly with OpenLiteSpeed web server. They are connected via the LiteSpeed API (LSAPI).
Congrats! You have successfully installed OpenLiteSpeed, MariaDB and PHP on Ubuntu 20.04/18.04. You can see that OpenLiteSpeed uses PHP7.3 per default. To change the PHP version, you need to use the admin panel.
Step 5: Configure the Admin Panel
Set a username and password for the admin panel.
sudo /usr/local/lsws/admin/misc/admpass.sh
Then you can access the admin panel at https://server-ip-address:7080/login.php
. By default it’s using a self-signed TLS certificate, so you need to add a security exception in your web browser.
- In Firefox, click
Advanced
and click “Accept the risk and Continue
“ - In Google Chrome, click Proceed to
your-server-ip(unsafe)
.
Switching to PHP8.0 in the Admin Panel
To make the default virtual host use PHP8.0, first we need to enable PHP8.0 at the server leve. Go to Server Configuration
-> External App
, and click the +
button to add a new external app.
Select LiteSpeed SAPI App
as the type and click the Next
button.
Enter the following information:
- Name:
lsphp8.0
- Address:
uds://tmp/lshttpd/lsphp80.sock
- Max Connections:
10
- Environment: PHP_LSAPI_CHILDREN=10
LSAPI_AVOID_FORK=200M - Initial Request Timeout (secs):
60
- Retry Timeout (secs):
0
- Persistent Connection:
Yes
- Response Buffering:
No
- Command:
lsphp80/bin/lsphp
- Backlog:
100
- Instances:
1
- Priority:
0
- Memory Soft Limit (bytes): 2047M
- Memory Hard Limit (bytes): 2047M
- Process Soft Limit: 1400
- Process Hard Limit: 1500
Save the settings. Then go to Virtual Hosts
-> Example
-> Script Handler
tab and click the +
button to add a new script handler.
Enter the following information:
- Suffixes:
php
- Handler Type:
LiteSpeed SAPI
- Handler Name:
lsphp8.0
Save the settings. Then click the Graceful Restart button at the upper-left corner for the changes to take effect. Now enter server-ip-address/phpinfo.php
in the browser address bar to test PHP with OpenLiteSpeed Web server. You should see that the default virtual host is now using PHP8.0.
Notes
After using OpenLiteSpeed for a while, I tried to switch back to Nginx just for testing. It’s strange that some of the PHP modules are no longer enabled. It’s not clear if it’s because of OpenLiteSpeed. I had to edit /etc/php/7.4/cli/php.ini
and /etc/php/7.4/fpm/php.ini
to enable the missing modules, including mysqlnd
, mysqli
, mbstring
, gd
, json
, etc.
On a normal installation of LEMP stack, I don’t have to edit the php.ini
file to enable PHP modules, but in this situation, I had to edit this file. An easy way to enabel all necessary modules is to run the following two commands:
cat /etc/php/7.4/mods-available/* | sudo tee -a /etc/php/7.4/fpm/php.ini cat /etc/php/7.4/mods-available/* | sudo tee -a /etc/php/7.4/cli/php.ini
source: https://www.linuxbabe.com/ubuntu/install-openlitespeed-mariadb-php-ubuntu