2022/11/14 Updated by 
Mac arm64
Apache httpd
[Up]
 

インストール状況の確認
- 最近の macOS では、Apache httpd が標準インストールされている。
- apache httpd がインストールされていることを確認する。
| 「ターミナル」上で青字部分を入力する。('%' はプロンプトを表している) | 
| % which httpd  ← httdのパス表示
/usr/sbin/httpd
% which apachectl  ← apachectlのパス表示
/usr/sbin/apachectl
% /usr/sbin/httpd -version  ← httpdのバージョン表示
Server version: Apache/2.4.54 (Unix)
Server built:   Sep 30 2022 02:51:01 | 
- httpdの設定ファイルを調べてコンテンツを格納する場所を確認する。
| 「ターミナル」上で青字部分を入力する | 
| % ls -l /etc/apache2  total 88
drwxr-xr-x  14 root  wheel    448 10 18 21:36 extra
-rw-r--r--   1 root  wheel  21648 10 18 21:36 httpd.conf
-rw-r--r--   1 root  wheel  13064 10 18 21:36 magic
-rw-r--r--   1 root  wheel  61118 10 18 21:36 mime.types
drwxr-xr-x   4 root  wheel    128 10 18 21:36 original
drwxr-xr-x   4 root  wheel    128 10 18 21:36 other
drwxr-xr-x   2 root  wheel     64 10 18 21:36 users
% grep DocumentRoot /etc/apache2/httpd.conf  # DocumentRoot: The directory out of which you will serve your
DocumentRoot "/Library/WebServer/Documents"
    # access content that does not live under the DocumentRoot. | 
httpd を起動・停止する
- 起動する
| 「ターミナル」上で青字部分を入力する(起動する) | 
| % sudo /usr/sbin/apachectl start  ← httpd を管理者権限で起動する
Password:     ← 自分のパスワードを入力する(エコーバックされない) | 
- ブラウザで http://localhost/ にアクセスする。
文書フォルダに index.html がない場合は、"It works!" とだけ表示される。

- 停止する。
| 「ターミナル」上で青字部分を入力する(停止する) | 
| % sudo /usr/sbin/apachectl stop  ← httd を管理者権限で停止する
Password:     ← 自分のパスワードを入力する(エコーバックされない) | 
設定を変更する
- Apache httpd の設定ファイルは /etc/apache2/ にある。
| 「ターミナル」上で青字部分を入力する(設定ファイルを確認する) | 
| % ls -l /etc/apache2  total 88
drwxr-xr-x  14 root  wheel    448 12  2 20:37 extra
-rw-r--r--   1 root  wheel  21648 12  2 20:37 httpd.conf
-rw-r--r--   1 root  wheel  13064 12  2 20:37 magic
-rw-r--r--   1 root  wheel  61118 12  2 20:37 mime.types
drwxr-xr-x   4 root  wheel    128 12  2 20:37 original
drwxr-xr-x   4 root  wheel    128 12  2 20:37 other
drwxr-xr-x   2 root  wheel     64 12  2 20:37 users | 
ちなみに、/etc/apache2 と /private/etc/apache2 は同一のディレクトリ(hard link)である。
inode番号が同じであることからわかる。
| 「ターミナル」上で青字部分を入力する(ディレクトリのinode番号を確認する) | 
| % ls -ldi /etc/apache2 /private/etc/apache2   36145961 drwxr-xr-x  9 root  wheel  288  2 25 13:25 /etc/apache2        ← 36145961がinode番号
36145961 drwxr-xr-x  9 root  wheel  288  2 25 13:25 /private/etc/apache2 | 
-  /etc/apache2/httpd.conf を編集する。
httpd.conf を編集するには root 権限が必要である。
一旦ファイルを手元にコピーして、慣れたエディタで変更したあと、root権限で上書きコピーするのが安全でしょう。
| 「ターミナル」上で青字部分を入力する(httpd.confの編集) | 
| % cp /etc/apache2/httpd.conf .  ← 手元にコピーする
%  ...   ← 慣れたエディタで手元の httpd.conf を編集する
%  sudo cp httpd.conf /etc/apache2/  ← root権限で上書きコピーする | 
以下の2行を変更する。コメントアウトをはずすことで「ユーザディレクトリが有効化」される。
| httpd.conf の変更点 (diff -c の出力) | 
| *** /etc/apache2/original/httpd.conf	Fri Dec  2 20:37:28 2022
--- /etc/apache2/httpd.conf	Sat Feb 25 13:25:15 2023
***************
*** 183,185 ****
  #LoadModule speling_module libexec/apache2/mod_speling.so
