🧑‍💻

Debian11にLLMPスタックを構築する

2022/03/03に公開

はじめまして。42Tokyoの学生をしているninomaeです。
今回はVirtualBoxの仮想化環境上のDebian11にLLMPスタックを構築したので、まとめも兼ねて投稿します。
表現が適切でない部分もあると思うので、気になった方はコメントで優しく教えて下さい

LLMPスタックとは?

Linux + Lighttpd + MariaDB(MySQL) + PHPの実行環境のことです。似たようなものとして、LAMPスタック, LEMPスタックが存在します。それぞれwebサーバーにApacheを使うか、nginxを使用するかの違いだと思います。

背景

なぜApacheやnginxではなく、Lighttpdを使うかについては、それが要件だったのでというのが理由です。(調べてもApacheやnginxほど情報がなくて苦労した...)

Lighttpd自体はオープンソースで開発されているwebサーバーで、高速かつ柔軟な点がポイントになるようです。パフォーマンスの面ではnginxと同格のパフォーマンスをほこるみたいです。

LLMPスタックを構築すると、どんなトラフィック量のアクセスがあったときでもLAMPスタックを簡単に凌駕できるそうです。Ligtttpdとnginxの比較では、性能はほとんど同じだそうです。

一般に開発で使うときは、nginxがより一般的な選択肢で、LEMPセットアップはコミュニティによる優れたサポートがあるので、そちらを選ぶほうが良さそう。
参考: Apache Vs Nginx Vs Lighttpd: Comparing Performance, Resource Usage And Features

Debian11のサーバーにLighttpd、MariaDB、PHP-FPMをインストールする

0. 開発環境

  • VirtualBox 6.1.16
  • Debian 11.2.0
  • sudo, ufwインストール済み

1. 事前準備

サーバー内のパッケージ管理システムを最新の状態にしておく。

sudo apt update && apt upgrade

VirtualBox側で、ホストの8080番ポートをゲストの80番ポートにポートフォワーディングするように設定しておく。


2. Lighttpdのインストール

lighttpdをインストールする。

sudo apt install lighttpd

インストールが完了したら、lighttpdを起動してWebサーバを立ち上げる。enableモードに設定しておくと、仮想マシンを再起動したときにも、しっかりとlighttpdが起動する

sudo systemctl start lighttpd
sudo systemctl enable lighttpd

起動できたか確認する

sudo systemctl status lighttpd

3. webサービスの動作に必要なポートを開放しておく。

今回はHTTPのデフォルトポート(80番)を使用するので、UFW側で開放しておく。

sudo ufw allow http

設定の確認方法は以下のコマンド。allow 80となっていれば大丈夫なはず。

sudo ufw status

設定ができたらufwの設定を再読み込み

sudo ufw reload

この段階で、ブラウザからlocalhost:[ポート番号]にアクセスしてPlaceholder Pageが見れれば成功。


4. MariaDBのインストールと初期設定をする

インストールする。

sudo apt install mariadb-server

インストールが完了するとMariaDBはすぐに起動するが、起動に失敗した場合は以下のコマンドでMariaDBを起動する。ここでもlighttpdと同様にenableモードに設定しておくことで、仮想マシンの再起動後でも自動でSQLサーバー起動するようになる。

sudo systemctl start mariadb
sudo systemctl enable mariadb

MariaDBのステータスを確認する。

sudo systemctl mariadb

MariaDBの初期設定をする

MariaDBは初期インストールの状態では、セキュリティの面で脆弱な部分がある。そのため、MariaDBのパッケージと一緒にインストールされる、security scriptを実行する。

sudo mysql_secure_installation

実行すると、いくつか質問される。

  • Enter current password for root
    • MariaDBのrootユーザーのパスワードを入力する。
    • インストール直後は設定されていないので、そのままReturnを押す
      これ以降は全部Yで回答しておけばOK。

5. PHP-Fast CGIプロセスマネージャー(PHP-FPM)をインストール

PHP-FPMは性能の低いサーバーでも大量のアクセスを処理することができるらしい。
最新版のPHP-FPMパッケージをインストールするには、以下のコマンドを実行する。またこのとき、後に必要なパッケージも一緒にインストールしておく。

sudo apt install php-fpm php-cgi php-mysql

自分の環境では、php7.4系がインストールされました。

PHP-FPMの初期設定をする

  • php.iniファイルを編集することで設定できる
sudo cd /etc/php/7.4/fpm
sudo vim php.ini
  • cgi.fix_pathinfo=1の行を探し、コメントアウトを解除する
  • PHP-FPMを起動する
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm
  • 起動できたかどうか確認
sudo systemctl status php7.4-fpm

6.LighttpdとPHP-FPMの連携設定をする

15-fastcgi-php.confを編集してLighttpdとPHP-FPMのつなぎこみをする。

  • lighttpdの設定ファイルがあるディレクトリに移動して、好きなエディタで開く
sudo cd /etc/lighttpd/conf-available
sudo vim 15-fastcgi-php.conf

デフォルトのPHP-CGI設定を以下のように変更する

fastcgi.server += (".php" =>
		((
				"socket" => "/var/run/php/php7.4-fpm.sock",
				"broken-scriptfilename" => "enable"
		))
)

FastCGI Lighttpdモジュールを起動する

sudo lighttpd-enable-mod fastcgi
sudo lighttpd-enable-mod fastcgi-php

Lighttpd webサーバーを再起動して新しい設定を反映させる。

sudo systemctl restart lighttpd

7. 構築したサーバーをテストする

テストのためには、ドキュメントルートである/var/www/htmlの中に以下のようなファイルを作成する。

file.php
<?php
phpinfo();
?>

phpinfo()はphpに関する情報を表示するためのメソッド?
ブラウザでlocalhost:[ポート番号]/file.phpにアクセスして、設定できているか確認する。

お疲れさまでした。
下の方に参考にしたページを載せておくので、よろしければ参考にしてください。

参考

https://allthings.how/install-llmp-stack-on-ubuntu-20-04-lts/
https://hostadvice.com/how-to/how-to-install-the-llmp-stack-on-ubuntu-18-04-vps-server-or-dedicated-server/
https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI
https://mebee.info/2020/07/10/post-11998/

Discussion