前書き

https://www.lighttpd.net [Lighttpd]は、リソース使用量を低く抑えながら高速環境向けに最適化された軽量のオープンソースWebサーバーです。 これは、一般的に使用されるWebサーバーNginxおよびApacheの優れた代替手段です。 このチュートリアルでは、FreeBSD 11.0を実行しているサーバーにLighttpdをインストールして設定します。 また、MySQLとPHPを新しいLighttpd Webサーバーに追加して、静的コンテンツだけでなくWebアプリケーションも提供できるようにします。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • FreeBSD 11.0を実行しているサーバー。

  • `+ sudo +`でコマンドを実行するように設定されたユーザーアカウント。 このチュートリアルでは、Digital Ocean FreeBSD Dropletに付属するデフォルトの* freebsd *アカウントで問題ありません。 FreeBSDの設定の詳細については、https://www.digitalocean.com/community/tutorial_series/getting-started-with-freebsd [Getting Started with FreeBSD]チュートリアルシリーズをご覧ください。

ステップ1-Lighttpdのインストール

Lighttpdのインストールにはいくつかのオプションがありますが、このチュートリアルでは、インストールにパッケージを使用します。 この方法は、ソースから、またはhttps://www.digitalocean.com/community/tutorials/how-to-install-and-manage-ports-on-freebsd-10-1[Ports]を介してインストールするよりも速く、ソフトウェアをインストールしますこの方法では、更新が簡単です。

Lighttpdとそのパッケージをインストールするには、まずリポジトリ情報を更新して、利用可能なパッケージの最新リストを確認します。

sudo pkg update

次に、 `+ lighttpd +`パッケージをダウンロードしてインストールします。

sudo pkg install lighttpd

「+ y +」と入力して、インストールを確認します。 Lighttpdがインストールされます。

このデフォルト設定では、サーバーの起動時に次のエラーが表示されます。

