[MAMP/XAMPPを使わず]HomebrewでローカルにPHP/Apache/MariaDB(mysql)の環境構築

公開:2020/10/19
更新:2020/10/19
11 min読了の目安(約10300字TECH技術記事

はじめに

本記事はこのQiita記事から筆者本人が転載したものです。修正がある場合はしばらく両方ともに反映させるようにします。

なぜこの記事を書いたか

Web開発してみたい! => (入門書やドットインストールで)HTML/CSS/PHPの基礎終わった! => さぁ作るぞ!

となった初学者にとっての次の壁になるのはWebサーバーデータベース関連の環境構築だと思います。(私がそうでした)

確かにMAMPやXAMPPを使ったやり方やLinux OS(CentOSとかUbuntu)での環境構築については、わかりやすい日本語記事がゴロゴロネット上に落ちています。

けれども「まずはMacで気軽に環境構築したい」「(MAMPを使わず)出来れば今後の開発環境構築にも力になるような形で開発環境を作りたい!」というような要望を満たしてくれる記事のほとんどが英語で書かれたものです。

というわけで今回タイトルにもある通り

  • Macのローカル環境で
  • Homebrew(パッケージ管理ソフト)を使って
  • PHP/Aapche(webサーバー)/MariaDB(DBMS)の環境構築をする

という3つをちょっと前の私レベルの人(初学者)でもつまづかずに達成出来るようなガイド記事を書いてみました。

今回のゴール

  • Homebrewをとりあえず導入して使ってみる
  • MAMPやXAMPPを使わずにローカルのMacにApacheとMariadbを導入出来るようになる

結果的に…

  • 楽チンにMacのローカル環境に環境構築して開発作業/勉強に集中できる!
  • 後々Linux環境を使う時にも活きる知識が得られる
  • terminalでの作業をすることでCLI(コマンドラインインターフェイス)の真っ黒い画面への免疫が獲得できる!

OS/環境

MacOS 10.15.5 Catalina

まずはHomebrewを導入しよう

Homebrewとは、Macでディファクトスタンダード(みんなが広く使っている事実上の標準)となっているパッケージマネージャーです。

各種のソフトウェアの導入と削除やソフトウェア同士やライブラリとの依存関係を色々といい感じにしてくれる(管理してくれる)頼もしいソフトなので入れましょう。

//Xcode(アップルのIDE)をインストール
$ xcode-select --install

//次にHomebrewをインストール
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

//Homebrewのバージョンを見てみましょう
$ brew -v

//brewの設定が上手く行っているか念のため,Warningが出た場合適宜指示通りにして直してみましょう
$ brew doctor

すでにhomebrewは入れてるよーと言う方は下のコマンドを実行してください。

$ brew update
$ brew upgrade
$ brew cleanup

※参考:さらにHomebrewについて詳しく知りたい方は…

Apacheを導入する

ApacehとはWebサーバーソフトウェア(HTTPサーバー)のことです。
よくわからない人は「クライアント(情報を要求する側)のブラウザがこの情報欲しいよって言ってきた時に、ブラウザがウェブページを表示するのに必要な情報を加工した上でクライアントに渡してくれるソフトウェアなんだな」、という認識で今は問題ないです。

Apacheの導入!...の前に

Apacheのインストールの前に先に下の二つをインストールしてください。

//OpenLDAPとlibiconvを導入しておく
$ brew install openldap libiconv

Apacheをインストールする

//Macに最初から入っているapacheが動いているかもしれないので一応,シャットダウンとスクリプトを削除しておく
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

//いよいよインストール!
$ brew install httpd

//上手く行ったかテスト
$ sudo brew services start httpd

もし上記が上手く行っていればテストのために打ったコマンドを押した後に
http://localhost:8080 にブラウザでアクセスした時に下記の画像のような画面になるはずです!
スクリーンショット 2020-07-22 2.10.57.png

Apacheの各種設定

/usr/local/etc/httpd/httpd.confを下記のように編集しよう。

//編集前
Listen 8080
//編集後
Listen 80

これでポート番号8080を受け付けず標準の80のみ受け付けるように変えました。
今後は http://localhost:80 にアクセスしましょう。
(ポート番号なにそれ?という人はとりあえず80番という扉からのみwebサイトに訪問できるようにしたのだという認識で今はおkです。)

次にApacheが管理するコンテンツの場所をApacheに教えてやるためにDocumentRootを編集してやりましょう。
/usr/local/etc/httpd/httpd.confを開きます。

//編集前
DocumentRoot "/usr/local/var/www"
//編集後(ユーザー名の箇所は適宜自分のものに変えてください)
DocumentRoot /Users/ユーザー名/Desktop/Sites

ちなみに自分のユーザー名がわからないおっちょこちょいな方は下記コマンドをterminalに打つと確認できます。

//私はだれ...?って聞いてます
$ echo $(whoami)

DocumentRootの行の下にある<Directory>の記述も下記のように修正してください。

//<Directory>タグの中を下記のように
<Directory /Users/ユーザー名/Desktop/Sites>

//<Directory>ブロック内もこのように変更
# 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

//mod_rewirte.soを探してコメントアウトを外してください
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

これで、

デスクトップ上のSitesディレクトリ = (Apacheがブラウザからのリクエストが来た時に返す)コンテンツを入れて置く場所

とWebサーバー(Apache)に認識して貰えます。

デスクトップに忘れずにSitesというディレクトリを作っておきましょう。

//Sitesというディレクトリをデスクトップに作ってやる
$ mkdir ~/Desktop/Sites

つぎにUserとGroupを設定します。

User ユーザー名
Group staff

サーバー名も変えておきましょう。

//編集前
#ServerName www.example.com:8080
//編集後
ServerName localhost

Apacheに変更を反映させましょう!

$ sudo apachectl -k restart

一応,Documentroot下にテスト用のファイルを置いてちゃんと動くか見てあげましょう。

//Desktop下にSitesというディレクトリを作る
$ mkdir ~/Desktop/Sites
//Sitesのディレクトリの下にzenn.htmlを作りそこに文言を書き込む.(直接開いて編集してもok!)
$ echo "<h1>ここがRoot直下のファイルや!</h1>" > ~/Desktop/Sites/qiita.html

これでブラウザのURLにhttp://localhost:80/zenn.html と入力してみましょう。(:80は省略可)

スクリーンショット 2020-07-22 2.27.36.png

ちなみにindex.htmlと名前を変えてあげれば、 http://localhost のみでindex.htmlが開いてくれます。試してみましょう。

お疲れ様です!PHPの導入はあっさりと終わります!

PHPを導入する

PHPといっても様々なバージョンがあります。
自分が必要なバージョンをインストールするようにしましょう。(個人開発とか勉強なら今なら普通にPHP7.4で良いかと!)

PHPをインストールする

//brewで入れる前にプリインストールされているPHPのバージョンを確認,メモしておいてください。

$ php -v

//自分が必要なPHPのバージョンを入れる,特にこだわりないのなら最新のもので良いのでは
$ brew install php@5.6
$ brew install php@7.0
$ brew install php@7.1
$ brew install php@7.2
$ brew install php@7.3
$ brew install php@7.4

最後にちゃんとbrewで入れたPHPが動いているか(Macに最初から入ったものとは違うか)
確認しましょう。

//バージョン確認
$ php -v
//phpのコマンドはちゃんとbrewの管理しているところにある?
$ which brew

インストールしたPHPが動くようにApacheを最終調整

ApacheにどのPHPを使うのか教えてやるために再度/usr/local/etc/httpd/httpd.confを編集しましょう。

//LoadModule rewrite_module lib/httpd/modules/mod_rewrite.soの下に追記
//インストールしたversionに合わせて#のコメントアウトを消す(今回はphp@7.4をインストールしたとする)

#LoadModule php5_module /usr/local/opt/php@5.6/lib/httpd/modules/libphp5.so
#LoadModule php7_module /usr/local/opt/php@7.0/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.1/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
#LoadModule php7_module /usr/local/opt/php@7.3/lib/httpd/modules/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so

最後に同じ/usr/local/etc/httpd/httpd.confの中で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も導入したのでDocumentroot下で動くことを確認しましょう。

//Desktop下のSitesというディレクトリの下にindex.phpというファイルを作る
$ touch ~/Sites/index.php

//Sitesディレクトリを開いてindex.phpに下記のように記入してみる
<?php
echo "<h2>phpも動くぞ!</h2>";

これでlocalhostにアクセスしてみましょう.下記のようになるはずです。
スクリーンショット 2020-07-22 2.34.24.png

MariaDB(MySQL)を導入する

今回はMariaDBというDBMS(DataBase Management System)を導入していきます。

ちなみにデータベースというのは『検索/管理といったことがやりやすいように一定のルールに従って蓄積されたデータの集合体』(by データベース - Wikipedia)のことです。

そしてDBMSというのはそのデータベースを管理するためのソフトウェアのことです。
MariaDB, MySQL, PostgreSQLなどが有名です。(今回はNoSQLとかの話はしません。私自身が詳しくないので涙)

MariaDBはMySQLから分岐して開発がされています...が、互換性があり大きな違いがありません。

今回はHomebrewでインストールやアップデートが容易なMariaDBの方の導入を行っていきますが
上記にあるように扱いの違いが少ないので将来的にMySQLを使う時にも役立ちます!

MariaDB(MySQL)をインストール,初期設定

まずMariaDBをインストールしましょう!
さらに今後自動で起動するように設定します.

$ brew install mariadb
// mariadbが今度から自動で起動するように設定(上手くいったら==>以下の文字が出ます!)
$ brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

引き続きMariaDBの初期設定を行います。
10回問答があるだけです。(必ずやってね!)

//下のコマンドを打つとNOTE以下のやりとりがでます!
$ sudo /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
haven't set the root password yet, you should just press enter here.
 
Enter current password for root (enter for none):--->(1)Enterを入力してください!
OK, successfully used password, moving on
 
Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation.
Enable unix_socket authentication? [Y/n] --->(2)nと回答してください!(Noってことね)
 ... skipping.
 
You already have your root account protected, so you can safely answer --->(3) nと回答してください!
 
Change the root password? [Y/n] --->(4)yと回答してください!
New password: --->(5)MariaDBの管理者パスワードを設定してください!
Re-enter new password: --->(6)再度上記で設定したパスワードを入力してください!
Password updated successfully! 
 
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] ---> (7)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] --->(8)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] --->(9)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] --->(10)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!

これでMariaDBの導入完了です!
お疲れさまでした!

参考にしたサイト/記事

Installing MariaDB Server on Mac OS X with Homebrew / MariaDB公式ドキュメント
macOS 10.15 Catalina Apache Setup: Multiple PHP Versions
macOS 10/15 Catalina Apache Setup: MySQL, Xdebug & More...