FEMPスタック · 2 min read · Jan 26, 2026

FreeBSD 11にNginx、MariaDB、PHP(FEMPスタック)をインストールする

このチュートリアルでは、FreeBSD 11.xにFEMPスタックをインストールおよび構成するプロセスについて説明します。FEMPソフトウェアスタックは、通常Unix/Linuxオペレーティングシステムにインストールされ、主に動的Webアプリケーションを展開するために使用されるプログラムのグループを指す略語です。この場合、FEMPの略語はFreeBSD Unixライクなオペレーティングシステムを指し、その上にこれらのアプリケーションがインストールされます。

  • Nginx Webサーバーは、主にHTMLコンテンツを提供するために使用される急成長中の人気のWebサーバーですが、負荷分散、高可用性、またはWebサーバーや他のネットワークサービスのためのリバースプロキシも提供できます。
  • PHP 動的プログラミング言語インタープリターは、バックエンドでデータベースデータを操作し、プレーンHTMLに含めることができる動的Webコンテンツを作成するために使用されます。PHPスクリプトはサーバー側でのみ実行され、クライアント側(ブラウザ内)では決して実行されません。
  • MariaDB\MySQL RDBMSは、データがバックエンドに保存される場所であり、動的処理はPHPによって処理されます。このチュートリアルでは、MySQLデータベースの代わりに、MySQLによって所有され開発されているコミュニティフォークであるMariaDBリレーショナルデータベース管理システムをインストールして使用します。

要件:

  • FreeBSD 11.xの最小インストール。
  • ネットワークインターフェースに設定された静的IPアドレス。
  • root権限を持つ通常のアカウントまたはrootアカウントを介してシステムへの直接アクセス。
  • 可能であれば、最小限のDNSレコード(AおよびCNAMEレコード)が設定された公開登録ドメイン名。

ステップ1 – MariaDBデータベースのインストール

最初のステップでは、ウェブサイトの動的データを保存および管理するために使用されるFEMPコンポーネントであるMariaDBデータベースシステムをインストールします。MariaDB/MySQLは、NginxまたはApache Webサーバーと組み合わせて使用される世界で最も使用されているオープンソースリレーショナルデータベースの1つです。両方のサーバーは、複雑なWebアプリケーションや動的Webサイトを作成および開発するために広く利用されています。MariaDBは、PORTSリポジトリによって提供されるバイナリからFreeBSDに直接インストールできます。ただし、FreeBSD Portsデータベースセクションでlsコマンドを使用して簡単に検索すると、以下のコマンド出力に示すように、複数のバージョンのMariaDBが表示されます。また、パッケージマネージャーpkgコマンドを実行すると、同じ結果が表示されます。

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

FreeBSD 11用のMariaDBバージョン

このガイドでは、以下の抜粋に示すように、pkgコマンドを使用してMariaDBデータベースとクライアントの最新リリースをインストールします。

pkg install mariadb102-server mariadb102-client

MariaDBのインストールが完了したら、次のコマンドを発行してMySQLサーバーをシステム全体で有効にします。また、以下に示すようにMariaDBデーモンを起動することを確認してください。

sysrc mysql_enable="YES"
service mysql-server start

次に、mysql_secure_installationスクリプトを実行してMariaDBデータベースを保護する必要があります。スクリプトを実行すると、一連の質問がされます。これらの質問は、MySQLエンジンのセキュリティレベルを提供することを目的としており、MySQL rootユーザーのためのrootパスワードの設定、匿名ユーザーの削除、rootユーザーのリモートログインの無効化、テストデータベースの削除などが含まれます。MySQL rootユーザーのために強力なパスワードを選択した後、以下のスクリプトのサンプルに示すように、すべての質問にyesと答えてください。MariaDBデータベースのrootユーザーとシステムのrootユーザーを混同しないでください。これらのアカウントは同じ名前、rootを持っていますが、同等ではなく、システム管理とデータベース管理のために異なる目的で使用されます。

/usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
MariaDBにログインして保護するには、現在の
rootユーザーのパスワードが必要です。MariaDBをインストールしたばかりで、
まだrootパスワードを設定していない場合、パスワードは空白になります。
ここでEnterを押してください。
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
rootパスワードを設定することで、適切な認証なしに誰もMariaDBの

rootユーザーにログインできないようにします。

Set root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 … Success!

デフォルトでは、MariaDBのインストールには匿名ユーザーがあり、誰でも

ユーザーアカウントを作成せずにMariaDBにログインできます。これはテストのためだけに意図されており、インストールを少しスムーズにするためのものです。生産環境に移行する前に削除する必要があります。

Remove anonymous users? [Y/n] y

 … Success!

通常、rootは「localhost」からのみ接続を許可されるべきです。これにより、誰かがネットワークからrootパスワードを推測できないようになります。

Disallow root login remotely? [Y/n] y

 … Success!

デフォルトでは、MariaDBには誰でもアクセスできる「test」という名前のデータベースがあります。これもテストのためだけに意図されており、生産環境に移行する前に削除する必要があります。

Remove test database and access to it? [Y/n] y

 - Dropping test database…

 … Success!

 - Removing privileges on test database…

 … Success!

特権テーブルを再読み込みすると、これまでに行ったすべての変更が即座に有効になります。

Reload privilege tables now? [Y/n] y

 … Success!

クリーンアップ…

すべて完了しました!上記のすべてのステップを完了した場合、MariaDBの

インストールは安全になっているはずです。

MariaDBをご利用いただきありがとうございます!


最後に、MariaDBデータベースの保護が完了したら、次のコマンドを実行してrootアカウントからデータベースにローカルログインできるかどうかをテストします。データベースプロンプトに接続したら、quitまたはexitと入力してデータベースコンソールを離れ、システムユーザーコンソールプロンプトに戻ります。以下のスクリーンショットに示すように。

mysql -u root -p

MariaDB> quit


![MariaDBデータベースログインのテスト](/files/3e699722-6ea7-4ef9-9d5d-8e0fc2cbffec.png)

FreeBSDでsockstatコマンドを実行すると、MariaDBが外部ネットワーク接続に開かれており、3306/TCPポートを介して任意のネットワークからリモートアクセスできることがすぐにわかります。

sockstat -4 -6


![MariaDBソケットとポートの確認](/files/90a13ef3-b346-4546-8cd0-675043512bf7.png)

MariaDBへのリモートネットワーク接続を完全に無効にするには、次の行を/etc/rc.confファイルに追加して、mysqlネットワークソケットを*ループバック*インターフェースのみにバインドさせる必要があります。

sysrc mysql_args=”–bind-address=127.0.0.1”


その後、MariaDBデーモンを再起動して変更を適用し、再度sockstatコマンドを実行してmysqlサービスのネットワークソケットを表示します。この時、MariaDBサービスはlocalhost:3306ソケットのみにネットワーク接続をリッスンするはずです。

service mysql-server restart

sockstat -4 -6|grep mysql


![MariaDBがlocalhostインターフェースにバインドされている](/files/1e3bf770-3a3f-4154-9ec3-b3864369beca.png)

このマシン上のデータベースにアクセスする必要があるリモートWebアプリケーションを開発している場合は、/etc/rc.confファイルから*mysql_args="--bind-address=127.0.0.1"*で行ったMySQLソケットの変更を元に戻し、データベースを再起動して変更を反映させる必要があります。この場合、リモートログインが必要なクライアントのIPアドレスをフィルタリングするためにローカルでファイアウォールを実行するか、サーバーにログインするための適切なIPアドレスの権限を持つMySQLユーザーを作成するなど、リモートアクセスを制限または禁止するための他の代替手段を考慮する必要があります。

## ステップ2 – Nginx Webサーバーのインストール

