使用環境
Mac mini (M1, 2020)
macOS Sequoia 15.3.1
FileMaker Server 21.1.1.40
テスト環境用に FileMaker Server 兼 Web サーバ にしてしまう
私は、通常 Ubuntu(AMD) 版の FileMaker Server を使用していますが、テスト環境用に、Mac mini (M1, 2020) で、macOS 版も使用しています。
Ubuntu 版の登場で、色々と都合が良くなったりしていますが、macOS 版もまだまだ使っています。
FileMaker Server にした Mac を Web サーバとしても設定したいという要請はあると思いますが、PHP がそのままでは動かない、また、Mac のセキュリティの問題もあって、Ubuntu 版とは少々、違った作業が必要になります。
PHP をインストールしてしまう
FileMaker Server が既にインストールされている前提で、Mac への PHP のインストールは、Homeberew を使うのが簡便でしょう。詳細は Homebrew サイトを参照してもらうとして、最低限度でコマンドだけ書いておきます。
% brew install php
これで最新版の PHP がインストールできます。もし、バージョン選択したい場合は、次のコマンドでインストール可能なバージョンを確認します。
% brew search php
例えば、8.1 をインストールしたいときは、
% brew install php@8.1
以上で、PHP のインストールは完了するので、php -v
等で、存在を確認しておけばいいでしょう。
ここまでは、なんてことのない作業ですが、Mac の場合、未署名のソフトウェア、この場合、 libphp.so になりますが、そのまま使用することができません。
Command Line Tools for Xcode のインストール
libphp.so にコード署名するためのコマンドが含まれている Command Line Tools for Xcode をインストールします。
% xcode-select --install
これで、コード署名ができるようになります。
認証局の作成
自己署名用の証明書を発行する認証局を作成しておくと、Web サーバとして Mac を SSL 化してテストするのに便利ですし、認証局発行の証明書をデフォルトで信頼とすることもできますし、キーチェーンアクセスも見やすくなります。
これには、「キーチェーンアクセス」アプリケーションを使用しますが、macOS Sequoia では、アプリケーションの場所が、/System/Library/CoreServices/Application/
に移動しています。それ以前の場合は、/System/Applications/Utilities/
にあります。
起動すると、macOS Sonima 以降は、「パスワード」を開くか「キーチェーンアクセス」を開くか聞いてくるので、「キーチェーンアクセス」を選択して開きます。
認証局を作成
起動したら、左のペインで、ログイン
を選んで、キーチェーン > 証明書アシスタント > 認証局作成...
を選び、以下のように設定します。
- 名前: 任意の認証局名(ex. Qiita CA)
- 固有名のタイプ: 自己証明ルート CA
- コード署名
- ✅ デフォルトを無効化
- ✅ この CA をデフォルトにする
- メールの送信元: (メールアドレス)
証明書情報
続ける
をクリックし、次のページに進み、以下の設定をします。
- シリアル番号: 1
- 有効期間(日数): 任意の日数(ex. 5年なら 1826)
- (他のチェック項目はチェックしない)
証明書情報(2ページ目)
続ける
をクリックし、次のページに進み、以下の設定をします。
- メールアドレス: (メールアドレス)
- 名前: 設定した認証局名
- 組織: (会社名 ex. Apple inc.)
- 部署: (部署 ex. iPhone Development Division)
- 都市(地域): (市区町村 ex. Yokohama)
- 都道府県/州: (ex. Kanagawa)
- 国または地域: JP
この CA の鍵ペア情報
続ける
をクリックし、次のページに進み、以下の設定をします。
- 鍵のサイズ: 2048 ビット
- アルゴリズム RSA
この CA のユーザが使う鍵ペア情報を指定
- 鍵のサイズ: 2048 ビット
- アルゴリズム RSA
この CA が使う鍵用途拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- ✅ 鍵用途拡張領域を含める
- ✅ 署名
- ✅ 証明書署名
この CA のユーザが使う鍵用途拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- ✅ 鍵用途拡張領域を含める
- ✅ この拡張領域は重要
- ✅ 署名
この CA が使う拡張鍵用途拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- ✅ 拡張鍵用途拡張領域を含める
- ✅ 任意
- ✅ コード署名
この CA のユーザが使う拡張鍵用途拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- ✅ 拡張鍵用途拡張領域を含める
- ✅ この拡張領域は重
- ✅ コード署名
この CA が使う基本制約拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- ✅ 基本制約拡張領域を含める
- ✅ この証明書を認証局として使用
この CA のユーザが使う基本制約拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
何もチェックしない
この CA が使うサブジェクト代替名拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
何もチェックしない
この CA のユーザが使うサブジェクト代替名拡張領域
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- ✅ サブジェクト代替名拡張領域を含める
証明書の場所を指定
続ける
をクリックし、次のページに進み、以下の設定をします。
次の項目にチェックを入れ、他はチェックしない
- キーチェーン: ログイン
- ✅ このコンピュータ上ではこの CA に署名された証明書を信頼
作成
をクリックして認証局を作成します。
設定結果
が表示されたら、確認後、ウィンドウを閉じます。
コード署名の証明書の作成
作成した認証局を使って、証明書を作成します。
キーチェーンアクセス > 証明書アシスタント > 証明書を作成...
を選択します。
証明書を作成
- 名前: (証明書の名前 ex FileMaker Server Admin)
- 固有名のタイプ: リーフ
- 証明書のタイプ: コード署名
発行者を選択
続ける
をクリックし、次のページに進み、先ほど作った認証局を選択し、作成
をクリックします。
コード署名の準備はこれで完了です。
コード署名する
証明書が出来たので、その証明書を使って署名します。パスは Homebrew 使って PHP をインストールしている場合を想定して書いていますので、適宜、読み替えてください。
尚、この部分の作業はローカルで行う必要があります。リモートでは出来ません。
Apple Silicon 搭載の Mac の場合
codesign --sign "(発行した証明書名)" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Intel Mac の場合
codesign --sign "(発行した証明書名)" --force --keychain ~/Library/Keychains/login.keychain-db /usr/local/opt/php/lib/httpd/modules/libphp.so
これでコード署名済みの libphp.so が出来ました。
次のコマンドで確認できます。
Apple Silicon 搭載の Mac の場合
codesign -vd /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Intel Mac の場合
codesign -vd /usr/local/opt/php/lib/httpd/modules/libphp.so
正しく署名ができていれば、次のような情報が表示されます。
Executable=/opt/homebrew/Cellar/php/8.4.4/lib/httpd/modules/libphp.so
Identifier=libphp
Format=Mach-O thin (arm64)
CodeDirectory v=20400 size=159679 flags=0x0(none) hashes=4985+2 location=embedded
Signature size=3088
Signed Time=Feb 28, 2025 at 11:11:44
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=84
httpd.conf.2.4 の編集
FileMaker Server の Apache の設定は、httpd.conf を編集するのではなく、httpd.conf.2.4 を編集し、FileMaker Server 起動時にそれを読み込ませるという方法が採られています。
まず、デフォルトの httpd.conf.2.4 をバックアップしておきます。
% cd /Library/FileMaker\ Server/HTTPServer/conf/
% cp httpd.conf.2.4 httpd.conf.2.4_default
編集を開始します。ここでは vi
を使いますが、お好きなエディタでもちろん構いません。
% vi httpd.conf.2.4
LoadModule
の行が沢山あるので、一番下の LoadModule hfs_apple_module /usr/libexec/apache2/mod_hfs_apple.so
の次の行にインサートモード(i を打つ)で追加します。
# Added by me (20250228)
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "(発行した証明書名)"
パスは、Homebrew でインストールした PHP かつ Apple Silicon の Mac です。Intel Mac の場合は、以下のようになります。
# Added by me (20250228)
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so "(発行した証明書名)"
次に、インサートモードを抜けて(esc を打つ)、htdocs
で検索します。
/htdocs
以下のように再び、インサートモードで書き換えます。
DocumentRoot "${HTTP_ROOT}/htdocs"
<Directory "${HTTP_ROOT}/htdocs">
#AllowOverride none
#Options None
#Require all granted
AllowOverride All
Options Multiviews FollowSymLinks
MultiviewsMatch Any
Require all granted
</Directory>
次に、インサートモードを抜けて、DirectroyIndex
で検索します。
/DirectroyIndex
以下のように再び、インサートモードで書き換えます。
<IfModule dir_module>
#DirectoryIndex index.html
DirectoryIndex index.html index.php
</IfModule>
次に、インサートモードを抜けて、FilesMatch
で検索し、<FilesMatch "\.php$">
を探し、次のように書き換えます。
<FilesMatch "\.php$">
# Require all denied
SetHandler application/x-httpd-php
Require all granted
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
Require all granted
</FilesMatch>
続いて、最下行まで移動して、次のようインサートモードで追加します。
# Added by me (20250228)
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
インサートモードを抜けて保存終了します。
:wq
Admin Console での設定
Admin Console で、FileMaker Server マシンが Web サーバとしても機能するように設定しておく必要があります。
コネクタ > Web 公開 > Web 公開エンジン
をオンにします。
FileMaker Server の再起動 2回
2回続けて、FileMaker Server を再起動します。
% sudo /Library/FileMaker\ Server/HTTPServer/bin/httpdctl restart
% sudo /Library/FileMaker\ Server/HTTPServer/bin/httpdctl restart
phpinfo() で確認
phpinfo() を表示させて、PHP が動作しているか確認します。
% cd /Library/FileMaker\ Server/HTTPServer/htdocs/httpsRoot/
% vi phpinfo.php
インサートモードにして、次のコードを入力し、保存終了します。
<?php phpinfo();
ブラウザで、FileMaker Server の phpinfo.php にアクセスします。
https://(FileMaker Server のドメイン名)/phpinfo.php
phpinfo() の情報が表示されれば成功です。
CGI、SSI、autoindex 等、設定したい項目があれば、同じように httpd.conf.2.4 を編集して設定していくことになります。
小技を python、ruby、node、R 等で作っておいて、FileMaker Server から実行するということも設定次第で可能になります。