HomebrewでApache、PHP、MySQL、phpMyAdmin追加
こんばんは。
ローカルでの開発環境として今までMAMPを使っていましたが、MacにはMAMPを使わずともApacheやPHPなどがあるので、どうせならそちらを使いたいと思い、MAMPを使わない環境構築をしてみました。
今回は、Apache、PHP、MySQL、phpMyAdminを使えるようにしました。また、全てHomebrewで管理したかったので、デフォルトでPHPなどは入っているんですがそれは使わずにbrewでインストールしました。
PHPに関しては、PHPの複数バージョンを入れられるphpenvというものがありますのでそれを使いました。
前にrbenvやpyenvなどを入れましたが(こちら)、その時みたいに結構簡単にできるかなーと思ったら意外と詰まってしまいました。
MySQLのインストール
まずはMySQLのインストールです。rootのパスワードまで決定しちゃいます。
やり方は以下の通り。
$ brew install mysql $ mysql.server start $ mysqladmin -u root password 'new-pass' # (最初のrootパス以外は全てそのままでOK) $ mysql_secure_installation $ mysql.server stop
Apacheのインストールと設定
Apacheのインストール
次にApacheのインストールです。
ここではApache2.4をインストールしたいと思います。
$ brew tap homebrew/dupes $ brew tap homebrew/apache $ brew search httpd # おまじないです。これやったほうがいいみたい。 $ sw_vers -productVersion | grep -E '^10\.([89]|10)' >/dev/null && bash -c "[ -d /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain ] && sudo -u $(ls -ld /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain | awk '{print $3}') bash -c 'ln -vs XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX$(sw_vers -productVersion).xctoolchain' || sudo bash -c 'mkdir -vp /Applications/Xcode.app/Contents/Developer/Toolchains/OSX$(sw_vers -productVersion).xctoolchain/usr && for i in bin include lib libexec share; do ln -s /usr/${i} /Applications/Xcode.app/Contents/Developer/Toolchains/OSX$(sw_vers -productVersion).xctoolchain/usr/${i}; done'" $ brew install httpd24 # 以下のようになってればOKです $ which apachectl /usr/local/bin/apachectl
Apacheの設定
インストールが終わったら設定を変更します。
/usr/local/etc/apache2/2.4/httpd.conf
# 使用するポート番号の設定 # デフォルトで8080かもしれないが、今回は80にする Listen 80 # ServerNameの設定 # 上でポート番号を80にしたので、ここも80にする ServerName localhost:80 # DocumentRootの変更 DocumentRoot "/Users/ユーザ名/htdocs" # .htaccessでURLのoverwriteを許可 (<Directory "/Users/furudate/htdocs">内) AllowOverride All # index.phpを使えるように修正 (IfModule dir_module内) DirectoryIndex index.php index.html # .phpを実行できるようにMIMEタイプを追加 (IfModule mime_module内) AddType application/x-httpd-php .php # バーチャルホストを利用できるようにコメントアウトを解除 Include /usr/local/etc/apache2/2.2/extra/httpd-vhosts.conf
バーチャルホストを追加してダミーホストをコメントアウト
/usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
# # Use name-based virtual hosting. # # NameVirtualHost *:80 (Apache2.4からはこの記述いらないみたい。一応コメントとして残しておきます) <VirtualHost *:80> ServerName sample.local DocumentRoot /Users/ユーザ名/htdocs DirectoryIndex index.php index.html <Directory "/Users/ユーザ名/htdocs"> AllowOverride All Allow from All </Directory> </VirtualHost> # # VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not # match a ServerName or ServerAlias in any <VirtualHost> block. # #<VirtualHost *:8080> # ServerAdmin webmaster@dummy-host.example.com # DocumentRoot "/usr/local/opt/httpd22/docs/dummy-host.example.com" # ServerName dummy-host.example.com # ServerAlias www.dummy-host.example.com # ErrorLog "/usr/local/var/log/apache2/dummy-host.example.com-error_log" # CustomLog "/usr/local/var/log/apache2/dummy-host.example.com-access_log" common #</VirtualHost> #<VirtualHost *:8080> # ServerAdmin webmaster@dummy-host2.example.com # DocumentRoot "/usr/local/opt/httpd22/docs/dummy-host2.example.com" # ServerName dummy-host2.example.com # ErrorLog "/usr/local/var/log/apache2/dummy-host2.example.com-error_log" # CustomLog "/usr/local/var/log/apache2/dummy-host2.example.com-access_log" common #</VirtualHost>
ここまでで、ドキュメントルート(上記の場合は /User/ユーザ名/htdocs)に設定したディレクトリにindex.htmlを置き、localhostにアクセスしてみて中身が見れたらOKです。
もし見れない場合は以下のコマンドでApacheの状態を見てみましょう。恐らくエラー文が出るはずです。
$ apachectl -t
phpenvを用いたPHPのインストール
次にPHPのインストールです。
先程も言ったように、ここではphpenvを使ってPHPを管理します。
まずはphpenvを使えるようにします。
$ brew install phpenv
phpenvをインストールしたら、パスを追加します。
が、rbenvをインストールしている場合は、共存させるようにパスを設定しなければなりません。
ただパスを追加すると、rbenvがphpenvと一緒にインストールされたものに置き換わってしまいます。
以下ではrbenvやpyenvとかも含めたパスの設定です。大事なのは順番です。
.bashrc
eval "$(pyenv init -)" eval "$(plenv init -)" export PATH=$PATH:$HOME/.phpenv/bin eval "$(phpenv init -)" eval "$(rbenv init -)"
.phpenv/bin を .rbenvのパスより後に設定します。
以下のコマンドで確認しましょう。
# PATHが以下のような順番になってればOK $ echo $PATH /Users/username/.rbenv/shims:/Users/username/.phpenv/shims:/Users/username/.plenv/shims:~(省略):/Users/username/.phpenv/bin # rbenv, phpenvの場所を確認。以下のようになってればOK $ which rbenv /usr/local/bin/rbenv $ which phpenv /Users/username/.phpenv/bin/phpenv
これでphpenvが使えるようになりました。
次に、php-buildを入れます。
php-buildはbrewにもありますが、ここではgitからcloneしてきてプラグインとして追加します。
こうすることで、rbenvなどと同じようにphpenv install
コマンドが使えるようになります。
brewでインストールした場合は php-build コマンドでインストールする必要があります。
$ cd ~/.phpenv $ git clone git://github.com/CHH/php-build.git $HOME/.phpenv/plugins/php-build
これでphpenvコマンドをrbenvなどと同じように使えるようになりました。
いよいよPHPをインストールしていきます。
しかしその前に、PHPをインストールする際にApacehモジュールも生成するようにデフォルト設定を変更します。
$ vim ~/.phpenv/plugins/php-build/share/php-build/default_configure_options # 以下の行を追加 --with-apxs2=/usr/local/bin/apxs
一応apxsのパスはwhichコマンドで調べて下さい。
これでPHPをインストールする毎に /usr/local/Cellar/httpd24/2.4.10/libexec/ に libphp5.so が追加されます。
ちなみに、色々ググるとhttpd.confをいじっているものもありますが、今回の場合は上記の記述をしていれば勝手に追記されるので不要です。
さて、やっとインストールです。
# インストール可能なバージョン一覧 $ phpenv version -l # 今回は5.6.4をインストール $ phpenv install 5.6.4
インストールは結構長いです。
また、以下のようなエラーが出る場合はbrewで足りないパッケージをインストールします。
# configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. $ brew instal re2c # configure: error: jpeglib.h not found. $ brew install libjpeg # configure: error: png.h not found. $ brew install libpng # configure: error: mcrypt.h not found. Please reinstall libmcrypt. $ brew reinstall libmcrypt
エラーを消し、インストールが終わったら確認します。
$ phpenv versions * system 5.6.4 (set by /Users/furudate/.phpenv/version) $ phpenv global 5.6.4 $ phpenv rehash $ php -v PHP 5.6.4 (cli) (built: Jan 16 2015 02:05:44)
これでやっとphpenvからPHPがインストールできました。
ここまでが本当長かった・・・
phpenv-apache-versionのインストール
次にApacheのPHPモジュールの切り替えをしてくれるスクリプトをインストールします。
$ git clone https://github.com/garamon/phpenv-apache-version ~/.phpenv/plugins/phpenv-apache-version
phpenv-apache-version は ~/.phpenv/versions/{version} 直下にある libphp5.so をコピーしてApacheモジュールとして読み込ませます。
そのため、PHPのインストールの際に生成されたlibphp5.soを上記のパスに移動しておく必要があります。
よって、phpenvで各バージョンをインストールした際には、以下のようにApacheのPHPモジュールを移動します(5.6.4の場合)。
$ mv /usr/local/Cellar/httpd24/2.4.10/libexec/libphp5.so ~/.phpenv/versions/5.6.4/
その後、以下のコマンドを実行すると、libphp5.soがコピーされ、Apacheが再起動されます。
$ phpenv apache-version {version}
しかし、上記のコマンドを実行しようとすると以下のエラーが出ると思います。
Error: No available formula for httpd Sorry your OS is not supported.
これはhttpdっていうformulaがないですよって意味ですが、今はhttpdではなくhttpd22かhttpd24となっているため、このようなエラーが出ます。(対応されてないようです)
そこで、スクリプトを直接いじって対応させちゃいます。
$ cd ~/.phpenv/plugins/phpenv-apache-version/bin/ $ cp -p rbenv-apache-version rbenv-apache-version.old $ vim rbenv-apache-version # 23行目らへんを以下のように変更 if command -v brew >/dev/null; then if [ -d "$(brew --prefix httpd24)" ]; then PHPENV_APACHE_MODULE_PATH="$(brew --prefix httpd24)/libexec" elif [ -d "$(brew --prefix httpd22)" ]; then PHPENV_APACHE_MODULE_PATH="$(brew --prefix httpd22)/libexec" fi
if文でhttpd24かhttpd22のどちらかに対応させるようにしています。
これでスクリプトを実行すれば、PHPモジュールが読み込まれるようになると思います!
ここまでで apachectl restart でApacheを再起動しておきましょう。
その後、phpinfoなどを見てみるとphpenvでインストールしたPHPが読み込まれているはずです!!
なお、phpinfoを見てみると、PHPのtimezoneがEuropaとなっていると思うので、以下のようにします。
$ vim .phpenv/versions/5.6.4/etc/php.ini # timezoneのところを以下のように変更 date.timezone = Asia/Tokyo # apacheの再起動 $ sudo apachectl restart
Composerのインストール
PHP関連で、ついでにComposerもインストールしちゃいます
$ brew search composer # このオプション付けないとPHPをbrewでインストールしろって言われます $ brew install composer --ignore-dependencies
phpMyAdminのインストール
最後にphpMyAdminのインストールです。
$ brew install phpmyadmin $ vim /usr/local/etc/apache2/2.4/httpd.conf # httpd.confに以下を追加 Alias /phpmyadmin /usr/local/share/phpmyadmin Alias /phpMyAdmin /usr/local/share/phpmyadmin <Directory /usr/local/share/phpmyadmin/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all Require all granted # この行がないと403エラーになる </Directory>
続いて以下のファイルをいじる。 /usr/local/Cellar/phpmyadmin/4.3.4/share/phpmyadmin/config.ing.php ない場合は config.sample.inc.php をリネームしてコピー
$cfg['blowfish_secret'] = '任意の文字列'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Server parameters */ $cfg['Servers'][$i]['host'] = '127.0.0.1'; /* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; (中略) $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
以上を終えて、http://localhost/phpmyadmin を開くとphpmyadminのTOPページが表示されるはず!
なお、下にスクロールするとエラー文が表示されていますが、このエラー文に関してはこちらのサイトにある通りのことをすれば消えました。
今回は以上です。
これでやっと環境が整いました。長かったです・・・
それでは!
参考にさせていただいたサイト
OS X YosemiteにHomebrew + DropboxでPHP環境構築 〜Apache, PHP, MySQL, ComposerをインストールしてFuelPHPの設定まで - Qiita
Mac OS X Mountain LionでMAMP環境を構築する - Qiita
phpenv + php-build + composer で開発環境作ってみた | 69log
Homebrew/homebrew-apache · GitHub
Homebrewでphp-build及びphpenvインストール後に5.5系をインストールするための手順 - Qiita