次に、FreeBSDにFEMPスタックのためにインストールする重要なデーモンは、Nginxサービスで表されるWebサーバーです。FreeBSDにNginx Webサーバーをインストールするプロセスは非常に簡単です。Nginx Webサーバーは、FreeBSD 11.x Portsによって提供されるバイナリからインストールできます。wwwセクションのPortsリポジトリを簡単に検索すると、Nginxソフトウェアの事前コンパイルされたバージョンのリストが表示されます。以下のコマンド抜粋に示すように。

ls /usr/ports/www/ | grep nginx


パッケージ管理コマンドを発行すると、以下の画像に示すように同じ結果が表示されます。

pkg search –o nginx


![FreeBSDのNginxバージョンのリスト](/files/cd7a36aa-e2b2-4197-a735-a709d4ae9cc1.png)

FreeBSDに最も一般的なバージョンのNginxをインストールするには、以下のコマンドを実行します。バイナリパッケージをインストールする際、パッケージマネージャーはNginxパッケージのダウンロードとインストールに同意するかどうかを尋ねます。通常、インストールプロセスを開始するために、プロンプトで「yes」またはyと入力する必要があります。プロンプトを回避するには、コマンドを発行する際に–yフラグを追加します:pkg –y install nginx

pkg install nginx


![FreeBSDにNginxをインストール](/files/e41b0fc5-0abf-4c5e-89c3-18946e2b7cd6.png)

Nginx Webサーバーソフトウェアがシステムにインストールされたら、以下のコマンドを発行してサービスを有効にし、実行する必要があります。

sysrc nginx_enable=”yes”

service nginx start


sockstat**コマンドを実行して、Nginxサービスがシステムで開始されているかどうか、どのネットワークソケットにバインドされているかを確認できます。通常、*:80 TCPソケットにデフォルトでバインドされるはずです。grepコマンドラインフィルターを使用して、nginxサーバーに一致するソケットのみを表示できます。

sockstat -4 -6 | grep nginx


NginxのデフォルトWebページにアクセスするには、ネットワーク内のコンピュータでブラウザを開き、HTTPプロトコルを介してサーバーのIPアドレスに移動します。ドメイン名を登録している場合や、社内にローカルDNSサーバーを使用している場合は、ブラウザのURIフィールドにマシンの完全修飾ドメイン名またはドメイン名を入力できます。「*Welcome to nginx!*」というタイトルメッセージといくつかのHTML行がブラウザに表示されるはずです。以下のスクリーンショットに示すように。

- http://your_server_IP
- http://your_machine_FQDN
- http://yourdomain.com

![Nginxウェルカムページ](/files/1e3ed9f3-381c-497f-991c-742abb205a0b.png)

FreeBSD 11.xでNginxのWebファイルが保存される場所は、/usr/local/www/nginx/ディレクトリです。このディレクトリは、nginx-distディレクトリへのシンボリックリンクです。ウェブサイトを展開するには、HTMLまたはPHPスクリプトファイルをこのディレクトリにコピーします。Nginxのデフォルトの*webroot*ディレクトリを変更するには、/usr/local/etc/nginx/ディレクトリからNginx設定ファイルを開き、以下の例のようにrootステートメント行を更新します。

nano /usr/local/etc/nginx/nginx.conf


これがNginxの新しいwebrootパスになります。

root       /usr/local/www/new_html_directory;


![Nginx Webルートディレクトリの変更](/files/e621e739-6129-4030-a063-b4ebd79ac8e8.png)

## ステップ3 – PHPプログラミング言語のインストール

デフォルトでは、Nginx WebサーバーはPHPスクリプトを直接解析できません。Nginxは、PHPコードをPHP-FPMデーモンに渡すためにFastCGIゲートウェイを通過させる必要があります。PHP-FPMデーモンをFreeBSDにインストールするには、以下のコマンドを発行して利用可能なPHPの事前コンパイルされたバイナリパッケージを検索します。

ls /usr/ports/lang/ | grep php

pkg search –o php


FreeBSD Portsリポジトリに利用可能な多数のPHPバージョンの中から、現在のPHP 7.1リリースの最新バージョンのPHPインタープリターをインストールすることを選択し、以下のコマンドを発行します。

