ウェブサイト検索

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


このチュートリアルでは、FreeBSD 11.x 最新リリースで FBEMP をインストールして構成する方法を説明します。 FBEMP は、次のソフトウェアのコレクションを表す頭字語です。

FreeBSD 11.1 Unix 風のディストリビューション、Nginx Web サーバー、MariaDB リレーショナル データベース管理システム (MySQL のコミュニティ フォーク)、およびサーバー側で実行される PHP 動的プログラミング言語。

要件

  1. FreeBSD 11.x のインストール
  2. FreeBSD のインストール後にやるべき 10 のこと

ステップ 1: FreeBSD に Nginx Web サーバーをインストールする

1. FreeBSDFBEMP スタックにインストールする最初のサービスは、Nginx で表される Web サーバーです。 > ソフトウェア。

Nginx Web サーバーには、FreeBSD 11.x ポートで利用できるさらに多くのコンパイル済みパッケージがあります。 ポートリポジトリからNginxバイナリのリストを取得するには、サーバーターミナルで次のコマンドを実行します。

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. この特定の構成では、以下のコマンドを実行して、Nginx のメイン パッケージ バージョンをインストールします。 pkg パッケージ管理では、nginx パッケージのインストールを続行するかどうかを尋ねられます。インストール プロセスを開始するには、「はい」(コマンド ラインでは y) と答えます。

pkg install nginx

3. Nginx Web サーバー パッケージがシステムにインストールされたら、次のコマンドを実行してシステム全体でデーモンを有効にし、システムでサービスを開始します。

sysrc nginx_enable="yes"
service nginx start

4. 次に、sockstat コマンドを使用して、以下のコマンドを発行して、Nginx サービス ネットワーク ソケットが 80/TCP ポートにバインドされているかどうかを確認します。指示。返される結果を nginx 文字列のみに減らすために、sockstat コマンドの出力は grep ユーティリティを介してパイプ処理されます。

sockstat -4 | grep nginx

5. 最後に、ネットワーク内のデスクトップ コンピュータでブラウザを開き、HTTP プロトコル経由で Nginx のデフォルト Web ページにアクセスします。ブラウザの URL フィールドにマシンのFQDN、ドメイン名、またはサーバーの IP アドレスを書き込み、Nginx Web サーバーのデフォルト Web ページをリクエストします。以下のスクリーンショットに示すように、「nginx へようこそ!」というメッセージがブラウザに表示されます。

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

6. Nginx Web コンテンツのデフォルトの weboot ディレクトリは、/usr/local/www/nginx/ 絶対システム パスにあります。この場所で、Web サイトの .html ファイルや .php ファイルなどの Web コンテンツ ファイルを作成、コピー、またはインストールする必要があります。

この場所を変更するには、nginx メイン設定ファイルを編集し、新しい Webroot パスを反映するように root ディレクティブを変更します。

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

ここで、次の行を検索して更新し、新しい Webroot パスを反映します。

root	/path/to/new/webroot;

ステップ 2: PHP を FreeBSD にインストールする

7. Apache HTTP サーバーとは異なり、Nginx には PHP コードをネイティブに処理する機能がありません。その代わりに、Nginx Web サーバーは PHP リクエストを PHP インタープリター (php-fpm FastCGI デーモンなど) に渡し、コードを検査して実行します。結果のコードは Nginx に返され、Nginx はコードを要求された HTML 形式に再アセンブルして、コードを訪問者の Web ブラウザーに送信します。

FreeBSD 11.x ポート リポジトリは、PHP 5.6PHP 7.0PHP 7.1< などの PHP プログラミング言語の複数のバイナリ バージョンを提供します。 をリリースします。 FreeBSD 11.x で利用可能なすべてのプリコンパイル済み PHP バージョンを表示するには、以下のコマンドを実行します。

pkg search -o php
ls /usr/ports/lang/ | grep php

8. システムで実行する Web アプリケーションに最適な PHP バージョンを選択してインストールできます。ただし、このガイドでは PHP の最新バージョンをインストールします。

PHP 7.1 リリースと、さまざまな Web アプリケーションに必要ないくつかの PHP 重要モジュールをインストールするには、次のコマンドを実行します。

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. システムに PHP パッケージをインストールした後、Nginx の PHP-FPM 構成ファイルを開き、Nginx ランタイムの値と一致するようにユーザーとグループの値を調整します。ユーザー、つまり www です。まず、以下のコマンドでファイルのバックアップを作成します。

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

