M1 MontereyにApacheとPHPの環境を構築する方法

2021/12/11

Apache Apple AppleSilicon PHP Web 開発

M1 Mac Monterey Apache PHP 環境構築

こんにちはICHIKENです。

Apple Silicon macOS 12 MontereyにPHP + Apache + MySQLのWeb開発環境を入れるのにだいぶすったもんだしましたので、正解のやり方共有します。

サクっと行かない背景として以下が挙げられます。

  • macOS12 MontereyではPHPが標準バンドルから除外された
  • HomebrewのPHPが標準バンドルApacheと相性が悪い

というわけで、標準Apacheを消してHomebrew PHPとHomebrew Apacheにすることで動作に成功しました。またHomebrewで入れたApacheのパスがネットに多くある情報と異なるので設定変更に苦戦するというオマケまでついてきます。どうやらApple SiliconとIntelでHomebrewのパスが違うようなんですよね。メンドクサ〜。

バージョンにこだわらないのであれば、MAMPやXAMPPなどのApacheとPHPがバンドルされてるアプリを入れたほうが手っ取り早いと思われます。

本記事ではApache2.4とPHP8.1の組み合わせでサクサク設定していきます。

前提条件

まず前提条件となる私の環境です。バージョンは個人の環境に合わしてください。

PC M1 MacBook Air (2021)
Mac OS Monterey 12.0.1
Homebrew 3.3.5
PHP 8.1.0
Apache 2.4.51
MySQL 8.0.27

AppleシリコンへPython主要ツールを入れる方法はこちら。

M1Macにnumpy | matplotlib | pandasをインストール

Apacheインストール

まずは悪名高き標準Apache2.4の代わりにHomebrewのApacheをインストールしていきます。

インストールと動作確認

すでに標準Apacheが動いている場合は、まずその息の根を止めます。動作を止めて、自動起動を停止。

sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

次に、Homebrew経由でApacheをインストール。

brew install httpd

Apacheが自動起動するように設定。

brew services start httpd

この時点でApacheが正常に動いているかどうか確認してみましょう。下記リンクで「It works!」ページが表示されればOK。

http://localhost:8080/
It works!

うまく行かない場合はサーバーが動いているかどうか確認します。

動いているかどうかは下記コマンドで確認。

ps -aef | grep httpd

とりあえず必殺の再起動。

brew services restart httpd

再起動でダメなら、何が問題なのか立ち上げ時のログから追う必要があると思われます。

設定ファイルのバックアップ

コンフィグファイルがネットにある情報と違っていて見つけるのに時間がかかりました。君こんなところにいたのね!て感じです。

まずは、バックアップを念の為作成します。記述をちょっとでも失敗するとApacheが立ち上がらなくなりますので。

「cp コピー元 コピー先」でコピーが作成できます。

cp /opt/homebrew/etc/httpd/httpd.conf /opt/homebrew/etc/httpd/httpd_copy.conf
設定ファイルのコピー作成と確認

今回はhttpd_copy.confとしましたが、拡張子に日付をつけてバックアップにしたりしてます。

Port変更

ではApacheの設定を変更していきます。

今回はテキストエディタでコンフィグファイルを開いて編集していきますが、もちろんエディタは何でも良いです。

open -e /opt/homebrew/etc/httpd/httpd.conf

Listen 8080を下記のようにHTTPの80番に変更します。

Listen 80
listenポートの設定

Web公開フォルダをローカルフォルダに変更

ドキュメントのルート(Web公開フォルダ)を変更していきます。

今回私はこの日報登録Webアプリ開発環境を構築しますのでフォルダ構成もここのものになります。

https://github.com/ichiken-usa/workwell

デフォルトのDocumentRoot "/opt/homebrew/var/www"を設定したいフォルダに変更します。例えば私の場合はこれ。

DocumentRoot "/Users/ichiken/VSCode/workwell/Web"

そのすぐ下にある<Directory>タグも変更します。

<Directory "/Users/ichiken/VSCode/workwell/Web">
DocumentRootの設定

<Directory>タグの中にあるAllowOverrideをNoneからAllに変更。

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
AllowOverrideの設定

rewite moduleを有効にするためにコメントアウトされているこのモジュールの#を消します。

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

