Rocky Linux 9にLOMPスタック(OpenLiteSpeed、MySQL、PHP)をインストールする方法
Rocky Linux 9にLOMPスタック(OpenLiteSpeed、MySQL、PHP)をインストールする方法
このページで
- 前提条件
- ステップ1 - ファイアウォールを設定する
ステップ2 - OpenLiteSpeedをインストールする
- 管理者パスワードを作成する
ステップ5 - OpenLiteSpeedを設定する
OpenLiteSpeedは、LiteSpeed Technologiesによって開発されたLiteSpeedサーバーの軽量でオープンソースのバージョンです。Apacheリライトルール、HTTP/2およびHTTP/3、TLS v1.3およびQUICプロトコルをサポートしています。WebGUIベースの管理パネルが付属しており、他のサーバーとは異なり、管理が容易です。
LOMPスタックは、Linux、OpenLiteSpeed、MySQL/MariaDB、およびPHPの頭字語です。LiteSpeedサーバーはその速度で知られており、特にLiteSpeedサーバーアプリケーションプログラミングインターフェース(LSAPI)を使用して統合されるPHPの性能が際立っています。LiteSpeed PHP(LSPHP)インタープリタは、LSAPIを介して動的PHPページを提供します。
このチュートリアルでは、Rocky Linux 9マシンにLOMPサーバーをインストールする方法をステップバイステップで説明します。
前提条件
Rocky Linux 9を実行しているサーバー。
sudo権限を持つ非ルートユーザー。
サーバーを指す完全修飾ドメイン名(FQDN)として example.com があります。
SELinuxはOpenLiteSpeedと連携するために無効にしたり設定したりする必要はありません。
すべてが最新であることを確認してください。
sudo dnf update
あなたのシステムに必要ないくつかのパッケージ。
sudo dnf install wget curl nano unzip yum-utils -y
これらのパッケージの一部は、すでにあなたのシステムにインストールされている可能性があります。
ステップ1 - ファイアウォールを設定する
最初のステップはファイアウォールを設定することです。Rocky LinuxはFirewalldファイアウォールを使用しています。ファイアウォールのステータスを確認してください。
sudo firewall-cmd --state
running
ファイアウォールは異なるゾーンで動作し、パブリックゾーンは私たちが使用するデフォルトのゾーンです。ファイアウォールでアクティブなすべてのサービスとポートをリストアップしてください。
sudo firewall-cmd --permanent --list-services
次の出力を表示する必要があります。
cockpit dhcpv6-client ssh
OpenLiteSpeedは管理パネルのために7080ポートが必要です。
sudo firewall-cmd --permanent --add-port=7080/tcp
私たちは機能するためにHTTPおよびHTTPSポートも必要です。それらを開いてください。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
変更を適用するためにファイアウォールを再起動してください。
sudo firewall-cmd --reload
もう一度すべてのサービスをリストしてください。
sudo firewall-cmd --permanent --list-services
次の出力を得るべきです。
cockpit dhcpv6-client http https ssh
ステップ2 - OpenLiteSpeedをインストールする
OpenLiteSpeedのバイナリファイルをダウンロードしてください。最新のバイナリファイルへのリンクはOpenLiteSpeedの公式ダウンロードページから取得できます。
wget https://openlitespeed.org/packages/openlitespeed-1.7.16.tgz
ファイルを抽出してください。
tar -zxf openlitespeed-*.tgz
抽出されたディレクトリに切り替えます。
cd openlitespeed
インストーラーを実行してください。
sudo ./install.sh
インストーラーが完了するまでしばらくお待ちください。
Rocky Linux 9 のマシンで OpenLiteSpeed にいくつかの問題があり、そのために PHP パッケージが見つからないというエラーが表示されることがあります。現時点ではそれらを無視してもかまいません。サーバーはさまざまな回避策で動作できます。
インストーラスクリプトは、lshttpd systemdサービスをインストールして有効にします。
OpenLiteSpeedサーバーを開始します。
sudo systemctl start lshttpd
インストールされているサーバーのバージョンを確認してください。
/usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.7.16 Open (BUILD built: Thu Nov 17 16:18:46 UTC 2022)
module versions:
lsquic 3.1.1
modgzip 1.1
cache 1.64
mod_security 1.4
管理者パスワードを作成する
パスワードリセットスクリプトを実行してください。
sudo /usr/local/lsws/admin/misc/admpass.sh
以下の出力が得られます。ユーザー名にadminを入力し、強力なパスワードを設定してください。
Please specify the user name of administrator.
This is the user name required to login the administration Web interface.
User name [admin]: admin
Please specify the administrator's password.
This is the password required to login the administration Web interface.
Password:
Retype password:
Administrator's username/password is updated successfully!
新しい管理者パスワードを使用できるようになりました。
OpenLiteSpeedの管理パネルにアクセスするには、http://<YOURSERVERIP>:7080を開いてください。初めてログインすると、ブラウザが接続がプライベートでないことを警告します。詳細をクリックし、(Firefoxの場合)「リスクを受け入れて続行」をクリックするか、(Chromiumベースのブラウザの場合)「<YOURSERVERIP>(安全でない)に進む」をクリックしてください。以降、この警告は表示されません。
ログインページが表示されるはずです。
以前に設定したユーザー名としてadminを、パスワードを入力し、ログインボタンを押して続行してください。
次の画面が表示されます。
ステップ3 - PHPをインストールする
OpenLiteSpeedのインストーラーは通常、デフォルトでPHP 7.4をインストールします。Rocky Linux 9の場合、自動でインストールされません。さらに、私たちは最新のPHPのバージョンをインストールします。その前に、LiteSpeedリポジトリをインストールする必要があります。
次のコマンドを実行してOpenLiteSpeedリポジトリをインストールしてください。
sudo rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.3-1.el8.noarch.rpm
OpenLiteSpeedのリポジトリページから最新のRPMファイルを取得できます。
PHP 8.2をインストールします。
sudo dnf install lsphp82 lsphp82-mysqlnd lsphp82-process lsphp82-bcmath lsphp82-pdo lsphp82-common lsphp82-xml lsphp82-opcache lsphp82-soap
lsphp-gd と lsphp-mbstring パッケージはまだリポジトリにありません。したがって、これらが必要な場合は、正式にリリースされるまでしばらく待つ必要があります。
PHPのインストールを確認してください。
/usr/local/lsws/lsphp82/bin/php -v
PHP 8.2.1 (cli) (built: Jan 3 2023 18:40:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.1, Copyright (c) Zend Technologies
with Zend OPcache v8.2.1, Copyright (c), by Zend Technologies
有効なPHPモジュールのリストを確認できます。
/usr/local/lsws/lsphp82/bin/php --modules
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
random
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
後でOpenLiteSpeedをPHPと一緒に動作するように設定します。
ステップ4 - MySQLをインストールする
MySQLサーバーをインストールします。
sudo dnf install mysql-server
MySQLサーバーを有効にして開始します。
sudo systemctl enable mysqld --now
サービスの状態を確認してください。
sudo systemctl status mysqld
次の出力が得られます。
? mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-02-17 07:31:00 UTC; 2s ago
Process: 14933 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Process: 14955 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Main PID: 15054 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 5873)
Memory: 427.1M
CPU: 4.079s
CGroup: /system.slice/mysqld.service
??15054 /usr/libexec/mysqld --basedir=/usr
Feb 17 07:30:51 nspeaks.xyz systemd[1]: Starting MySQL 8.0 database server...
Feb 17 07:30:51 nspeaks.xyz mysql-prepare-db-dir[14955]: Initializing MySQL database
Feb 17 07:31:00 nspeaks.xyz systemd[1]: Started MySQL 8.0 database server.
MySQLのセキュリティスクリプトを実行してください。
sudo mysql_secure_installation
いくつかのプロンプトが表示されます。最初のプロンプトでは、Validate Password Pluginをインストールするかどうか尋ねられます。Yを押してプラグインをインストールしてください。セキュリティレベルとして2を選択すると、パスワードは最低8文字長で、大小英字、数字、および特殊文字を含む必要があります。
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
次に、強力なrootパスワードを作成するように求められます。パスワードがValidateプラグインの要件に一致していることを確認してください。
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
次に、データベースのセキュリティを向上させることに関するいくつかのプロンプトが表示されます。各プロンプトでYを押してください。
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : Y
Success.
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? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL 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? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
MySQLシェルにログインします。
mysql -u root -p
プロンプトが表示されたら、ルートパスワードを入力してください。
テストデータベースとアクセス権のあるユーザーを作成します。testdbとtestuserをあなたの設定に適した名前に置き換えてください。passwordは強力なパスワードに置き換えてください。
mysql> CREATE DATABASE testdb;
mysql> CREATE USER 'testuser' IDENTIFIED BY 'Your_Password123';
mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser';
mysql> FLUSH PRIVILEGES;
MySQLシェルを終了します。
mysql> exit
ステップ5 - OpenLiteSpeedを設定する
HTTPポートを再び80に切り替えます
デフォルトのHTTPポートを80に変更しましょう。先ほど作成した資格情報で、管理パネルにログインしてください。http://<YOURSERVERIP>:7080
左側のリスナーセクションにアクセスしてください。ポート8080のデフォルトリスナーが表示されます。
表示ボタンをクリックして詳細な設定を表示します。次のページのリスナーのデフォルト > 一般ページで、編集アイコンをクリックし、ポートを8080から80に変更します。
保存をクリックし、優雅な再起動ボタンをクリックしてサーバーを再起動します。
ステップ6 - PHPを設定する
このステップでは、私たちのPHP 8.2のコピーをサーバーに関連付ける必要があります。
左側のサーバー設定セクションをクリックし、次に外部アプリタブをクリックしてください。PHP用の既存のLiteSpeedアプリが表示されます。それにいくつか変更を加えます。
編集ボタンをクリックしてPHPアプリを編集します。
次に、以下に示すように構成を合わせてください。他のすべてのフィールドは空白のままにしてください。
Name: lsphp
Address: uds://tmp/lshttpd/lsphp.sock
Max Connections: 35
Environment: PHP_LSAPI_MAX_REQUESTS=500
PHP_LSAPI_CHILDREN=35
LSAPI_AVOID_FORK=200M
Initial Request Timeout (secs): 60
Retry Timeout : 0
Persistent Connection: Yes
Response Buffering: no
Start By Server: Yes(Through CGI Daemon)
Command: lsphp82/bin/lsphp
Back Log: 100
Instances: 1
Priority: 0
Memory Soft Limit (bytes): 2047M
Memory Hard Limit (bytes): 2047M
Process Soft Limit: 1400
Process Hard Limit: 1500
完了したら保存をクリックしてください。
私たち自身のPHP 8.2アプリを作成したので、サーバーにそれを使い始めるように指示する必要があります。デフォルトのリストを編集したので、すでに設定されています。優雅な再起動ボタンをクリックしてサーバーを再起動します。
あなたのPHPが正しく切り替えられているかをテストするには、ブラウザでhttp://<YOURSERVERIP>/phpinfo.phpにアクセスしてください。
ステップ7 - バーチャルホストを作成する
まず、仮想ホスト用のディレクトリを作成する必要があります。
sudo mkdir /usr/local/lsws/example.com/{html,logs} -p
htmlディレクトリには公開ファイルが格納され、logsディレクトリにはサーバーログが含まれます。
次に、管理コンソールを開き、左側の仮想ホストセクションにアクセスして、追加ボタンをクリックします。
指定された値を入力してください
Virtual Host Name: example.com
Virtual Host Root: $SERVER_ROOT/example.com/
Config File: $SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf
Follow Symbolic Link: Yes
Enable Scripts/ExtApps: Yes
Restrained: Yes
External App Set UID Mode: Server UID
保存ボタンをクリックして完了させてください。現在、構成ファイルが存在しないため、次のエラーが表示されます。リンクをクリックして構成ファイルを作成してください。
もう一度保存ボタンをクリックして、バーチャルホストの作成を完了してください。
仮想ホストを作成したら、仮想ホスト -> 仮想ホストを選択 (example.com) -> 一般に移動し、指示された通りに設定を変更してください。
Document Root: $VH_ROOT/html/
Domain Name: example.com
Enable GZIP Compression: Yes
Enable Brotli Compression: Yes
作業が完了したら保存ボタンをクリックしてください。次に、インデックスファイルを設定する必要があります。一般セクションの下にあるインデックスファイルの対にある編集ボタンをクリックしてください。次のオプションを設定してください。
Use Server Index Files: No
Index files: index.php, index.html, index.htm
Auto Index: No
作業が完了したら「保存」をクリックします。次に、ログファイルを選択する必要があります。ログセクションに移動し、仮想ホストログに対して「編集」をクリックし、以下の値を入力します。他の設定は変更しないでください。
Use Server’s Log: Yes
File Name: $VH_ROOT/logs/error.log
Log Level: ERROR
Rolling Size (bytes): 10M
Keep Days: 30
Compress Archive: Not Set
本番/開発用のマシンである場合は、ログレベルをDEBUGとして選択できます。
「保存」をクリックし、次にアクセスログセクションのプラス記号をクリックして新しいエントリを追加します。次の値を入力してください。
Log Control: Own Log File
File Name: $VH_ROOT/logs/access.log
Piped Logger: Not Set
Log Format: Not Set
Log Headers: Not Set
Rolling Size (bytes): 10M
Keep Days: 30
Bytes log: Not Set
Compress Archive: Not Set
完了したら 保存をクリックしてください。次に、セキュリティセクションの下にあるアクセス制御を設定する必要があります。次の値を設定してください。
Allowed List: *
Denied List: Not set
完了したら保存をクリックしてください。次に、スクリプトハンドラー定義を設定する必要があります。新しい定義を追加するには、プラス(+)ボタンをクリックしてください。以下の値を設定します。
Suffixes: php
Handler Type: LiteSpeed SAPI
Handler Name: [Server Level]: lsphp
完了したら 保存をクリックしてください。次に、書き換えセクションの下にある書き換え制御を設定する必要があります。以下の値を設定してください。
Enable Rewrite: Yes
Auto Load from .htaccess: Yes
Log Level: Not Set
完了したら保存をクリックしてください。そして最後に、リスナーの設定が必要です。リスナーセクションに移動し、デフォルトリスナーに対して表示ボタンをクリックします。その後、バーチャルホストマッピングに対して追加ボタンをクリックして新しいマッピングを追加し、次の値を設定します。
Virtual Host: example.com
Domains: example.com
完了したら保存をクリックしてください。次に、すべての変更を適用してサーバーを再起動するために優雅な再起動ボタンをクリックします。
ステップ8 - SSLをインストールする
OpenLiteSpeedでSSLを設定するには、全体のサーバー用の自己署名証明書と、サイト固有のLet's Encrypt証明書の2つを設定する必要があります。
まず、自己署名証明書を作成しましょう。
openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes
あなたは同様の出力を得るでしょう。
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:[email
すべてのフィールドを空のままでエンターを押して進むことができます。共通名にはあなたのドメインを、メールアドレスにはあなたのメールアドレスを入力してください。
証明書は現在、/home/userディレクトリに保存されています。この情報は後で必要になります。
Let's Encryptを使用するには、Certbotツールをインストールする必要があります。それにはSnapdパッケージインストーラーを使用します。Rocky Linuxにはそれが含まれていないため、Snapdインストーラーをインストールします。それが機能するにはEPELリポジトリが必要です。
sudo dnf install -y epel-release
Snapdをインストールします。
sudo dnf install -y snapd
スナップサービスを有効にして開始します。
sudo systemctl enable snapd --now
Snapコアパッケージをインストールし、Snapdのバージョンが最新であることを確認してください。
sudo snap install core && sudo snap refresh core
Snapdが動作するために必要なリンクを作成してください。
sudo ln -s /var/lib/snapd/snap /snap
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
次のコマンドを入力してCertbotをインストールしてください。
sudo snap install --classic certbot
次のコマンドを使用して、Certbot コマンドが /usr/bin ディレクトリへのシンボリックリンクを作成することで実行できることを確認してください。
sudo ln -s /snap/bin/certbot /usr/bin/certbot
インストールを確認してください。
certbot --version
certbot 2.3.0
次のコマンドを実行してSSL証明書を生成します。
SSL証明書を取得します。ウェブルートディレクトリは、先に設定したパブリックHTMLディレクトリに設定されています。
sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d example.com
ディフィー・ヘルマン群証明書を生成します。
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
SSLの更新が問題なく機能しているかどうかを確認するために、プロセスのドライランを行ってください。
sudo certbot renew --dry-run
エラーが見当たらなければ、すべて準備完了です。あなたの証明書は自動的に更新されます。
今、管理コンソールを開いてリスナー >> 新しいリスナーを追加に移動し、次の値を追加してください。
Listener Name: SSL
IP Address: ANY
Port: 443
Secure: Yes
完了したら、保存をクリックしてください。次に、SSLをクリックしてSSLリスナーの下にあるバーチャルホストマッピングセクションに移動し、追加ボタンをクリックして次の値を入力してください。
Virtual Host: example.com
Domains: example.com
作業が完了したら保存をクリックしてください。次に、リスナー >> SSLリスナー >> SSLタブ >> SSLプライベートキーと証明書(編集ボタン)に移動し、以前に作成した自己署名証明書のために次の値を入力します。
Private Key File: /home/user/key.pem
Certificate File: /home/user/cert.pem
Chained Certificate: Yes
完了したら、保存をクリックしてください。次に、リスナー >> SSLリスナー >> SSLタブ >> SSLプロトコル (編集ボタン) に移動し、SSLプロトコルと暗号詳細に以下の値を入力してください。
Protocol Version: TLS v1.2 TLS v1.3
Ciphers: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384
Enable ECDH Key Exchange: Yes
Enable DH Key Exchange: Yes
DH Parameter: /etc/ssl/certs/dhparam.pem
完了したら保存をクリックします。次に、バーチャルホスト >> example.com >> SSLタブ >> SSLプライベートキーおよび証明書(編集ボタン)に移動し、以下の値をLet's Encrypt証明書で入力します。
Private Key File: /etc/letsencrypt/live/example.com/privkey.pem
Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem
Chained Certificate: Yes
完了したら 保存 をクリックします。次に、仮想ホスト >> example.com >> SSLタブ >> OCSPスタプリング (編集ボタン) に進み、次の値を入力してOCSPスタプリングを有効にします。
Enable OCSP Stapling: Yes
OCSP Response Max Age(Secs): 300
OCSP Responder: http://r3.o.lencr.org
完了したら 保存をクリックしてください。次に、仮想ホスト >> example.com >> SSLタブ >> セキュリティ(編集ボタン)に移動し、HTTP3/QUICプロトコルを有効にするために以下の値を入力してください。
Enable HTTP3/QUIC: Yes
他のオプションはデフォルトでオンになっているため、有効にする必要はありません。
完了したら 保存をクリックしてください。
優雅な再起動ボタンをクリックしてサーバーを再起動してください。
ステップ9 - テストサイト
あなたの html ディレクトリにテストファイルを作成してください。
sudo nano /usr/local/lsws/example.com/html/index.php
次のコードをNanoエディタに貼り付けてください。
<html>
<head>
<h2>OpenLiteSpeed Server Install Test</h2>
</head>
<body>
<?php echo '<p>Hello,</p>';
// Define PHP variables for the MySQL connection.
$servername = "localhost";
$username = "testuser";
$password = "password";
// Create a MySQL connection.
$conn = mysqli_connect($servername, $username, $password);
// Report if the connection fails or is successful.
if (!$conn) {
exit('<p>Your connection has failed.<p>' . mysqli_connect_error());
}
echo '<p>You have connected successfully.</p>';
?>
</body>
</html>
ブラウザでURL https://example.com を開くと、次のページが表示されるはずです。
テストサイトは完全に機能しています。動的なPHPウェブサイトやアプリケーションを提供するためにサーバーの使用を開始できます。
結論
これで、Rocky Linux 9サーバーにLOMPスタック(OpenLiteSpeed、MySQL、PHP)をインストールするためのチュートリアルは終了です。質問がある場合は、下のコメントに投稿してください。



























