Open LiteSpeed でWebサーバーを構築する（ Oracle Linux ）

# はじめに

OCI（ Oracle Cloud ）上のマシンに LiteSpeed Web Server（通称LSWS）のオープンソース版である、Open LiteSpeed のインストール方法を紹介します。

完全無料の OCI AlwaysFree で気軽に試せます。

# 環境

* Oracle Linux 8, 9

Rocky Linux, Alma Linux, CentOS Stream の方はコチラです

https://qiita.com/dxa/items/b7b5a9e1f8aa12b545e7

# LiteSpeed をインストールする

```bash:EPELリポジトリを探す
[root@vm opc]# dnf repolist all | grep -i epel
ol8_developer_EPEL               Oracle Linux 8 EPEL Packages for Devel disabled
```
```bash:EPELリポジトリを有効にする
[root@vm opc]# dnf config-manager --enable ol8_developer_EPEL
```

```bash:OpenLitespeedのリポジトリ追加
[root@vm opc]# rpm --import https://rpms.litespeedtech.com/centos/RPM-GPG-KEY-litespeed
```

https://rpms.litespeedtech.com/centos/ の中から最新のモノを探して URL をコピー

```bash:rpmを落としてrpmコマンドで入れる
[root@vm opc]# curl -OL https://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el8.noarch.rpm
[root@vm opc]# rpm -ivh --nodeps litespeed-repo-1.2-1.el8.noarch.rpm
```

<details><summary>注意：CentOS用なのでdnfコマンドではインストールできません。（クリックで詳細を開く）</summary><div>

```bash:CentOS用なのでdnfコマンドではインストールできません
[root@vm opc]# dnf -y install https://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el8.noarch.rpm
Error: 
 Problem: conflicting requests
  - nothing provides centos-release >= 5 needed by litespeed-repo-1.2-1.el8.noarch
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
```

▲ CentOSに導入する際はこのコマンドで良いです。

</div></details>


```bash:アップデートする
[root@vm opc]# dnf update
```

```bash:インストールする
[root@vm opc]# dnf install openlitespeed lsphp80 lsphp80-gd  lsphp80-imap lsphp80-mbstring lsphp80-mysqlnd lsphp80-opcache lsphp80-pdo lsphp80-process lsphp80-xml lsphp80-zip
```



# 初期設定
```bash:パスワードの設定
[root@vm opc]# /usr/local/lsws/admin/misc/admpass.sh

Please specify the user name of administrator.
This is the user name required to login the administration Web interface.

User name [admin]: USERNAME 

Password: PASSWORD
Retype password: PASSWORD
Administrator's username/password is updated successfully!
```

USERNAME と PASSWORD は各自置き換えてください。

```bash:設定ファイルをバックアップする
[root@vm opc]# cp /usr/local/lsws/conf/httpd_config.conf /usr/local/lsws/conf/httpd_config.conf.org
```

```bash:PHP8を使えるようにする
[root@vm opc]# vi /usr/local/lsws/conf/httpd_config.conf
```

```diff_vim_l:/usr/local/lsws/conf/httpd_config.conf
extProcessor lsphp{
    type                            lsapi
    address                         uds://tmp/lshttpd/lsphp.sock
    maxConns                        10
    env                             PHP_LSAPI_CHILDREN=10
    env                             LSAPI_AVOID_FORK=200M
    initTimeout                     60
    retryTimeout                    0
    persistConn                     1
    pcKeepAliveTimeout
    respBuffer                      0
    autoStart                       1
    path                            $SERVER_ROOT/lsphp73/bin/lsphp
    backlog                         100
    instances                       1
    priority                        0
    memSoftLimit                    2047M
    memHardLimit                    2047M
    procSoftLimit                   1400
    procHardLimit                   1500
}

+ extProcessor lsphp80{
+     type                            lsapi
+     address                         uds://tmp/lshttpd/lsphp.sock
+     maxConns                        10
+     env                             PHP_LSAPI_CHILDREN=10
+     env                             LSAPI_AVOID_FORK=200M
+     initTimeout                     60
+     retryTimeout                    0
+     persistConn                     1
+     pcKeepAliveTimeout
+     respBuffer                      0
+     autoStart                       1
+     path                            $SERVER_ROOT/lsphp80/bin/lsphp
+     backlog                         100
+     instances                       1
+     priority                        0
+     memSoftLimit                    2047M
+     memHardLimit                    2047M
+     procSoftLimit                   1400
+     procHardLimit                   1500
+ }
```

初期設定の行を複製して、PHP8用の外部アプリを定義します。

> extProcessor <font color="blue">lsphp</font> ▶ extProcessor <font color="Red">lsphp80</font>
> path $SERVER_ROOT/<font color="blue">lsphp73</font>/bin/lsphp ▶ path $SERVER_ROOT/<font color="Red">lsphp80</font>/bin/lsphp

変更点は上記2か所です。


ポートを80番に変更します

```diff_vim_l:/usr/local/lsws/conf/httpd_config.conf
listener Default{
-    address                  *:8088
+    address                  *:80
    secure                   0
    map                      Example *
}
```

```bash:自動起動を設定して、今すぐ起動する
[root@vm opc]# systemctl enable --now lsws
```

# Firewall に穴を開ける

```bash:管理画面用
[root@vm opc]# firewall-cmd --zone=public --permanent --add-port=7080/tcp
```
```bash:HTTPのポート
[root@vm opc]# firewall-cmd --zone=public --permanent --add-port=80/tcp
```
```bash:HTTPSのポート
[root@vm opc]# firewall-cmd --zone=public --permanent --add-port=443/tcp
```
```bash:再読み込み
[root@vm opc]# firewall-cmd --reload
```

# OCIの仮想ネットワークに穴を開ける

<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vSodEy2jzU_JfMuVPcfO-e1ar9EEkX7iuZd2kEVT58M_3RBRcou4LVw_UJHIpfy7Et1pAPuNKm1bM3s/embed?start=false&loop=false&delayms=3000" frameborder="0" width="800" height="600" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>

# PHP 8 をデフォルトにする

<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vSJehuJl8OCrqwqam1T576QchG-Emi7eV02GA11p7JHUPbE2yDRr2gs3C7JfQ92Kyfa_trXCTU7tQb7/embed?start=false&loop=false&delayms=3000" frameborder="0" width="500" height="570" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>

完了です。同じ手順で別のバージョン（PHP 7.4 など）をデフォルトにすることもできます。
またバーチャルホストごとに PHP バージョンを切り替える事もできます。

# メモ

```bash:インストールディレクトリ
/usr/local/lsws/
```

```bash:設定ファイル
/usr/local/lsws/conf/httpd_config.conf
```

```bash:初期設定のドキュメントルート
/usr/local/lsws/Example/html/
```

# 関連リンク

[公式マニュアル（英語）](https://openlitespeed.org/kb/)

# Next

https://qiita.com/dxa/items/bf6e9bc05b353fb50226

https://qiita.com/dxa/items/d973be04b0032813b416