こんにちは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のパスが違うようなんですよね。メンドクサ〜。
M1 Monterey + PHP + Apache + MySQL + VSCode
— ICHIKEN@🇺🇸エンジニアキャンパー🏕 (@IchikenUsa) November 30, 2021
いちいちプチハードル高くてワロエナイ
PHPがOS12から標準バンドル除外
brewPHPと標準Apacheの相性×
標準Apache消してbrewで入れ直し
httpdパスがopt/homebrew下
何とか環境構築完了しlocalhostで表示できました😭#Web開発 https://t.co/hQ3gcdnux2 pic.twitter.com/TYvGmhRsvJ
バージョンにこだわらないのであれば、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/うまく行かない場合はサーバーが動いているかどうか確認します。
動いているかどうかは下記コマンドで確認。
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
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">
<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
rewite moduleを有効にするためにコメントアウトされているこのモジュールの#を消します。
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
下のスクショはすでにPHPの設定が入っっちゃっていますが、この設定段階では上のモジュールが最下段にあるはずです。PHPの設定はPHPインストール後に解説しています。
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>
Apacheを再起動して先程の設定変更を反映させます。
brew services restart httpd
WebブラウザにHello Worldが表示されたら動作確認OKです。
http://localhost/hello-world.html設定変更前にIt works!ページが表示されたのに、この動作確認で表示エラーになる場合は、コンフィグファイルの記述ミスかフォルダのパスミスが考えられます。あとは変更を保存していないか。
htmlのファイル名をindex.htmlにした場合は設定変更前の動作確認の:8080ポート指定が残っている可能性があります。あとはSHIFT押しながら再読み込みボタンでキャッシュクリアを試してみてもよいかも。
PHPインストール
現在Homebrewでサポートされているバージョンは7.2と8.0です。ブログなどに使っている人は対応バージョンに気をつけたほうがよいかもしれません。
せっかくなので私は最新バージョンの8.1で行きますよー。
インストールとバージョン確認
以下のGithubを使わせてもらいます。
https://github.com/shivammathur/homebrew-phpHomebrewでPHP8.1をインストール。
brew tap shivammathur/php
例えば別バージョンをインストールしたい場合は以下のような指定方法になります。
brew install shivammathur/php/php@7.4
インストールできたかを確認するために、バージョンを見てみましょう。
php -v
対象のバージョン情報が出てくればOKですね。
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を使う前提ですので、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>
以上ですので保存して編集を終了します。
Apache+PHP動作確認
ではApacheとPHPの組み合わせが正しく動くか確認してみましょう。
よくあるPHPのバージョン情報をページとして表示する方法で行きます。
まずは以下のコマンドでバージョン情報のPHPファイル(info.php)を作成。パスは設定したWeb公開フォルダです。
echo "<?php phpinfo();" > ~/VSCode/workwell/Web/info.php
info.phpにアクセスしてみます。
http://localhost/info.phpPHPの情報ページが表示できれば無事Apache+PHPの開発環境構築が完了です。お疲れさまでした。
最後に
いかがでしたか?
これでApacheとPHPの開発環境が無事整いましたね。MySQL等を追加する手順はこちら。
【サクサク解説】Webアプリ開発|環境構築編 PHP+Apache+MySQL+MySQL Workbenchこの環境とMySQLを使った日報登録WebアプリをGithubに公開していますので、よければ参考にしてみてください。
https://github.com/ichiken-usa/workwell
0 件のコメント:
コメントを投稿