序章

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

Note: As of July 1, 2022, DigitalOcean no longer supports FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.

前提条件

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

  • FreeBSD11.0を実行しているサーバー。
  • コマンドを実行するように構成されたユーザーアカウント sudo. For the purposes of this tutorial, the user is referred to as 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セットアップが保証されます。

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

  1. sudo pkg install mysql57-server

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

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

  1. sudo sysrc mysql_enable=yes

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

  1. sudo service mysql-server start

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

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

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

  1. sudo service mysql-server restart

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

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

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

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

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

  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

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

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

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

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

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

訪問 http://your_server_ip/info.php Webブラウザで。 次のようなページが表示されます。

このページには、オペレーティングシステム、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フォーラムにアクセスしてください。