! #LoadModule userdir_module libexec/apache2/mod_userdir.so
  LoadModule alias_module libexec/apache2/mod_alias.so
--- 183,185 ----
  #LoadModule speling_module libexec/apache2/mod_speling.so
! LoadModule userdir_module libexec/apache2/mod_userdir.so
  LoadModule alias_module libexec/apache2/mod_alias.so
***************
*** 520,522 ****
  # User home directories
! #Include /private/etc/apache2/extra/httpd-userdir.conf
  
--- 520,522 ----
  # User home directories
! Include /private/etc/apache2/extra/httpd-userdir.conf
  
 | 
httpd.conf は
/etc/apache2/original/httpd.conf
にオリジナルがあるので、いつでも初期状態に戻すことができる。(sudo を使って root 権限で上書きコピーすればよい。)
-  /etc/apache2/extra/httpd-userdir.conf を編集する。
httpd-userdir.conf を編集するには root 権限が必要である。
一旦ファイルを手元にコピーして、慣れたエディタで変更したあと、root権限で上書きコピーするのが安全でしょう。
| 「ターミナル」上で青字部分を入力する(httpd-userdir.confを変更) | 
| % cp /etc/apache2/extra/httpd-userdir.conf .  ← 手元にコピーする
%  ...   ← 慣れたエディタで手元の httpd-userdir.conf を編集する
%  sudo cp httpd-userdir.conf /etc/apache2/extra/  ← root権限で上書きコピーする | 
以下の1行を変更する。
| httpd-userdir.conf の変更点 (diff -c の出力) | 
| *** ../original/extra/httpd-userdir.conf	Fri Dec  2 20:37:28 2022
--- httpd-userdir.conf	Sat Feb 25 14:14:07 2023
***************
*** 14,18 ****
  # for a site where these directories are restricted to read-only.
  #
! #Include /private/etc/apache2/users/*.conf
  <IfModule bonjour_module>
         RegisterUserSite customized-users
--- 14,18 ----
  # for a site where these directories are restricted to read-only.
  #
! Include /private/etc/apache2/users/*.conf
  <IfModule bonjour_module>
         RegisterUserSite customized-users
 | 
httpd-userdir.conf は
/etc/apache2/original/extra/httpd-userdir.conf
にオリジナルがあるので、いつでも初期状態に戻すことができる。(sudo を使って root 権限で上書きコピーすればよい。)
-  /etc/apache2/users/{自分のユーザ名}.conf を作成する。
/etc/apache2/users/ にファイルを作成するには root 権限が必要である。
慣れたエディタを利用して手元で作成したあと、root権限で上書きコピーするのが安全でしょう。
| 「ターミナル」上で青字部分を入力する(nitta.confの作成) | 
| %  ...   ← 慣れたエディタで手元で nitta.conf を作成する
%  sudo cp nitta.conf /etc/apache2/users/   ← root権限でコピーする | 
{自分のユーザ名}.conf を作成する。以下は、ユーザ名が 'nitta' の場合である。
| nitta.confの内容 | 
| <Directory "/Users/nitta/Sites">
  Options Indexes FollowSymLinks Multiviews
  AllowOverride all
  Require all granted
</Directory>
 | 
- httpd を再起動する。
| 「ターミナル」上で青字部分を入力する(再起動) | 
| % sudo /usr/sbin/apachectl restart  Password:     ← 自分のパスワードを入力する(エコーバックされない) | 
公開するファイルを置く
公開するファイルは ~/Sites/ におく。
URL は http://localhost/~nitta/ となる。
公開するファイルを置く(2)
公開するファイルは ~/Sites/ におく。
URL は http://localhost/~nitta/ となる。
公開するファイルを置く(3)
ユーザが公開するフォルダに index.html や index.php が存在しない場合は、
ディレクトリの一覧が表示される。
ファイル名が長くても正しく表示したい場合は ~/Sites/.htaccess に以下の記述を追加する。
