El CapitanでApache + PHP + MySQL

OS X El Capitan

MacのWEB開発環境は、MAMPで一発で導入するか、もしくはOSXには標準でApacheとPHPが入っているので、追加でMySQLをインストールするかを選べます。

MAMPは確かにお手軽なのですが、私は日常的にサーバーにも触れていたいので、OS付属のApacheとPHPを使っています。MySQLはHomebrewで導入しています。

先日、Yosemite→El Capitanにアップグレードした際、ApacheやPHPも再インストールされてしまいました。当たり前といえば当たり前なんですが、OSのアップデート毎に再設定することになります。なので引き継ぎもMAMPのが楽だと思います。

 

Apache

標準で入ってるApacheのバージョンを見てみます。

$ httpd -v
Server version: Apache/2.4.16 (Unix)
Server built:   Aug 22 2015 16:51:57

設定ファイルは、

/etc/apache2/httpd.conf

です。El Capitanにアップグレードする前のhttpd.confは、自動でhttpd.conf~previousにバックアップされていました。

 

変更箇所

私のhttpd.confの設定は、デフォルトからPHPを有効にしてドキュメントルートを設定します。あとWordPressを動かすために.htaccessとmod_rewriteを有効にしています。

httpd.conf
#デーモン実行は自分自身で
<IfModule unixd_module>
User ユーザ名
Group www
</IfModule>

#モジュールを有効に
LoadModule php5_module libexec/apache2/libphp5.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

#お好きなところへ
DocumentRoot "/Users/ユーザ名/www"
<Directory "/Users/ユーザ名/www">
    #.htaccessを有効に
    AllowOverride All
</Directory>

httpd.confを保存してから、問題なく記述できているかテストした後、反映の為にApacheをリスタートします。

$ sudo apachectl configtest
$ sudo apachectl restart

Apache自動起動が必要な場合

$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

 

PHP

インストールされているPHPのバージョンを確認。

$ php -v
PHP 5.5.27 (cli) (built: Aug 22 2015 18:20:44) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

設定ファイルphp.iniをデフォルトからコピー。

$ sudo cp -p /etc/php.ini.default /etc/php.ini

私の場合はとりあえずこの3つの値を変更。各自ご自由に。

php.ini
post_max_size = 8M
upload_max_filesize = 2M
max_execution_time = 30

 

PEARインストール

PEARはgo-pear.pharスクリプトをダウンロードしてインストールするのですが、PEARのインストール先は/usr以下になります。Yosemiteまではそれで問題ありませんでしたが、El CapitanにはSystem Integrity Protection(SIP)というセキュリティシステムが導入され、/usr以下はroot権限ですら変更できません。

OS X 10.11 El CapitanのSystem Integrity Protection(SIP)についてちょっと詳しくのスクリーンショットOS X 10.11 El CapitanのSystem Integrity Protection(SIP)についてちょっと詳しく

そのため一旦SIPを無効にして、PEARインストール後に再度有効にします。

SIP無効化
  1. マック再起動してCmd+rを押してリカバリーモードに。
  2. ターミナルを起動してSIPを無効化。
    # csrutil disable
  3. 再起動後に有効になります。

再起動後、一応SIPのステータスを確認。Filesystem Protections: disabledになっています。

$ csrutil status
System Integrity Protection status: enabled (Custom Configuration).

Configuration:
        Apple Internal: disabled
        Kext Signing: enabled
        Filesystem Protections: disabled
        Debugging Restrictions: disabled
        DTrace Restrictions: disabled
        NVRAM Protections: disabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.

 

ようやくPEARのインストール。

$ cd /tmp && mkdir pear && cd pear
$ curl -O http://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar

好きなパッケージをインストール。

$ sudo pear install Cache_Lite
$ sudo pear install XML_RPC2

 

SIP有効化
  1. 再び再起動してリカバリーモードでSIPを有効に。
    # csrutil enable
  2. 再起動して確認。
    $ csrutil status
    System Integrity Protection status: enabled.

 

MySQL

私はMySQLをYosemite時代に既に入れていたので、そのまま使えました。MySQLはHomebrewを利用してインストールするのが便利ですが、Homebrewも先ほどのSIPが影響してEl Capitanでトラブルになる場合があるようです。しかし一手間かかる場合があるもののインストールはできます。

【Mac】OS X 10.11 El CapitanにHomebrewをインストールする方法 | HWD Blogのスクリーンショット【Mac】OS X 10.11 El CapitanにHomebrewをインストールする方法 | HWD Blog

HWD Blogさんを参考にHomebrewさえ入れてしまえば、

MySQLインストール

$ brew install mysql
$ mysql.server start

MySQL rootユーザー作成

$ mysqladmin -u root password your_password
$ mysql -u root -p

でOKです。

MySQL自動起動が必要な場合

$ cp /usr/local/Cellar/mysql/5.6.21/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/