CLOVER🍀

That was when it all began.

Ubuntu Linux 20.04 LTSにLiteSpeedのオープンソース版(OpenLiteSpeed)をインストールしてみる

これは、なにをしたくて書いたもの?

ちょっと前から、LiteSpeedやOpenRestyというWebサーバーが気になっていまして。

去年の年末にも出ていましたしね。

12月Webサーバシェア調査、Nginxが大量にシェア失う | TECH+

LiteSpeedについてさらっと眺めたりしていたので、せっかくならドキュメント等の情報を書き残しておくというくらいの
目的でメモしておきます。

なお、OpenRestyはnginxをベースにLua拡張を行ったもののようです。

OpenResty® - Official Site

nginxにモジュールを追加したもの、とも言えそうです。

ちなみに、どちらのWebサーバーのサイトを見ていて思ったのですが、たぶん自分はApacheやnginxを使っていくような
気はします。なので、今回は軽く走り書き程度にしておきます。

LiteSpeed

今回は、LiteSpeedについて取り扱います。

LiteSpeed | Internet. Accelerated. - LiteSpeed Technologies

LiteSpeedにはオープンソース版(OpenLiteSpeed)とEnteriprise版(LSWS Enterprise)があり、その違いは
こちらのページにまとめられています。

OpenLiteSpeed vs. LiteSpeed Enterprise - LiteSpeed Technologies

OpenLiteSpeedの情報はこちら。

OpenLiteSpeed - Open Source - LiteSpeed Technologies

LSWS Enterpriseの情報はこちら。

LiteSpeed Web Server - Apache Alternative - LiteSpeed Technologies

OpenLiteSpeedのページを見ると、以下が特徴なようです。

  • イベントドリブンなアーキテクチャー
  • HTTP/3、HTTP/2のサポート
  • Apache mod_rewriteとの互換性
  • PHPサポート
  • 管理インターフェース
  • セキュリティ
  • キャッシュ
  • CMSアクセラレーション
  • ModSecurityとの統合
  • マルチスレッドモジュール

LSWS Enterpriseになると、これに以下のようなものが加わります。

  • Apacheの設定ファイルのサポート、.htaccessのサポート
  • SSLオフロード
  • ダウンタイムなしのソフトウェアアップデート

機能比較の完全なリストは、こちらを見ましょう。

OpenLiteSpeed vs. LiteSpeed Enterprise - LiteSpeed Technologies

Enterprise版になると、Apacheからより移行しやすくなるみたいですね。

キャッシュは、LSCache(LiteSpeed Cache)というものがLiteSpeedに組み込まれているようです。

Home - LSCache.io

プラグインもあり、主にECやCMS向けのものが多そうですね。

Plugins - LSCache.io

OpenLiteSpeed

今回は、オープンソース版のOpenLiteSpeedを見ていきます。www.litespeedtech.comとは別のドメインに、Webサイトが
設けられています。

Get OpenLiteSpeed!

ドキュメント等の情報は、こちら。

Get OpenLiteSpeed Help with the Knowledge Base • OpenLiteSpeed

インストール要件を見ると、必要なスペックは少なくても大丈夫そうですが、OSはLinux、FreeBSD、macOSが
対応範囲となるようです。

Minimum System Requirements • OpenLiteSpeed

環境

今回の環境は、Ubuntu Linux 20.04 LTSです。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal


$ uname -srvmpio
Linux 5.4.0-99-generic #112-Ubuntu SMP Thu Feb 3 13:50:55 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

OpenLiteSpeedをインストールする

OpenLiteSpeedのインストール方法は、OpenLiteSpeedが提供するリポジトリからのパッケージインストールと
コンパイル済みのtar.gzファイルからインストールする方法があります。

Install OpenLiteSpeed from LiteSpeed Repositories • OpenLiteSpeed

How to Install OpenLiteSpeed from Binary • OpenLiteSpeed

今回は、パッケージインストールを選択します。