pkg install php71


複雑なWebアプリケーションを展開するために必要な場合がある追加のPHP拡張機能をインストールするには、以下のコマンドを発行します。公式にサポートされているPHP拡張機能のリストは、次のリンクを訪れることで見つけることができます:http://php.net/manual/en/extensions.alphabetical.php

コンテンツ管理システムに基づいたウェブサイトを構築する予定がある場合は、CMSのドキュメントを確認して、特に必要なPHPモジュールや拡張機能を確認してください。

php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-json


データベースサーバーをセットアップしているため、PHPインタープリターがMariaDBデータベースに接続するために使用されるPHPデータベースドライバー拡張機能もインストールする必要があります。

pkg install php71-mysqli


次に、PHP-FPM構成ファイルを編集して、Nginxランタイムユーザーに一致するようにPHP-FPMユーザーとグループを更新します。以下の抜粋のように、ユーザーとグループの行変数をwwwに変更します。

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

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


以下の行を次のように変更します。

user = www
group = www


****![PHPユーザーの変更](/files/34602231-dd7d-4464-8bcb-2b71cae706f6.png)

デフォルトでは、Nginxデーモンは「nobody」システムユーザーの権限で実行されます。NginxランタイムユーザーをPHP-FPMランタイムユーザーに一致させるために、/usr/local/etc/nginx/nginx.confファイルを編集し、以下の行を更新します。

user www;


![ユーザーwww](/files/6b9d55b6-1635-4698-bff7-92947efc766a.png)

デフォルトでは、FreeBSDのPHP-FPMデーモンは、リッスン状態で*localhost:9000* TCPポートにネットワークソケットを開きます。このソケットを表示するには、以下の例のようにsockstatコマンドを使用できます。

sockstat -4 -6| grep php-fpm


![php-fpmソケットの確認](/files/346b9e77-de92-4349-9761-13b500267234.png)

Nginx Webサーバーが*127.0.0.1:9000*ネットワークソケットでPHPスクリプトとPHP FastCGIゲートウェイを交換できるように、Nginx設定ファイルを開き、以下のサンプルのようにPHP-FPMブロックを更新します。

Nginx用のPHP FastCGIゲートウェイの例:

        location ~ .php$ {
        root               /usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;   
        include        fastcgi_params;
               }


![Nginx PHP設定](/files/5f845e2f-8110-4529-84e9-75261626ccc4.png)

上記のすべての変更を行った後、以下のコマンドを発行して、デフォルトのプロダクションファイルに基づいてPHPの構成ファイルを作成します。php.iniファイル内の変数を編集することで、PHPランタイム設定を変更できます。

ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini


最後に、これまでに行ったすべての変更を適用するために、PHP-FPMデーモンをシステム全体で有効にし、以下のコマンドを発行してPHP-FPMとNginxサービスを再起動します。

sysrc php_fpm_enable=yes

service php-fpm restart


Nginx構成の構文エラーをテストします。

nginx –t  

service nginx restart


![Nginx構文のテストと再起動](/files/b69d1612-d6a0-4291-b3c8-a3b70d825fd6.png)

FreeBSDのFEMPスタックに利用可能な現在のPHP情報を取得するには、以下のコマンドを発行してサーバーのドキュメントルートディレクトリにphpinfo.php**ファイルを作成します。

echo “” | tee /usr/local/www/nginx/phpinfo.php


その後、ブラウザを開き、サーバーのドメイン名またはパブリックIPアドレスに移動し、/phpinfo.phpファイルを追加してphpinfo.phpページにアクセスします。以下のスクリーンショットに示すように。

- http://192.168.1.50/phpinfo.php
- http://domain.com/phpinfo.php

![PHPinfo出力](/files/a2548844-f949-4914-8fce-2f736f45eb15.png)

以上です!FreeBSD 11にFEMPスタックを正常にインストールおよび構成しました。環境は現在、動的Webアプリケーションを展開するために完全に機能しています。
Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。