序章

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

前提条件

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

  • FreeBSD11.0を実行しているサーバー。
  • sudoでコマンドを実行するように構成されたユーザーアカウント。 このチュートリアルでは、Digital OceanFreeBSDDropletに付属しているデフォルトのfreebsdアカウントで問題ありません。 FreeBSDの設定の詳細については、 Get Getting Started withFreeBSDチュートリアルシリーズをご覧ください。

ステップ1—Lighttpdをインストールする

Lighttpdをインストールするためのいくつかのオプションがありますが、このチュートリアルでは、インストールにパッケージを使用します。 この方法は、ソースからまたはポートを介してインストールするよりも高速であり、この方法でインストールされたソフトウェアは簡単に更新できます。

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

  1. sudo pkg update

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

  1. 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のサポートを無効にします。これは、このチュートリアルを完了するために必要ないためです。 将来、使用することにした場合は、有効にすることができます。

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

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

/usr/local/etc/lighttpd/lighttpd.conf
...
##
## Use IPv6?
##
server.use-ipv6 = "enable"
...

enabledisableに変更します。

/usr/local/etc/lighttpd/lighttpd.conf
...
...
server.use-ipv6 = "disable"
...

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

/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は、LighttpdWebサーバーでホストする予定のPHPアプリケーション用のデータベースを作成できるデータベース管理システムです。

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

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

  1. sudo pkg install mysql57-server

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

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

  1. sudo sysrc mysql_enable=yes

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

  1. sudo service mysql-server start

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

  1. sudo mysql_secure_installation

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

Output
Securing the MySQL server deployment. Connecting to MySQL server using password in '/root/.mysql_secret'

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

Output
VALIDATE 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?

警告:この機能を有効にすることは、判断の呼びかけのようなものです。 有効にすると、指定された基準に一致しないパスワードがMySQLによって拒否され、エラーが発生します。 これは、MySQLユーザー資格情報を自動的に構成するソフトウェアと組み合わせて弱いパスワードを使用する場合に問題を引き起こします。 検証を無効のままにしておくのは安全ですが、データベースの資格情報には常に強力で一意のパスワードを使用する必要があります。

Yと答えて「はい」と答えるか、有効にせずに続行するには他の何かを答えてください。

この機能を有効にすることを選択した場合、パスワード検証のレベルを選択するように求められます。 2と入力すると、最強のレベルで、数字、大文字と小文字、特殊文字を含まない、または共通に基づくパスワードを設定しようとすると、エラーが発生することに注意してください。辞書の単語。

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

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

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

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

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

Output
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を押して、各プロンプトでEnterキーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートrootログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。

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

  1. sudo service mysql-server restart

MySQLインスタンスが起動して実行されると、PHPをインストールして構成できます。

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

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

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

  1. sudo pkg install php71 php71-mysqli

Lighttpdには他のWebサーバーのようなネイティブPHP処理が含まれていないため、「FastCGIProcessManager」の略であるPHP-FPMを使用します。 このモジュールを使用してPHPリクエストを処理するようにLighttpdを設定します。 その前に、PHP-FPM自体を構成する必要があります。

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

  1. 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 = /var/run/php-fpm.sock

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

/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-productionphp.ini-developmentの2つのサンプルファイルが含まれています。 php.ini-productionファイルはサーバーに必要なファイルに近いので、PHPが構成ファイルを見つけると予想される場所である/usr/local/etc/php.iniにコピーします。

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

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

  1. 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=0
...

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

次に、php-fpmサービスを有効にして起動時に開始します。

  1. sudo sysrc php_fpm_enable=yes

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

  1. sudo service php-fpm start

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

ステップ4—PHPアプリケーションを提供するためのLighttpdの設定

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

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

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

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

...
[label /usr/local/etc/lighttpd/modules.conf]
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

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

...
[label /usr/local/etc/lighttpd/modules.conf]
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"
...

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

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

  1. 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が自動的に起動します。

  1. sudo sysrc lighttpd_enable=yes

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

  1. sudo service lighttpd start

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

ステップ5—サーバーセットアップのテスト

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

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

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

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

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

/usr/local/www/data/info.php
<?php phpinfo(); ?>

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

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

The PHP Info page

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

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

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

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

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

結論

Lighttpd Webサーバーが完全に稼働しているので、Webサーバー上でWebページ、ドキュメント、およびその他のファイルをホストできます。 SSL構成やその他のセキュリティ機能を追加して、Webサーバーをより安全にするため。 Lighttpdの詳細については、Lighttpdフォーラムにアクセスしてください。