著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。

序章

LinuxのLAMPスタックに似たFAMPスタックは、FreeBSDサーバーが動的なWebサイトやWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 FAMPは、 F reeBSD(オペレーティングシステム)、 A pache(Webサーバー)、 M ySQL(データベースサーバー)、およびの頭字語です。 P HP(動的なPHPコンテンツを処理するため)。

このガイドでは、FreeBSDパッケージマネージャーであるpkgを使用して、FreeBSD12.0クラウドサーバーにFAMPスタックをインストールします。

前提条件

このガイドを開始する前に、次のものが必要です。

  • FreeBSD12.0ドロップレット
  • 構成を変更するためのroot権限を持つ(またはsudoを使用して許可された)ユーザーへのアクセス。
  • 新しいFreeBSD12.0サーバーの推奨手順でこのチュートリアルを使用して構成されたファイアウォール。 セットアップの一環として、ポート80および443を開いていることを確認してください。
  • CLI(コマンドラインインターフェイス)に精通していることをお勧めします。 FreeBSDのviエディタは、vimとほぼ同じ構文を持っています。

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

Apache Webサーバーは現在、世界で最も人気のあるWebサーバーであり、Webサイトをホストするのに最適です。

FreeBSDのパッケージマネージャーpkgを使用してApacheをインストールできます。 パッケージマネージャーを使用すると、FreeBSDが管理するリポジトリからほとんどのソフトウェアを簡単にインストールできます。 pkgの使用方法について詳しくはこちらをご覧ください。

pkgを使用してApache2.4 をインストールするには、次のコマンドを使用します。

  1. sudo pkg install apache24

確認プロンプトでyと入力して、Apacheとその依存関係をインストールします。

Apacheをサービスとして有効にするには、apache24_enable="YES"/etc/rc.confファイルに追加します。 sysrcコマンドを使用して、次のことを実行します。

  1. sudo sysrc apache24_enable="YES"

次に、Apacheを起動します。

  1. sudo service apache24 start

Apacheが起動したことを確認するには、次のコマンドを実行できます。

  1. sudo service apache24 status

その結果、次のようなものが表示されます。

Output
apache24 is running as pid 20815.

WebブラウザでサーバーのパブリックIPアドレスにアクセスすると、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます。 この情報をまだ持っていない場合は、次の見出しの下にあるメモを参照して、パブリックIPアドレスを確認してください。

http://your_server_IP_address/

テスト目的でそこにあるデフォルトのFreeBSDApacheWebページが表示されます。 It Works!が表示されます。これは、Webサーバーが正しくインストールされていることを示します。

サーバーのパブリックIPアドレスを見つける方法

サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。

DigitalOceanを使用している場合は、コントロールパネルでサーバーのIPアドレスを確認できます。 次のコマンドを使用して、サーバー自体からDigitalOceanメタデータサービスを使用することもできます:curl -w "\n" http://169.254.169.254/metadata/v1/interfaces/public/0/ipv4/address

IPアドレスを検索するためのより一般的な方法は、サーバー自体でifconfigコマンドを使用することです。 ifconfigコマンドは、ネットワークインターフェイスに関する情報を出力します。 サーバーのパブリックIPアドレスのみに出力を絞り込むには、次のコマンドを使用します(強調表示されている部分はネットワークインターフェイスの名前であり、異なる場合があります)。

  1. ifconfig vtnet0 | grep "inet " | awk '{ print $2; exit }'

curlを使用して、 icanhazip などの外部の関係者に連絡し、サーバーがどのように認識されているかを知らせることもできます。 これは、特定のサーバーにIPアドレスを尋ねることによって行われます。

  1. curl http://icanhazip.com

パブリックIPアドレスを取得したので、WebブラウザのアドレスバーでパブリックIPアドレスを使用して、Webサーバーにアクセスできます。

ステップ2—MySQLをインストールする

Webサーバーが稼働しているので、リレーショナルデータベース管理システムであるMySQLをインストールします。 MySQLサーバーは、サーバーが情報を格納できるデータベースを整理してアクセスを提供します。

ここでも、pkgを使用して、ソフトウェアを取得してインストールできます。

pkgを使用してMySQL8.0 をインストールするには、次のコマンドを使用します。

  1. sudo pkg install mysql80-server

確認プロンプトでyと入力して、MySQLサーバーとクライアントパッケージをインストールします。

MySQLサーバーをサービスとして有効にするには、mysql_enable="YES"/etc/rc.confファイルに追加します。 sysrcコマンドを使用して、次のことを実行できます。

  1. sudo sysrc mysql_enable="YES"

次に、次のコマンドを使用してMySQLサーバーを起動します。

  1. sudo service mysql-server start

サービスが稼働していることを確認できます。

  1. sudo service mysql-server status

次のようなものを読みます。

Output
mysql is running as pid 21587.

MySQLデータベースが実行されているので、いくつかの危険なデフォルトを削除し、データベースシステムへのアクセスをわずかに制限する単純なセキュリティスクリプトを実行する必要があります。 次のコマンドを実行して、対話型スクリプトを開始します。

  1. sudo mysql_secure_installation

パスワードを設定するかどうかを尋ねるプロンプトが表示されます。 MySQLをインストールしたばかりなので、MySQLがない可能性が高いので、Yと入力して、次の手順に従います。

 Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

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: 0
Please set the password for root here.

New password:  password

Re-enter new password:  password

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

残りの質問については、各プロンプトでyキーを押して、推奨される安全な値を受け入れる必要があります。 これにより、一部のサンプルユーザーとデータベースが削除され、リモートrootログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。

この時点で、データベースシステムがセットアップされ、PHPのインストールに進むことができます。

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

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