下のスクショはすでにPHPの設定が入っっちゃっていますが、この設定段階では上のモジュールが最下段にあるはずです。PHPの設定はPHPインストール後に解説しています。

LoadModuleの設定

rewite moduleについてはこちら

Apache mod_rewrite Introduction

サーバー名変更

サーバー名をデフォルトのコメントアウト#ServerName www.example.com:8080からlocalhostに変更します。

ServerName localhost
サーバー名設定

設定変更は以上ですので、上書き保存してください。

動作確認

上で設定したWeb公開フォルダにテスト用のhtmlファイルを設置してテスト表示してみましょう。

私の場合は以下のようなテストファイルを作成しました。

/Users/ichiken/VSCode/workwell/Web/hello-world.html

<h1>Hello World</h1>
テスト用のHello world

Apacheを再起動して先程の設定変更を反映させます。

brew services restart httpd

WebブラウザにHello Worldが表示されたら動作確認OKです。

http://localhost/hello-world.html
Webブラウザに表示されるHello world

設定変更前にIt works!ページが表示されたのに、この動作確認で表示エラーになる場合は、コンフィグファイルの記述ミスかフォルダのパスミスが考えられます。あとは変更を保存していないか。

htmlのファイル名をindex.htmlにした場合は設定変更前の動作確認の:8080ポート指定が残っている可能性があります。あとはSHIFT押しながら再読み込みボタンでキャッシュクリアを試してみてもよいかも。

PHPインストール

現在Homebrewでサポートされているバージョンは7.2と8.0です。ブログなどに使っている人は対応バージョンに気をつけたほうがよいかもしれません。

せっかくなので私は最新バージョンの8.1で行きますよー。

インストールとバージョン確認

以下のGithubを使わせてもらいます。

https://github.com/shivammathur/homebrew-php

HomebrewでPHP8.1をインストール。

brew tap shivammathur/php

例えば別バージョンをインストールしたい場合は以下のような指定方法になります。

brew install shivammathur/php/php@7.4

インストールできたかを確認するために、バージョンを見てみましょう。

php -v

対象のバージョン情報が出てくればOKですね。

PHPバージョン情報

ApacheにPHPを認識させる

再度Apacheのコンフィグファイルを編集します。

open -e /opt/homebrew/etc/httpd/httpd.conf

LoadModuleの塊の一番下に以下の一行を追記します。

LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so

バージョンによってフォルダパスが異なりますのでご注意ください。

PHPのモジュール追加

あとはPHPを使う前提ですので、index.phpも認識してもらうようにしておきます。

以下の部分をまるっと置き換えます。

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

上記を下記に置き換え。

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
PHP用のindex追加

以上ですので保存して編集を終了します。

Apache+PHP動作確認

ではApacheとPHPの組み合わせが正しく動くか確認してみましょう。

よくあるPHPのバージョン情報をページとして表示する方法で行きます。

まずは以下のコマンドでバージョン情報のPHPファイル(info.php)を作成。パスは設定したWeb公開フォルダです。

echo "<?php phpinfo();" > ~/VSCode/workwell/Web/info.php

info.phpにアクセスしてみます。

http://localhost/info.php

PHPの情報ページが表示できれば無事Apache+PHPの開発環境構築が完了です。お疲れさまでした。

PHPの情報ページのテスト表示

最後に

いかがでしたか?

これでApacheとPHPの開発環境が無事整いましたね。MySQL等を追加する手順はこちら。

【サクサク解説】Webアプリ開発|環境構築編 PHP+Apache+MySQL+MySQL Workbench

この環境とMySQLを使った日報登録WebアプリをGithubに公開していますので、よければ参考にしてみてください。

https://github.com/ichiken-usa/workwell

スポンサーリンク

フォロワー

Labels

Amazon (3) Apache (3) Apple (9) AppleSilicon (7) Bloggerカスタマイズ (12) EchoShow15 (1) IoT (25) Jetson (1) MySQL (1) PHP (3) Python (20) Web (3) アウトドア (11) アメリカ生活 (19) ガジェット (35) キャンプ (9) ディープラーニング (1) らずキャン△ (11) ラズパイ (24) 暗号資産 (5) 開発 (31) 旅行 (8)

QooQ