次に、ファイルを開き、以下のサンプルに示されているように次の行を更新します。

user = www
group = www

10. また、以下のコマンドを実行して、運用に使用する PHP 構成ファイルを作成します。このファイルでは、実行時に PHP インタープリターに適用されるカスタム変更を加えることができます。

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

たとえば、以下の例に示すように、マシンの物理的な場所を更新するには、PHP インタープリターの date.timezone 設定を変更します。 PHP タイムゾーンのリストは、http://php.net/manual/en/timezones.php で参照できます。

vi /usr/local/etc/php.ini

次のタイムゾーンを追加します (国に応じてタイムゾーンを設定します)。

date.timezone = Europe/London

アップロードされたファイルの最大ファイル サイズなど、他の PHP 変数を調整することもできます。以下の値を変更することで増やすことができます。

upload_max_filesize = 10M
post_max_size = 10M

11. PHP のカスタム設定を行った後、以下のコマンドを実行して新しい設定を適用するために PHP-FPM デーモンを有効にして起動します。

sysrc php_fpm_enable=yes
service php-fpm start

12. デフォルトでは、FreeBSD の PHP-FPM デーモンはポート 9000/TCP 上のローカル ネットワーク ソケットにバインドします。 PHP-FPM ネットワーク ソケットを表示するには、次のコマンドを実行します。

sockstat -4 -6| grep php-fpm

13. Nginx Web サーバーが 127.0.0.1:9000 ソケットでリッスンしている FastCGI ゲートウェイ サーバーに PHP スクリプトを渡すために、 Nginx メイン構成ファイルを開き、以下のサンプルに示すように、次のコード ブロックを追加します。

vi /usr/local/etc/nginx/nginx.conf

nginx の 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;
        	}

14. サーバーの現在の PHP 情報を表示するには、次のコマンドを実行して、Nginx weboot パスに info.php ファイルを作成します。

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. 次に、Nginx デーモンをテストして再起動して PHP FastCGI 設定を適用し、ブラウザで info.php ページにアクセスします。

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

以下のリンク内の IP アドレスまたはドメイン名を適宜置き換えてください。 PHP 情報ページには、以下のスクリーンショットに示すような情報が表示されます。

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

ステップ 3: FreeBSD に MariaDB をインストールする

16. データベースの FEMP スタックから欠落している最後のコンポーネント。 MariaDB/MySQL は、動的 Web サイトの展開に使用される Nginx Web サーバーと最も関連性の高いオープン ソース RDBMS ソフトウェアの 1 つです。

実際、MariaDB/MySQL は世界で最も使用されているリレーショナル データベースの 1 つです。 FreeBSD ポートを検索すると、MariaDB/MySQL の複数のリリースが見つかります。

このガイドでは、MySQL データベースのコミュニティ フォークである MariaDB データベースをインストールします。 MariaDB の利用可能なバージョンを検索するには、ターミナルで次のコマンドを実行します。

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

17. 最新バージョンの MariaDB データベース サーバーをインストールするには、次のコマンドを実行します。 MySQL に接続するために PHP スクリプトで使用される PHP リレーショナル データベース ドライバー モジュールもインストールする必要があります。

pkg install mariadb102-server php71-mysqli

18. データベースがインストールされたら、次のコマンドを実行して MySQL デーモンを有効にし、データベース サービスを開始します。

sysrc mysql_enable="YES" 
service mysql-server start

19. また、MySQL ドライバー拡張機能をロードするために、PHP-FPM デーモンを必ず再起動してください。

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/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!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

21. コンソールから MariaDB データベース接続をテストするには、以下のコマンドを実行します。

mysql -u root -p -e "show status like ‘Connections’"

22. MariaDB のセキュリティをさらに強化するには、デフォルトで 0.0.0.0:3306/TCP ソケットで受信ネットワーク接続をリッスンし、以下のコマンドを発行してサービスを強制します。 ループバックインターフェイスにバインドし、リモート アクセスを完全に禁止します。その後、MySQL サービスを再起動して新しい構成を適用します。

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

次の例に示すように netstat コマンドを実行して、ローカルホスト バインディングが正常に適用されたかどうかを確認します。

netstat -an -p tcp

それだけです! Nginx Web サーバー、MariaDB リレーショナル データベース、および PHP サーバー側プログラミング言語を FreeBSD に正常にインストールしました。これで、訪問者に Web コンテンツを提供するための動的な Web ページの構築を開始できます。