Output(network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes

これは、デフォルトのLighttpd構成がIPv6をサポートするように完全に構​​成されていないためです。 後で驚くことを避けるために、Lighttpdの構成ファイルを編集し、IPv6のサポートを無効にします。このチュートリアルを完了するのに必要ないためです。 使用することにした場合、将来的に有効にすることができます。

sudo ee /usr/local/etc/lighttpd/lighttpd.conf

このセクションを見つけます。

/usr/local/etc/lighttpd/lighttpd.conf

...
##
## Use IPv6?
##
server.use-ipv6 = ""
...

+ enable`を + disable`に変更します。

/usr/local/etc/lighttpd/lighttpd.conf

...
...
server.use-ipv6 = ""
...

次に、構成ファイルの最後にある次の行を見つけます。

/usr/local/etc/lighttpd/lighttpd.conf

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

IPv6を使用していない場合は不要なので、コメントアウトします。

/usr/local/etc/lighttpd/lighttpd.conf

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

次に、ファイルを保存してエディターを終了します。

次に、MySQLを設定しましょう。

ステップ2-MySQLのインストールと構成

MySQLは、Lighttpd Webサーバーでホストする予定のPHPアプリケーション用のデータベースを作成できるデータベース管理システムです。

Lighttpdの場合と同じように、パッケージを介してMySQLをインストールします。 次に、MySQL * root *ユーザーのパスワードを設定し、他のテストオプションを無効にします。 これにより、安全なMySQLセットアップが可能になります。

ステップ1で `+ pkg +`リポジトリ情報を既に更新しているため、MySQLサーバーパッケージをすばやくダウンロードしてインストールできます。

sudo pkg install mysql57-server

「+ y +」を押してインストールを確認します。

インストールが完了したら、システムの起動時にMySQLを有効にします。

sudo sysrc mysql_enable=yes

次に、 `+ mysql-server`サービスを開始します。

sudo service mysql-server start

サービスが開始されたら、 `+ mysql_secure_installation +`スクリプトを使用してMySQLのインストールを保護します。 これにより、いくつかの危険なデフォルトが削除され、データベースシステムへのアクセスが少し制限されます。 次を実行して、インタラクティブスクリプトを開始します。

sudo mysql_secure_installation

次のメッセージが表示されます。

OutputSecuring the MySQL server deployment.

Connecting to MySQL server using password in '/root/.mysql_secret'

次に、パスワードを検証するプラグインを構成するかどうかを尋ねられます。

OutputVALIDATE PASSWORD PLUGIN 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 plugin?

はいの場合は「+ Y +」、その他の場合は有効にせずに続行します。

この機能を有効にすることを選択した場合、パスワード検証のレベルを選択するよう求められます。 「2」と入力すると、数字、大文字と小文字、特殊文字を含まないパスワード、または一般的な辞書に基づくパスワードを設定しようとするとエラーが発生します言葉。

OutputThere 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:

次に、* root *ユーザーのパスワードを変更するかどうかを尋ねられます。

OutputChange the password for root ? ((Press y|Y for Yes, any other key for No) :

このパスワードを変更するには、「+ Y +」を押します。

パスワード検証を有効にした場合、既存のルートパスワードのパスワード強度が表示され、そのパスワードを変更するかどうかを尋ねられます。

OutputNew 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 +」を押してEnterキーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールがロードされ、MySQLが行った変更がすぐに反映されます。

次に、 `+ mysql-server +`サービスを再起動して、インスタンスがセキュリティの変更をすぐに実装することを確認します。

sudo service mysql-server restart

MySQLインスタンスが稼働すると、PHPをインストールして構成できます。

ステップ3-PHPのインストールと構成

PHPは、動的コンテンツを表示するコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MySQLデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示できます。

もう一度、パッケージシステムを使用してPHPをインストールし、MySQLサポートを追加するPHP拡張機能 `+ mysqli +`をインストールします。

sudo pkg install php71 php71-mysqli

Lighttpdには、他のWebサーバーのようなネイティブPHP処理が含まれていないため、「FastCGI Process Manager」を表すhttps://php-fpm.org/[PHP-FPM]を使用します。 このモジュールを使用してPHPリクエストを処理するようにLighttpdを設定します。 それを行う前に、PHP-FPM自体を構成する必要があります。

PHP-FPM構成ファイルを編集することから始めます。

sudo ee /usr/local/etc/php-fpm.d/www.conf

通信にネットワークポートではなくUnixソケットを使用するようにPHP-FPMを構成します。 これは、単一サーバー内で通信​​するサービスにとってより安全です。

構成ファイルで次の行を探します。

/usr/local/etc/php-fpm.d/www.conf

listen = 127.0.0.1:9000

この行を変更して、 `+ php-fpm +`ソケットを使用します。

/usr/local/etc/php-fpm.d/www.conf

listen =

次に、作成されるソケットの所有者、グループ、およびアクセス許可を設定します。 構成ファイルの次のセクションを探します。

/usr/local/etc/php-fpm.d/www.conf

...
;listen.owner = www
;listen.group = www
;listen.mode = 0660
...

各行の先頭にあるセミコロンを削除して、次のセクションのコメントを外します。セクションは次のようになります。

/usr/local/etc/php-fpm.d/www.conf

...
listen.owner = www
listen.group = www
listen.mode = 0660
...

完了したら、ファイルを保存して閉じます。

次に、PHPの一般的な動作を設定する + php.ini`ファイルを作成します。 「+ php.ini-production」と「+ php.ini-development」の2つのサンプルファイルが含まれています。 `+ php.ini-production`ファイルはサーバーに必要なものに近いので、PHPが見つけると予想される場所である + / usr / local / etc / php.ini is`にコピーします。構成ファイル:

sudo cp /usr/local/etc/php.ini-production

テキストエディターで新しい `+ php.ini`ファイルを開きます。

sudo ee /usr/local/etc/php.ini

設定ファイル内で、 `+ cgi.fix_pathinfo `動作のセクションを見つけます。 デフォルトではコメントアウトされ、 ` 1 +`に設定されます:

/usr/local/etc/php.ini

...
;cgi.fix_pathinfo=1
...

この行のコメントを外し、値を「0」に設定します。 これにより、プロセスに渡されたファイルが見つからない場合、PHPはパスの一部を実行しようとしません。 これは、攻撃者が悪意のあるコードを実行するために使用される可能性があります。

/usr/local/etc/php.ini

...
cgi.fix_pathinfo=
...

ファイルを保存し、エディターを終了します。

次に、 `+ php-fpm +`サービスを有効にしてブート時に開始します:

sudo sysrc php_fpm_enable=yes

次に、サービスを開始します。

sudo service php-fpm start

次に、Lighttpdを設定して、PHPアプリケーションを提供します。

ステップ4-PHPアプリケーションを提供するためのLighttpdの構成

このステップでは、FastCGIおよびPHP-FPMを使用するようにLighttpdを構成します。 これにより、LighttpdでPHPが有効になり、高速で効率的なPHPサポートが提供されます。

まず、FastCGIモジュールを有効にします。 Lighttpdモジュール構成ファイルを開きます。

sudo ee /usr/local/etc/lighttpd/modules.conf

次のセクションを見つけます。

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

`#`記号を削除して、 `+ include +`行のコメントを解除します。 その行が見つからない場合は、ファイルの最後に追加します。

/usr/local/etc/lighttpd/modules.conf

...
##
## FastCGI (mod_fastcgi)
##

...

ファイルを保存し、エディターを終了します。

次に、FastCGI構成ファイルを編集します。

sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf

このファイルにはコメントアウトされたいくつかの例があります。 ファイルの最後に次の構成行を追加します。これにより、FastCGIおよびPHP-FPMでPHPファイルを提供するようにLighttpdが構成されます。

/usr/local/etc/lighttpd/conf.d/fastcgi.conf

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

次に、Lighttpdを有効にして起動時に起動します。 これにより、Webサーバーが再起動されるたびにLighttpdが自動的に起動します。

sudo sysrc lighttpd_enable=yes

次に、 `+ lighttpd +`サービスを開始します。

sudo service lighttpd start

PHPの準備ができたので、すべてが機能することを確認しましょう。

手順5-サーバーセットアップのテスト

新しく設定されたLighttpdサーバーをテストするには、最初にフォルダー `+ / usr / local / www / data +`を作成します。ここで、Lighttpdは提供するWebページを探します。

sudo mkdir -p /usr/local/www/data

次に、 `+ / usr / local / www / data / `フォルダーに ` info.php +`を作成します。 このファイルは、PHPが機能していることをテストし、WebブラウザーでWebサーバーのセットアップに関する情報を確認できるようにします。

sudo ee /usr/local/www/data/info.php

このコードをファイルに追加します。

/usr/local/www/data/info.php

<?php phpinfo(); ?>

ファイルを保存し、エディターを終了します。

Webブラウザで `+ http:/// info.php +`にアクセスします。 次のようなページが表示されます。

image:https://assets.digitalocean.com/articles/lighttpd_php_freebsd11/NXq8JIE.png [PHP情報ページ]

このページには、オペレーティングシステム、Webサーバー、およびWebサーバーがPHPファイルを処理する方法に関する情報が表示されます。 また、WebサーバーがPHPファイルを正しく提供できることも確認します。

このページが表示されず、代わりに* Error 503 Service Not Available *が表示される場合は、前の手順で `+ php-fpm +`サービスが正しく開始されていることを確認してください。

動作していることを確認したら、「+ info.php」ページを削除します。このページは、サーバーに関する情報を公開する必要があるため、非公開にする必要があります。

sudo rm /usr/local/www/data/info.php

これで、Webサーバーが完全に構成され、準備が完了しました。 ファイルを `+ / usr / local / www / data +`に置いて提供します。

結論

Lighttpd Webサーバーが完全に稼働しているので、Webページ、ドキュメント、およびその他のファイルをWebサーバーでホストできます。 SSL構成およびその他のセキュリティ機能を追加して、Webサーバーのセキュリティを強化します。 Lighttpdの詳細については、https://redmine.lighttpd.net/projects/lighttpd/boards [Lighttpd forums]をご覧ください。