macOS ローカルに apache の立てる

概要

macOSapache の Web Serverを立てるメモ書き。

環境

OS : macOS Catalina 10.15.7
入っている httpdphp のバージョン

$  httpd -v
Server version: Apache/2.4.41 (Unix)
$ php -v
PHP 7.3.11 (cli) (built: Jun  5 2020 23:50:40) ( NTS )

これらをそのまま使う。

ポート

macOS に docker で CentOS8 のコンテナを作って、ホスト:80 <=> コンテナ:8080
マッピングしているため、macOS に立てるWebサーバに 8888 ポートを使うことにする。
つまり、http://localhost:8888 である。

手順

apache の起動と動作確認

apache を起動

$ sudo apachectl start
$ ps auxww | grep httpd

プロセスが立ち上がらない。。なぜだ
いろいろ考えた結果、同時に CentOS8 のコンテナが起動されて、コンテナ内で nginx の
Web Server が立ち上がっているため、ホスト側ではすでに 80/tcp が Listen 状態になっている。

$ netstat -na | grep "*.80" | grep LISTEN
tcp46      0      0  *.80                   *.*                    LISTEN

なので、httpd.conf を変更して、80 の Listen を 8888 に変更する。

httpd.conf の変更

vim /etc/apache2/httpd.conf

ポート変更
<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
    Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
#    Listen 80
    Listen 8888
</IfDefine>
php を使えるようにする

下記1行のコメントアウトを外す。

#LoadModule php7_module libexec/apache2/libphp7.so
↓
LoadModule php7_module libexec/apache2/libphp7.so
apache を起動する
$ sudo apachectl start
$ ps auxww | grep httpd
$ ps auxww | grep httpd | grep -v grep
_www   78894   0.0  0.0  4329508   1032   ??  S     9:04PM   0:00.00 /usr/sbin/httpd -D FOREGROUND
_www   78893   0.0  0.0  4329508   1028   ??  S     9:04PM   0:00.00 /usr/sbin/httpd -D FOREGROUND
_www   78892   0.0  0.0  4329508   1272   ??  S     9:04PM   0:00.00 /usr/sbin/httpd -D FOREGROUND
_www   78885   0.0  0.0  4345892   2008   ??  S     9:04PM   0:00.01 /usr/sbin/httpd -D FOREGROUND
root      78881   0.0  0.1  4329536   8636   ??  Ss    9:04PM   0:00.30 /usr/sbin/httpd -D FOREGROUND

ブラウザから http://localhost:8888 にアクセスすると

f:id:lgx:20210410212026p:plain:w300

DocumentRoot

macOS では、ドキュメントルートは /Library/WebServer/Documents である。

毎回ドキュメントルート配下に作るのは、拡張性と利便性に乏しいため、ユーザディレクトリを有効化する。

ユーザディレクトリを有効化

vim /etc/apache2/httpd.conf 下記2行のコメントアウトを削除する。

#LoadModule userdir_module libexec/apache2/mod_userdir.so
↓
LoadModule userdir_module libexec/apache2/mod_userdir.so

#Include /private/etc/apache2/extra/httpd-userdir.conf
↓
Include /private/etc/apache2/extra/httpd-userdir.conf

次に、vim /etc/apache2/extra/httpd-userdir.conf、次の行のコメントアウトを削除

#Include /private/etc/apache2/users/*.conf
↓
Include /private/etc/apache2/users/*.conf

ホームディレクトリに「Sites」ディレクトリの作成

すでに作成済の場合は不要

$ mkdir -p ~/Sites

{user}.conf の作成

ここでの {user} は、サーバのユーザ名のこと。自分は liu なので、次のように作成する。
※注 : macOS には、すでに作成されていたが、内容を変更する。

$ sudo vim /etc/apache2/users/liu.conf
<Directory "/Users/liu/Sites/">
    Options Indexes MultiViews
    Require all granted
</Directory><Directory "/Users/liu/Sites/">
   AddType text/html .shtml .html
   AddHandler server-parsed .shtml .html
   Options Indexes MultiViews FollowSymlinks Includes
   AllowOverride all
   Require all granted
</Directory>
ユーザディレクトリの動作確認

~/Sites 配下に、vim phpinfo.php

<?php
    phpinfo();
?>

最終動作確認

httpd を再起動する $ sudo apachectl restart

ブラウザから http://localhost:8888/~liu/phpinfo.php にアクセスする

f:id:lgx:20210410220055p:plain:w600

問題なく予定通りの動作確認ができた。

httpd 自動起動するように設定

$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
/System/Library/LaunchDaemons/org.apache.httpd.plist: service already loaded

自動起動をやめる時は

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

特別感謝