macOS ローカルに apache の立てる
概要
macOS に apache の Web Serverを立てるメモ書き。
環境
OS : macOS Catalina 10.15.7
入っている httpd と php のバージョン
$ 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 の変更
ポート変更
<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
にアクセスすると
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
にアクセスする
問題なく予定通りの動作確認ができた。
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