もう一度pkgシステムを利用してコンポーネントをインストールできます。 mod_phpphp-mysql、およびphp-mysqliパッケージも含めます。

pkgとともにPHP7.3 をインストールするには、次のコマンドを実行します。

  1. sudo pkg install php73 php73-mysqli mod_php73

確認プロンプトでyと入力します。 これにより、php73mod_php73、およびphp73-mysqliパッケージがインストールされます。

次に、次のコマンドを使用して、サンプルのPHP構成ファイルを所定の場所にコピーします。

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

次に、rehashコマンドを実行して、インストールされている実行可能ファイルに関するシステムのキャッシュ情報を再生成します。

  1. rehash

PHPを使用する前に、Apacheで動作するようにPHPを構成する必要があります。

PHPモジュールのインストール(オプション)

PHPの機能を強化するために、オプションでいくつかの追加モジュールをインストールできます。

PHP 7.3 モジュールおよびライブラリで使用可能なオプションを確認するには、次のように入力します。

pkg search php73

結果は主に、インストールできるPHP 7.3モジュールになります。

Output
php73-7.3.5 PHP Scripting Language php73-aphpbreakdown-2.2.2 Code-Analyzer for PHP for Compatibility Check-UP php73-aphpunit-1.8 Testing framework for unit tests php73-bcmath-7.3.5 The bcmath shared extension for php php73-brotli-0.6.2 Brotli extension for PHP php73-bsdconv-11.5.0 PHP wrapper for bsdconv php73-bz2-7.3.5 The bz2 shared extension for php php73-calendar-7.3.5 The calendar shared extension for php php73-composer-1.8.4 Dependency Manager for PHP php73-ctype-7.3.5 The ctype shared extension for php php73-curl-7.3.5 The curl shared extension for php php73-dba-7.3.5 The dba shared extension for php php73-deployer-6.4.3 Deployment tool for PHP php73-dom-7.3.5 The dom shared extension for php ...

各モジュールの機能の詳細については、インターネットを検索するか、次のように入力してパッケージの詳細な説明を確認してください。

  1. pkg search -f package_name

モジュールが提供する機能の説明があるコメントと呼ばれる1つのフィールドで、多くの出力があります。

たとえば、php73-calendarパッケージの機能を確認するには、次のように入力します。

  1. pkg search -f php73-calendar

他の大量の情報とともに、次のようなものが見つかります。

Output
php73-calendar-7.3.5 Name : php73-calendar Version : 7.3.5 ... Comment : The calendar shared extension for php ...

調査の結果、パッケージをインストールすることにした場合は、pkg installコマンドを使用してインストールできます。

たとえば、php73-calendarが必要なものであると判断した場合は、次のように入力できます。

  1. sudo pkg install php73-calendar

一度に複数のモジュールをインストールする場合は、次のようにpkg installコマンドに従って、スペースで区切って各モジュールを一覧表示することでインストールできます。

  1. sudo pkg install package1 package2 ...

ステップ4—PHPモジュールを使用するようにApacheを構成する

Apache HTTPには、特定のモジュールの構成ファイルを書き込むための専用ディレクトリがあります。 PHPを「話す」ために、ApacheHTTP用のこれらの構成ファイルの1つを作成します。

  1. sudo vi /usr/local/etc/apache24/modules.d/001_mod-php.conf

そのファイルに次の行を追加します。

/usr/local/etc/apache24/modules.d/001_mod-php.conf
<IfModule dir_module>
    DirectoryIndex index.php index.html
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
</IfModule>

次に、ApacheのHTTP構成が良好な状態にあることを確認します。

  1. sudo apachectl configtest

次の出力が表示されます。

Output
Performing sanity check on apache24 configuration: Syntax OK

Apacheで構成を変更したため、それらを適用するにはサービスを再起動する必要があります。 それ以外の場合、Apacheは以前の構成で引き続き機能します。

  1. sudo apachectl restart

これで、システムでのPHPのテストに進むことができます。

ステップ5—PHP処理のテスト

システムがPHP用に適切に構成されていることをテストするために、非常に基本的なPHPスクリプトを作成できます。

このスクリプトをinfo.phpと呼びます。 Apacheがファイルを見つけて正しく提供するには、特定のディレクトリ[DocumentRoot)に保存する必要があります。このディレクトリで、ユーザーがWebサーバーにアクセスしたときにApacheがファイルを検索します。 DocumentRootの場所は、前に変更したApache構成ファイル(/usr/local/etc/apache24/httpd.conf)で指定されています。

デフォルトでは、DocumentRoot/usr/local/www/apache24/dataに設定されています。 次のように入力すると、その場所にinfo.phpファイルを作成できます。

  1. sudo vi /usr/local/www/apache24/data/info.php

これにより、空のファイルが開きます。 このPHPコードをファイルに挿入します。

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

保存して終了。

これで、WebサーバーがPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 これを試すには、Webブラウザで次のページにアクセスしてください。

http://your_server_IP_address/info.php

PHPFreeBSDテストページが表示されます。

FreeBSD info.php

このページでは、PHPの観点からサーバーに関する情報を提供します。 デバッグや、設定が正しく適用されていることを確認するのに役立ちます。

これが成功した場合、PHPは期待どおりに機能しています。

このファイルは、許可されていないユーザーにサーバーに関する情報を実際に提供する可能性があるため、このテストの後で削除する必要があります。 これを行うには、次のように入力します。

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

後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。

結論

FAMPスタックがインストールされたので、次に何をするかについて多くの選択肢があります。 サーバーにほとんどの種類のWebサイトとWebソフトウェアをインストールできるプラットフォームをインストールしました。