Install OLS from LiteSpeed Repositories / Debian and Ubuntu Installation

リポジトリの追加。

$ sudo wget -O - http://rpms.litespeedtech.com/debian/enable_lst_debian_repo.sh | sudo bash

OpenLiteSpeedのインストール。

$ sudo apt install openlitespeed

ちなみに、この時にPHPをインストールしようとしますね。

以下の追加パッケージがインストールされます:
  aspell aspell-en dictionaries-common emacsen-common enchant hunspell-en-us libaspell15 libc-client2007e libenchant1c2a libhunspell-1.7-0 libjpeg-turbo8 libjpeg8 libwebp6
  libxpm4 libzip5 lsphp73 lsphp73-common lsphp73-imap lsphp73-json lsphp73-mysql lsphp73-opcache mlock php-common php-readline php7.4-common php7.4-readline rcs
提案パッケージ:
  aspell-doc spellutils wordlist hunspell openoffice.org-hunspell | openoffice.org-core uw-mailutils libenchant-voikko php-pear php-user-cache
以下のパッケージが新たにインストールされます:
  aspell aspell-en dictionaries-common emacsen-common enchant hunspell-en-us libaspell15 libc-client2007e libenchant1c2a libhunspell-1.7-0 libjpeg-turbo8 libjpeg8 libwebp6
  libxpm4 libzip5 lsphp73 lsphp73-common lsphp73-imap lsphp73-json lsphp73-mysql lsphp73-opcache mlock openlitespeed php-common php-readline php7.4-common php7.4-readline
  rcs

今回は、そのままインストールすることにします。

PHP 7.3、PHP 7.4がインストールされましたが、PHP 8.0も使えそうですね。

$ apt search lsphp80
ソート中... 完了
全文検索... 完了
lsphp80/focal 8.0.14-1+focal amd64
  server-side, HTML-embedded scripting language (LSAPI binary)

lsphp80-apcu/focal 5.1.20-1+focal amd64
  APC User Cache for PHP

lsphp80-common/focal,focal 8.0.14-1+focal all
  Common files for packages built from the PHP source

lsphp80-curl/focal 8.0.14-1+focal amd64
  CURL module for PHP

lsphp80-dbg/focal 8.0.14-1+focal amd64
  Debug symbols for LSPHP70

lsphp80-dev/focal 8.0.14-1+focal amd64
  Files for PHP70 module development

〜省略〜

なお、インストールした時点でsystemd制御下で起動しています。

