Ubuntu 22.04にLinux、OpenLiteSpeed、MariaDB、PHP(LOMPスタック)をインストールする方法
著者は、Write for Donationsプログラムの一環として、寄付を受け取るためにFree and Open Source Fundを選択しました。
はじめに
LOMPスタックは、Linux、OpenLiteSpeed、MariaDB、およびPHPの頭文字をとったものです。OpenLiteSpeedは、LiteSpeedウェブサーバーのオープンソースオプションです。LiteSpeedサーバーは、特にPHPなどの言語との統合が良好なため、高速なパフォーマンスで知られています。LiteSpeed PHP(LSPHP)インタプリタは、プロプライエタリなLS-APIを介してダイナミックなPHPページをより高速に提供します。APIはHTTPサーバーと統合されているため、サーバーの応答時間を短縮します。OpenLiteSpeedは、WordPress、Joomla、およびその他のPHPベースのアプリケーションにおいて、ダイナミックなコンテンツを提供するのに選択される傾向にあります。
このチュートリアルでは、Ubuntu 22.04上で動作するLOMPサーバーのセットアップを行います。執筆時点では、現行のバージョンはPHP 8.1、MariaDB 10.7、およびOpenLiteSpeed 1.7です。
前提条件 (Zentei jōken)
このガイドを始める前に、以下のものが必要です。
- One Ubuntu 22.04 server with a sudo non-root user, a firewall, and at least 1GB of RAM, which you can set up by following the Ubuntu 22.04 initial server setup guide
- A fully-qualified domain name (required for SSL configuration and recommended for public websites). You can get a domain name on Namecheap, Freenom, or the domain registrar of your choice. Follow the DNS Quickstart to point the domain name to your server.
- SSL certificates and keys for your domain. Follow How To Use Certbot Standalone Mode to Retrieve Let’s Encrypt SSL Certificates on Ubuntu 22.04 to obtain the certificate-key pair for your domain. In Step 2, open port 80 alongside port 443.
ステップ1:OpenLiteSpeedのインストール
このステップでは、必要なパッケージリポジトリをサーバーにインポートした後、OpenLiteSpeedウェブサーバーをインストールします。SSHセッションでsudoを初めて使用する場合、非ルートユーザーのパスワードを入力する必要があるかもしれません。
最初にパッケージマネージャのキャッシュを更新します。
- sudo apt update
その後、次のコマンドを実行して必要なパッケージをアップグレードしてください。
- sudo apt upgrade -y
Note
「ApacheやNginx」とは異なり、OpenLiteSpeedは自身のリポジトリにコードをホストしています。次のコマンドを使用して、このリポジトリをaptパッケージマネージャのソースリストに追加してください。
- sudo wget -O – https://repo.litespeed.sh | sudo bash
以下は日本語における候補の一例です:
wgetはOpenLiteSpeedのサーバー上のリモートリポジトリからシェルスクリプトを取得し、-Oフラグはファイルの内容を端末に表示します。| パイプは新しいbashシェルに内容を渡し、sudo bashコマンドによって起動されます。このbashターミナルは、リポジトリから取得した.shファイル(bashスクリプト)の内容で記述されたコマンドを実行し、ローカルのAPTリポジトリリストにリポジトリをインストールします。
このような出力が表示されます。
Redirecting output to ‘wget-log’. –2022-09-08 08:27:42– http://rpms.litespeedtech.com/debian/lst_debian_repo.gpg Resolving rpms.litespeedtech.com (rpms.litespeedtech.com)… 52.55.120.73 Connecting to rpms.litespeedtech.com (rpms.litespeedtech.com)|52.55.120.73|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 1198 (1.2K) [application/octet-stream] Saving to: ‘/etc/apt/trusted.gpg.d/lst_debian_repo.gpg’ /etc/apt/trusted.gpg.d/l 100%[==================================>] 1.17K –.-KB/s in 0s 2022-09-08 08:27:42 (139 MB/s) – ‘/etc/apt/trusted.gpg.d/lst_debian_repo.gpg’ saved [1198/1198] –2022-09-08 08:27:42– http://rpms.litespeedtech.com/debian/lst_repo.gpg Resolving rpms.litespeedtech.com (rpms.litespeedtech.com)… 52.55.120.73 Connecting to rpms.litespeedtech.com (rpms.litespeedtech.com)|52.55.120.73|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 2336 (2.3K) [application/octet-stream] Saving to: ‘/etc/apt/trusted.gpg.d/lst_repo.gpg’ /etc/apt/trusted.gpg.d/l 100%[==================================>] 2.28K –.-KB/s in 0s 2022-09-08 08:27:42 (226 MB/s) – ‘/etc/apt/trusted.gpg.d/lst_repo.gpg’ saved [2336/2336] LiteSpeed repository has been setup!
aptパッケージマネージャが新たに追加されたリポジトリをスキャンするため、リポジトリのリストを更新してください。
- sudo apt update
次に、OpenLiteSpeedパッケージをインストールしてください。
- sudo apt install openlitespeed
もし求められたなら、パスワードを入力し、その後にYでインストールを確認してください。
インストールが完了したら、serviceコマンドを使用してOpenLiteSpeedが正しくインストールおよび動作しているかを確認してください。
- sudo systemctl status lsws
systemctl statusコマンドは、キーワードによって識別されるサービスの状態を取得します。OpenLiteSpeedウェブサーバーサービスのキーワードはlswsです。systemctlコマンドは、サービスの自動起動の有効化または無効化、および手動でのサービスの開始または停止ができます。
以下の出力を受け取ります: (Shita no shutsuryoku o uketorimasu)
● lshttpd.service – OpenLiteSpeed HTTP Server Loaded: loaded (/etc/systemd/system/lshttpd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-03-16 08:59:09 UTC; 2min 26s ago Process: 32997 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=0/SUCCESS) Main PID: 33035 (litespeed) CGroup: /system.slice/lshttpd.service ├─33035 openlitespeed (lshttpd – main) ├─33044 openlitespeed (lscgid) └─33073 openlitespeed (lshttpd – #01)
現在、デフォルトの設定でOpenLiteSpeedウェブサーバーが稼働しています。ただし、ファイアウォールがこれらのポートへのトラフィックをブロックしているため、GUIベースの管理パネルや例のウェブサイトにアクセスできない可能性があります。
あなたのOpenLiteSpeedウェブサーバーが稼働している状態で、ファイアウォールを更新し、必要なポートを開放することによって、ユーザーがウェブサイトにアクセスできるようにすることができます。
ステップ2 ― ファイアウォールの更新
この手順では、サーバーのファイアウォールを設定します。GUIベースの管理パネルとサンプルのウェブサイトに対してTCPトラフィックを選択されたポートで許可し、HTTPとHTTPSのサイトのためにポート80と443も許可します。
OpenLiteSpeedサーバーには、GUIベースの管理パネルとサーバーと一緒に例として提供されるウェブサイトがバンドルされています。管理パネルは、リスナーや仮想ホスト、SSLの設定、ログの監視を簡単に行うための使いやすいインターフェースです。例のウェブサイトには、サンプルのCGIスクリプト、PHPスクリプト、エラーページ、パスワード保護ページが含まれています。このウェブサイトは、ウェブサーバーの機能を示すことができます。
デフォルトの設定では、GUIベースの管理パネルはポート7080で待ち受けます。一方、例のウェブサイトはポート8088で待ち受けます。これらのサイトにアクセスするためには、ufwファイアウォールを介してこれらのポートへのTCPトラフィックを許可する必要があります。
アクセスを提供するために、次のコマンドを実行してください。 (アクセスをていきょうするために、つぎのコマンドをじっこうしてください。)
- sudo ufw allow 7080,80,443,8088/tcp
それでは、ファイアウォールのルールの状態を確認してください。
- sudo ufw status
以下のような出力を行います。
Status: active To Action From — —— —- OpenSSH ALLOW Anywhere 80,443,7080,8088/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80,443,7080,8088/tcp (v6) ALLOW Anywhere (v6)
ポート8088を通じて、例のウェブサイトを閲覧することができます。
http://your_server_ip:8088
以下のスクリーンキャプチャのように表示される必要があります。
(Screen capture image not provided)
![Screencapture of the front page for the example website when viewed through port](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/44-0.png)
ウェブサーバーが提供する機能を探索するために、例のウェブサイトを見てみることができます。
GUIベースの管理パネルを見るには、ポート7080にアクセスしてください。
http://your_server_ip:7080
このチュートリアルの後半では、OpenLiteSpeedのGUI管理パネルを使用して、ウェブサーバーを設定します。
現在、UbuntuインスタンスにOpenLiteSpeedサーバーが設定されました。これにより、さまざまなバックエンド言語とフレームワークに基づいたWebアプリケーションを提供することができます。次のステップでは、LOMPスタックの他のサービスを設定します。
ステップ3 — MariaDBのインストール
Linuxで動作するOpenLiteSpeedサーバーによって、MariaDBデータベースサーバーを設定することができます。データベースサーバーは、ウェブサイトのデータを保存、取得、管理することができます。MariaDBはSQLとNoSQL機能を提供し、MyISAMやInnoDBなど複数のデータベースエンジンを組み込むことができるため、人気のあるデータベースエンジンです。
以下のコマンドを使ってMariaDBサーバーをインストールしてください。
- sudo apt install mariadb-server
確認のプロンプトが表示されたら、「Y」とタイプして確認してください。
インストールが終了した後は、次のコマンドを使用して初期サーバーセットアップを完了させてください。
- sudo mysql_secure_installation
デフォルトのインストールでは、ルートパスワードが設定されていないため、指示が表示されたときにはエンターキーを押すことができます。
インストールセットアップ後には、このような出力を受け取ります。
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we’ll need the current password for the root user. If you’ve just installed MariaDB, and you haven’t set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on…
それから、ソケット認証を有効にするように促されます。unix_socket認証に切り替えたいかどうか尋ねられたら、Yと入力してください。
Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer ‘n’. Switch to unix_socket authentication [Y/n] y Enabled successfully! Reloading privilege tables.. … Success!
次のプロンプトで、ルートパスワードを設定するかどうか聞かれたら、Yと入力し、お好みのルートパスワードを2回入力してください。
You already have your root account protected, so you can safely answer ‘n’. Change the root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. … Success!
次のプロンプトでは、匿名のユーザーを削除しますか?このプロンプトにYと答えてください。
By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y … Success!
他のサーバーやローカルマシンからルートユーザーとしてデータベースにアクセスする予定がない場合は、リモートからのルートログインも無効にする必要があります。リモートマシンからのルートログインを無効にするには、プロンプトでYと回答してください。
Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y … Success!
以下のプロンプトに「Y」と入力することで、テストデータベースと関連権限も削除することができます。
By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment: Remove test database and access to it? [Y/n] y – Dropping test database… … Success! – Removing privileges on test database… … Success!
最後に、上記のすべての変更がサーバーに適用されるように、特権テーブルを再読み込みすることを確認します。 (Saigo ni, jōki no subete no henkō ga sābā ni tekiyō sareru yō ni, tokken tēburu o sai yomikomi suru koto o kakunin shimasu.)
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y … Success! Cleaning up… All done! If you’ve completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
あなたは今、Ubuntuインスタンス上にMariaDBデータベースサーバーをインストールし、設定し、セキュリティを確保しました。データベースはデフォルト設定ではポート3306でMySQL接続を待ち受けます。ほとんどの場合、このデータベースはサーバー内からアクセスされるため、外部トラフィックのファイアウォール上でこのポートを開放する必要はありません。
次に、OpenLiteSpeedと共に使用するためにPHPをインストールします。
ステップ4 – 特定のバージョンのPHPをインストールする
OpenLiteSpeedウェブサーバーには、1つのPHPバージョンがバンドルされていますが、最新の安定版でない場合があります。予めインストールされているPHPのバージョンを使用するか、特定のインスタンスをインストールすることができます。この手順では、PHPのインストールバージョンを確認し、必要に応じて更新し、必要なパッケージをインストールします。
あなたのOpenLiteSpeedサーバーに予めインストールされているPHPのバージョンを知るには、サンプルウェブサイトの「Test PHP」セクションのボタンをクリックするか、以下のURLを訪れてください。
http://your_server_ip:8088/phpinfo.php
情報ページにPHPのバージョンが表示されます。
OpenLiteSpeedウェブサーバーに特定のPHPバージョンをインストールするには、公式OpenLiteSpeedウェブサイトのはじめにページで利用可能なバージョンとその互換性を確認してください。利用可能なバージョンのリストは、インストールヘッダーの下にあるLiteSpeedリポジトリのセクションで表示されます。
![Screencapture displaying the LiteSpeed PHP Versions in the Documentation](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/80-0.png)
以下のコマンドを使用して、Ubuntuで利用可能なLSPHP(LiteSpeed PHP)パッケージも確認できます。
- sudo apt-cache search lsphp
パッケージのリストから、パッケージ名の接尾辞を使用してPHPのバージョンを特定することができます。以下のようなパッケージリストが表示されます。
… lsphp81 – server-side, HTML-embedded scripting language (LSAPI binary) …
この例では、lsphp81はPHP v8.1を指すと述べており、一方でlsphp74はPHP v7.4を意味します。
特定のlsphpパッケージをインストールするには、次のコマンドを使用してください(お好みのバージョンに対応する接尾辞で81を置き換えてください)。
- sudo apt install lsphp81 lsphp81–{common,mysql}
インストールを確認するには、Yを入力してください。
あなたはlsphpパッケージをインストールしただけですが、OpenLiteSpeedをこのバージョンのPHPを使用するように設定していません。例のウェブサイトは、新しいバージョンを使用するように設定するまで、デフォルトのPHPバージョンが表示され続けます。次のステップでは、OpenLiteSpeedをこのPHPバージョンを使用するように設定します。
ステップ5 — OpenLiteSpeedの設定を行います。
この手順では、OpenLiteSpeedウェブサーバーのGUIベースの管理パネルの認証情報を設定し、ウェブサーバーを使用するPHPバージョンに設定します。
OpenLiteSpeedウェブサーバーを設定するには、ポート7080でGUI管理パネルにアクセスしてください。
http://your_server_ip:7080
以下のコマンドを使用して、ターミナルで管理者アカウントの資格情報を設定してください。
- sudo /usr/local/lsws/admin/misc/admpass.sh
これらのログイン情報は、以前の手順で設定したものとは異なります。また、これらはOpenLiteSpeedサーバーのGUI管理パネル専用です。
以下の出力が表示され、ユーザー名とパスワードの入力を求められます。
Please specify the user name of administrator. This is the user name required to login the administration Web interface. User name [admin]: sammy Please specify the administrators password. This is the password required to login the administration Web interface. Password: Retype password: Administrators username/password is updated successfully!
認証情報を設定した後、指定したバージョンを使用するようにサーバーを設定できます。
http://your_server_ip:7080にアクセスし、設定したログイン情報で管理パネルにログインし、サーバー設定セクションに移動してください。その後、外部アプリタブをクリックしてください。
以下の画面が表示されます。
![External App Screen of OpenLiteSpeed Server Configuration section](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/102-0.png)
最初の行の「LiteSpeed SAPI App」のアクション列の編集ボタンをクリックし、名前がlsphpのアプリが開きます。コマンドフィールドにスクロールして、値をlsphp81/bin/lsphpに変更します(ステップ4の命名規則に従って)。この値を設定した後、画面をスクロールして「LiteSpeed SAPI App」の見出しまで移動し、右側の保存ボタンをクリックしてください。
ウェブサーバーを再起動するために、右上のGraceful Restartボタンを使用してください。以下のスクリーンキャプチャの右上には、Graceful Restartボタンが強調表示されています。
![Graceful Restart Button location](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/105-0.png)
指定されたPHPバージョンが使用されていることを確認するために、8088ポートの情報ページにアクセスしてください。
http://your_server_ip:8088/phpinfo.php
このページは指定されたバージョン番号を表示します。
この手順では、管理パネルの資格情報を設定し、所望のPHPバージョンを使用するように設定しました。次に、このウェブサーバーでホストする予定の異なるウェブサイトのために仮想ホストを設定します。
ステップ6 – バーチャルホストの設定
このステップでは、ウェブサーバーの仮想ホストを設定し、ウェブサイトへのすべてのトラフィックにTLS暗号化を設定します。
バーチャルホストは、1つのウェブサーバーを通じて、ホスト名で識別される複数のウェブサイトを提供することができます。OpenLiteSpeedは、複数のバーチャルホストを提供し、それらはリスナーにマッピングされます。そして、リスナーは特定のポートにマッピングされます。OpenLiteSpeedでは、バーチャルホストにカスタマイズされたリダイレクトルールを設定することができ、それぞれのバーチャルホストに異なるPHPバージョンも構成することができます。また、バーチャルホストはNode.JSなどの他のウェブサーバーへの逆プロキシ接続として構成することも可能です。
まだGUI管理パネル内で、バーチャルホストセクションに移動してください。表示されたテーブルの右上隅にある「+」ボタンをクリックして新しいバーチャルホストを追加してください。
次に、仮想ホストのルートと仮想ホストの設定ファイルのパスを設定するため、お好きな仮想ホスト名を追加できます。この際、OpenLiteSpeed Web Serverのルートディレクトリを参照するために$SERVER_ROOTのような変数や、仮想ホストのルートディレクトリを参照するために$VH_ROOTのような変数を使用します。また、PHPが仮想ホストで動作するようにするために、スクリプト/拡張アプリケーションを有効にするために「はい」をクリックしてください。
仮想ホストを設定する際には、以下のフィールドに希望の値を入力してください(以下の値は例です)。
- Virtual Host Name: MyWebsite
- Virtual Host Root: $SERVER_ROOT/MyWebsite/html/
- Config File: conf/vhosts/MyWebsite/vhconf.conf
- Enable Scripts/ExtApps: Yes
- Restrained: Yes
プリレクイジットの間に作成したドメイン名で、MyWebsiteを置き換えることができます。
Note
はい、Enable Scripts/ExtAppsの「はい」オンオプションは、構成のExternal AppsセクションでカスタムのPHPインタプリタバージョンを指定することができます。カスタムのPHPバージョンを設定しない場合は、オフにすることもできます。
シンボリックリンクが仮想ホストのルートディレクトリ以外のファイルを指していても、制限設定を有効にすると、ユーザーはヴァーチャルホストルートディレクトリ内に含まれるディレクトリ以外のファイルにアクセスすることはできません。セキュリティ上の理由から、この機能を有効にしてください。
![Virtual Host Configuration](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/121-0.png)
設定を完了した後、Virtual Hosts 行の右側にある保存ボタンをクリックしてください。
「管理パネルは、設定の変更を適用するために優雅な再起動を行うように促すメッセージを表示する場合があります。この時点で、設定手順に影響を与えることなく優雅な再起動を行うことができます。また、リスナーの設定変更が完了した後に優雅な再起動を行うことも待つこともできます。」
仮想ホストの設定が完了した後、リスナーを設定します。管理パネルのリスナーのセクションに移動します。デフォルトリスナーをクリックして、仮想ホストマッピングテーブルの右上隅にあるプラス(+)ボタンをクリックします。
「仮想ホスト」に対応するドロップダウンメニューから、仮想ホストの名前を選択してください。設定した仮想ホストの名前は、この例では「マイウェブサイト」です。
ドメイン名のテキストボックスには、設定したバーチャルホストを提供するために使用する、完全な形式で登録されたドメイン名を入力してください。以下のスクリーンキャプチャでは、サンプル値としてmywebsite.comが設定されていますが、your_domainで使用した値に更新してください。
![Listener Configuration](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/127-0.png)
Note
仮想ホストのマッピング行の右上にある保存ボタンをクリックしてください。
ウェブサイトに対してTLSセキュリティを有効にすることを強く推奨します。HTTPSページを提供するリスナーの一般設定で、セキュアオプションを「はい」に変更し、ポートを8088から443に変更してください。443はHTTPSのデフォルトポートです。更新されたアドレス設定を保存してください。
事前準備の段階で、証明書機関から証明書とキーファイルを生成したため、それらをOpenLiteSpeedのセットアップに追加することができます。SSLセクションのリスナーの設定で、SSLプライベートキーと証明書の行である「編集アイコン」をクリックし、証明書とキーファイルのパスを追加してください。
前提条件で言及されているガイドに従っていれば、Let’s Encryptで生成された証明書とキーファイルは以下の場所にあります。
- Private Key File: /etc/letsencrypt/live/your_domain.privkey.pem
- Certificate File: /etc/letsencrypt/live/your_domain.fullchain.pem
Let’s Encrypt で生成された証明書に関して、OpenLiteSpeed 上で Let’s Encrypt SSL を設定するための公式ドキュメントで推奨されているように、チェーンされた証明書オプションを「はい」に設定する必要があります。
以下は、Listener ConfigurationのSSLセクションにおけるTLS証明書とキーファイルのサンプル構成です(ファイルパスを自分のドメインに合わせて更新してください)。
![TLS Configuration for Listener](https://cdn.silicloud.com/blog-img/blog/img/65646feadaa94e2bdf7b7008/136-0.png)
もし何か問題が生じた場合は、OpenLiteSpeedのドキュメンテーション内の「SSLの設定ガイド」を参照してください。
これらの設定を構成して保存したら、画面の右上隅にある「Graceful Restart」ボタンをクリックして変更を適用してください。
現在、リスナー付きの仮想ホストを設定し、ウェブサイトへのすべてのトラフィックにTLS暗号化を設定しました。サーバーのパブリックIPアドレスとDNSを設定した後、指定したドメインでウェブサイトにアクセスできるようになります。
Note
注:OpenLiteSpeedは、Quick UDP Internet Connections(QUIC)プロトコルを介したHTTP3プロトコルを組み込む最初のオープンソースサーバーの一つです。
HTTP3/QUICを有効化するには、ドメインのSSLを設定し、証明書と鍵をAdmin Panel経由で構成する必要があります。手順6に戻ってください。
HTTP3を使用する場合、サーバーのポート443へのUDPトラフィックを許可する必要があります。これを行うには、以下のコマンドを実行してください。
sudo ufw allow 443/udp
結論
このチュートリアルでは、指定されたPHPバージョンでPHPアプリケーションを提供できるMariaDBデータベースサーバーとOpenLiteSpeedウェブサーバーをセットアップします。これにより、WordPressやLaravel、JoomlaなどのさまざまなPHPアプリケーションやフレームワークをサーバー上でホストすることができます。
もしあなたがまだそうでないなら、OpenLiteSpeedウェブサーバーでTLSセキュリティを設定し、HTTP/3 over QUICを有効にすることで、最大限にOpenLiteSpeedウェブサーバーを活用することができます。OpenLiteSpeedでLet’s Encrypt SSLを設定するためのガイドを参照し、その後、このガイドのステップ6のEnable HTTP/3 over QUICセクションを参照してください。