HomebrewでMacにLAMP環境を構築 #03:Apache

Apacheのインストール

昔はdupesリポジトリにあったらしいのですが、最近はapacheリポジトリに入り、2.2系と2.4系が選べるようになりました。

$ brew tap homebrew/dupes ※zlib用に必要
$ brew tap homebrew/apache
$ brew install httpd24
※ 依存関係はapr、zlib、apr-util、pcre

インストール時に「Error: No available formula for httpd24」と出る場合は以下のコマンドでtapし直してください。

$ brew untap homebrew/apache
$ brew tap homebrew/apache
$ brew update 

以下のコマンドを入力して、apachectlの場所が変わっていればOKです。

$ which apachectl
/usr/local/bin/apachectl 

confファイルの修正

外部公開しない開発用なので、本格サーバ仕様でないことが前提です。 ファイルの配置場所は基本的に「/Uses/ユーザ名/Sites」とし、それ以下のアクセスはVirtualhostを使用します。あと、phpが実行できるようにしておきます。 CGIは昨今ではセキュリティ的にどうだと言われているので、今回は有効にしません。

httpd.confの修正

httpd.confの詳細はcore – Apache HTTP サーバ バージョン 2.4にあります。

$ vi /usr/local/etc/apache2/2.4/httpd.conf 

52行目あたり変更:使用ポートの変更

Listen 80 

176行目あたり変更:実行ユーザの変更

User ユーザ名 Group staff 

198行目あたり変更:メールアドレスの変更(多分機能しないけど一応)

ServerAdmin メールアドレス 

207行目あたり変更:サーバ名の変更

ServerName localhost:80 

231行目あたり変更:ドキュメントルートの変更

DocumentRoot "/Users/ユーザ名/Sites" 

232行目あたり変更:ドキュメントルートディレクトリの設定

<Directory "/Users/ユーザ名/Sites"> 

245行目あたり:オプションの指定→Optionsディレクティブの詳細

Options ExecCGI FollowSymLinks Includes Indexes MultiViews 

252行目あたり変更:.htaccessの許可

AllowOverride All 

265行目あたり変更:index.htm、index.phpの許可(IfModule dir_module内)

DirectoryIndex index.htm index.html index.php 

416行目あたり追記:phpの許可(IfModule mime_module内)

AddType application/x-httpd-php .php 

483行目あたり変更:Virtual hostsの有効

Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf 

httpd-vhosts.confの編集

今回はWordpressとzabbixを動くようにしたいので、2つのバーチャルホストを作成します。

$ vi /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf 

二つのexampleをすべて削除かコメントアウトしておく 「control+v」で矩形選択、「shift+i」で入力モードに変えて「#」をいれて「esc」キーを押せば、複数行コメントアウトできます。

最終行に追記

トップアドレス?用

<VirtualHost *:80>
  DocumentRoot "/Users/ユーザ名/Sites"
  ServerName www.PC名
  <Directory "/Users/ユーザ名/Sites">
    Require all granted
  </Directory>
</VirtualHost> 

zabbix用

<VirtualHost *:80>
  DocumentRoot "/Users/ユーザ名/Sites/zabbix"
  ServerName zabbix.PC名
  <Directory "/Users/ユーザ名/Sites/zabbix">
    Require all granted
  </Directory>
</VirtualHost>

WordPress用

<VirtualHost *:80>
  DocumentRoot "/Users/ユーザ名/Sites/wordpress"
  ServerName wordpress.PC名
  <Directory "/Users/ユーザ名/Sites/wordpress">
    Require all granted
  </Directory>
</VirtualHost>

PC名の所は正直何でも良いです。私はhostnameコマンドで得た値を入れています(xxx.local)。何でも良いとは言え、既存のサイト名(Yahoo.com)とかは後のhostsファイルの変更でややこしくなるので避けた方が良いでしょう。

hostsファイルの変更

バーチャルホストを設定しても名前解決はMac側の機能なので反映されません。 なので、hostsファイルを編集してそれぞれ名前解決できるようにします。

直接編集しても良いのですが、ちょうどBrew-caskに「Hosts」というアプリがあったのでこれを使いました。

設定例は以下の通りです。

  • 127.0.0.1/www.PC名
  • 127.0.0.1/zabbix.PC名
  • 127.0.0.1/wordpress.PC名

設定に問題がないかチェック

$ apachectl configtest Syntax OK 

起動確認

$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl restart

Sitesフォルダのパーミッション変更

$ chmod o+x Sites/ 

LaunchRocketとapachectlの違い

なお、LaunchRocketで起動した場合と、apachectlで起動した場合、プロセスのアドレスが違ったりしますが、opt以下のディレクトリはすべてCellarディレクトリのシンボリックリンクを引っ張っているだけなので問題はありません。ただし、プロセス上は別々に動くので、LaunchRocketで起動したものをapachectlで停止はできません。逆も然りです。必ず起動したアプリ・コマンドで終了するようにしましょう。

Launchrocketは「/usr/local/opt/httpd24/bin/httpd」
apachectlは「/usr/local/Cellar/httpd24/2.4.10/bin/httpd」
実体は「opt/httpd24 -> ../Cellar/httpd24/2.4.10」 

LaunchRocketで起動する場合は、「As Root」にチェックを入れて起動してください。チェックが入っていないと、Socksの変更権限を持つユーザがrootのみであることが原因で以下のようなエラーがでます。

(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
(13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 

ちなみにapachectlで起動する場合もsudoで行う必要があります。 まぁ、ポートを80から8080にしてもいいんですけどね。


【番外】過去のApacheが入っていた場合

以前にHomebrewを入れてApacheを導入していた場合、アンインストールをしても残っている場合がありますので、イチから入れ直したい場合は以下のコマンドで設定ファイルを削除します。

$ rm -rf /usr/local/etc/apache2/ 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中