$ sudo systemctl status lsws
● lshttpd.service - OpenLiteSpeed HTTP Server
     Loaded: loaded (/etc/systemd/system/lshttpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-02-16 01:32:11 JST; 2min 40s ago
    Process: 4969 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=0/SUCCESS)
   Main PID: 5011 (litespeed)
     CGroup: /system.slice/lshttpd.service
             ├─5011 openlitespeed (lshttpd - main)
             ├─5022 openlitespeed (lscgid)
             ├─5051 openlitespeed (lshttpd - #01)
             └─5052 openlitespeed (lshttpd - #02)

 2月 16 01:32:09 ubuntu2004.localdomain systemd[1]: Starting OpenLiteSpeed HTTP Server...
 2月 16 01:32:09 ubuntu2004.localdomain lswsctrl[4969]: [OK] litespeed: pid=5011.
 2月 16 01:32:11 ubuntu2004.localdomain systemd[1]: Started OpenLiteSpeed HTTP Server.

起動、停止のコントロールは、systemctlを使うことになりますね。

Control OpenLiteSpeed from the Command Line • OpenLiteSpeed

停止。

$ sudo systemctl stop lsws

起動。

$ sudo systemctl start lsws

なお、systemctl statusの結果を見るとわかるのですが。
lswsで操作しますが実際には/etc/systemd/system/lshttpd.serviceが実体ですね。

OpenLiteSpeedは8088ポートでリッスンしているようなので、http://[OpenLiteSpeedが動作しているサーバー]:8088に
アクセスしてみると、こんなページが現れます。

f:id:Kazuhira:20220216013938p:plain

デモページや

f:id:Kazuhira:20220216014026p:plain

ドキュメントなどへのリンクがあって、まあ親切です。

f:id:Kazuhira:20220216014315p:plain

PHPのデモページでは、PHPが動作していることが確認できます。PHPが7.3と古いですが。

f:id:Kazuhira:20220216014351p:plain

また、7080ポートでもリッスンしていて、こちらにアクセスすると管理用のWeb UIを見ることができます。

f:id:Kazuhira:20220216014842p:plain

ドキュメントはこちら。

OpenLiteSpeed WebAdmin Console • OpenLiteSpeed

さて、設定ファイルなどの置き場所が気になるところですが、これは/usr/local/lsws配下にまとまっているようです。

$ ll /usr/local/lsws
合計 140
drwxr-xr-x 23 root   root     4096  2月 16 01:31 ./
drwxr-xr-x 11 root   root     4096  2月 16 01:31 ../
drwxr-xr-x  6 root   root     4096  2月 16 01:31 Example/
-rw-r--r--  1 root   root    35147 10月  6 02:17 GPL.txt
-rw-r--r--  1 root   root        4 10月  6 02:17 PLAT
-rw-r--r--  1 root   root        7 10月  6 02:17 VERSION
drwxr-xr-x  4 root   root     4096  2月 16 01:31 add-ons/
drwxr-xr-x  9 root   root     4096  2月 16 01:31 admin/
-rw-r--r--  1 root   root       41 10月  6 02:17 adminpasswd
drwxr-xr-x  2 nobody nogroup  4096  2月 16 01:33 autoupdate/
drwxr-xr-x  2 root   root     4096 10月  6 02:17 backup/
drwxr-xr-x  2 root   root     4096  2月 16 01:31 bin/
drwxr-xr-x  2 nobody nogroup  4096  2月 16 01:32 cachedata/
drwxr-xr-x  2 nobody nogroup  4096  2月 16 01:37 cgid/
drwxr-x---  5 lsadm  nogroup  4096  2月 16 01:32 conf/
drwxr-xr-x  6 root   root     4096  2月 16 01:31 docs/
drwxr-xr-x  2 root   root     4096  2月 16 01:31 fcgi-bin/
drwxr-xr-x  2 root   root     4096 10月  6 02:17 gdata/
drwxr-xr-x  2 root   root     4096 10月  6 02:17 lib/
drwxr-x---  2 root   nogroup  4096  2月 16 01:37 logs/
drwxr-xr-x  7 root   root     4096  2月 16 01:31 lsphp73/
drwxr-xr-x  2 root   root     4096  2月 16 01:31 lsrecaptcha/
drwxr-xr-x  2 root   root     4096  2月 16 01:32 modules/
drwxr-xr-x  2 root   root     4096 10月  6 02:17 php/
drwxr-xr-x  2 lsadm  lsadm    4096 10月  6 02:17 phpbuild/
drwxr-xr-x  4 root   root     4096  2月 16 01:31 share/
drwxr-xr-x  3 nobody nogroup  4096  2月 16 01:32 tmp/

OpenLiteSpeed Configuration Examples • OpenLiteSpeed

設定ファイルは、このあたりにあります。

$ sudo find /usr/local/lsws/conf -type f
/usr/local/lsws/conf/httpd_config.conf.txt
/usr/local/lsws/conf/mime.properties0
/usr/local/lsws/conf/httpd_config.conf0,v
/usr/local/lsws/conf/vhosts/Example/htpasswd
/usr/local/lsws/conf/vhosts/Example/htgroup
/usr/local/lsws/conf/vhosts/Example/vhconf.conf0,v
/usr/local/lsws/conf/vhosts/Example/vhconf.conf
/usr/local/lsws/conf/vhosts/Example/vhconf.conf0
/usr/local/lsws/conf/vhosts/Example/vhconf.conf.txt
/usr/local/lsws/conf/httpd_config.conf0
/usr/local/lsws/conf/httpd_config.conf
/usr/local/lsws/conf/mime.properties
/usr/local/lsws/conf/templates/ccl.conf0
/usr/local/lsws/conf/templates/rails.conf
/usr/local/lsws/conf/templates/rails.conf.txt
/usr/local/lsws/conf/templates/ccl.conf
/usr/local/lsws/conf/templates/ccl.conf.txt
/usr/local/lsws/conf/templates/ccl.conf0,v
/usr/local/lsws/conf/templates/rails.conf0
/usr/local/lsws/conf/templates/rails.conf0,v
/usr/local/lsws/conf/mime.properties0,v

そういえば、インストールしたバージョンがわかっていませんでした。こちらで確認できそうです。

$ /usr/local/lsws/bin/lshttpd --version
LiteSpeed/1.7.14 Open
        module versions:
        modgzip 1.1
        cache 1.62
        modinspector 1.1
        uploadprogress 1.1
        mod_security 1.4
 (built: Mon Oct  4 19:06:44 UTC 2021) 
        module versions:
        modgzip 1.1
        cache 1.62
        modinspector 1.1
        uploadprogress 1.1
        mod_security 1.4

メインの設定ファイルはこちらなのですが

/usr/local/lsws/conf/httpd_config.conf

デフォルトでVirtualHostが構成されていて、こちらも合わせて見ることになるでしょう。

/usr/local/lsws/conf/vhosts/Example/vhconf.conf

DocumentRootなどは、/usr/local/lsws/conf/httpd_config.confを見るとわかりそうです。

virtualHost Example{
    vhRoot                   Example/
    allowSymbolLink          1 
    enableScript             1 
    restrained               1 
    maxKeepAliveReq
    smartKeepAlive                  
    setUIDMode               0 
    chrootMode               0 
    configFile               conf/vhosts/Example/vhconf.conf
}

8088ポートにアクセスしていた時に表示していたページは、こちらということになりますね。

/usr/local/lsws/Example/html/index.html

ログはこちら。OpenLiteSpeed全体のログとVirtualHostのログは、それぞれ別になっているようですね。

$ sudo ls -l /usr/local/lsws/logs/
合計 28
-rw-r----- 1 nobody nogroup     0  2月 16 01:37 access.log
-rw-r--r-- 1 nobody nogroup 20808  2月 16 01:47 error.log
-rw-r--r-- 1 root   root      268  2月 16 01:37 lsrestart.log
-rw-r--r-- 1 nobody nogroup     0  2月 16 01:32 stderr.log


$ ll /usr/local/lsws/Example/logs/
合計 16
drwxr-xr-x 2 root   root    4096  2月 16 01:32 ./
drwxr-xr-x 6 root   root    4096  2月 16 01:31 ../
-rw-r--r-- 1 nobody nogroup 4981  2月 16 02:01 access.log

一部、確認。

$ head -n 5 /usr/local/lsws/Example/logs/access.log
127.0.0.1 - - [16/Feb/2022:01:35:29 +0900] "GET / HTTP/1.1" 200 13733 "-" "curl/7.68.0"
192.168.33.1 - - [16/Feb/2022:01:37:42 +0900] "GET /css/custom.css HTTP/1.1" 200 2359 "http://192.168.33.10:8088/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"
192.168.33.1 - - [16/Feb/2022:01:37:42 +0900] "GET /img/powered_by_ols-new.png HTTP/1.1" 200 1089 "http://192.168.33.10:8088/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"
192.168.33.1 - - [16/Feb/2022:01:37:42 +0900] "GET /img/php-icon.png HTTP/1.1" 200 2075 "http://192.168.33.10:8088/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"
192.168.33.1 - - [16/Feb/2022:01:37:42 +0900] "GET /img/404-icon.png HTTP/1.1" 200 3215 "http://192.168.33.10:8088/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36"

非常に簡単ですが、今回はこれくらいで満足したので、ここまでにします。