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 mariadbpkg search mariadb
このガイドでは、以下の抜粋に示すように、pkgコマンドを使用してMariaDBデータベースとクライアントの最新リリースをインストールします。
pkg install mariadb102-server mariadb102-clientMariaDBのインストールが完了したら、次のコマンドを発行して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_installationNOTE: 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
 FreeBSDでsockstatコマンドを実行すると、MariaDBが外部ネットワーク接続に開かれており、3306/TCPポートを介して任意のネットワークからリモートアクセスできることがすぐにわかります。
sockstat -4 -6
 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
 このマシン上のデータベースにアクセスする必要があるリモート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をインストールするには、以下のコマンドを実行します。バイナリパッケージをインストールする際、パッケージマネージャーはNginxパッケージのダウンロードとインストールに同意するかどうかを尋ねます。通常、インストールプロセスを開始するために、プロンプトで「yes」またはyと入力する必要があります。プロンプトを回避するには、コマンドを発行する際に–yフラグを追加します:pkg –y install nginx。
pkg install nginx

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

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;

## ステップ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
****
デフォルトでは、Nginxデーモンは「nobody」システムユーザーの権限で実行されます。NginxランタイムユーザーをPHP-FPMランタイムユーザーに一致させるために、/usr/local/etc/nginx/nginx.confファイルを編集し、以下の行を更新します。
user www;
 デフォルトでは、FreeBSDのPHP-FPMデーモンは、リッスン状態で*localhost:9000* TCPポートにネットワークソケットを開きます。このソケットを表示するには、以下の例のようにsockstatコマンドを使用できます。
sockstat -4 -6| grep php-fpm
 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;
}

上記のすべての変更を行った後、以下のコマンドを発行して、デフォルトのプロダクションファイルに基づいて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
 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

以上です!FreeBSD 11にFEMPスタックを正常にインストールおよび構成しました。環境は現在、動的Webアプリケーションを展開するために完全に機能しています。新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。