2022/11/14 Updated by

Mac arm64

Apache httpd


[Up] Japanese English

インストール状況の確認

  1. 最近の macOS では、Apache httpd が標準インストールされている。
  2. apache httpd がインストールされていることを確認する。
  3. 「ターミナル」上で青字部分を入力する。('%' はプロンプトを表している)
    % 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
  4. httpdの設定ファイルを調べてコンテンツを格納する場所を確認する。
  5. 「ターミナル」上で青字部分を入力する
    % 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 を起動・停止する

  1. 起動する
  2. 「ターミナル」上で青字部分を入力する(起動する)
    % sudo /usr/sbin/apachectl start      ← httpd を管理者権限で起動する
    Password:     ← 自分のパスワードを入力する(エコーバックされない)
    
  3. ブラウザで http://localhost/ にアクセスする。 文書フォルダに index.html がない場合は、"It works!" とだけ表示される。



  4. 停止する。
  5. 「ターミナル」上で青字部分を入力する(停止する)
    % sudo /usr/sbin/apachectl stop      ← httd を管理者権限で停止する
    Password:     ← 自分のパスワードを入力する(エコーバックされない)
    

設定を変更する

  1. Apache httpd の設定ファイルは /etc/apache2/ にある。
  2. 「ターミナル」上で青字部分を入力する(設定ファイルを確認する)
    % 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
  3. /etc/apache2/httpd.conf を編集する。
  4. 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 権限で上書きコピーすればよい。)

  5. /etc/apache2/extra/httpd-userdir.conf を編集する。
  6. 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 権限で上書きコピーすればよい。)

  7. /etc/apache2/users/{自分のユーザ名}.conf を作成する。
  8. /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>
    
  9. httpd を再起動する。
  10. 「ターミナル」上で青字部分を入力する(再起動)
    % sudo /usr/sbin/apachectl restart 
    Password:     ← 自分のパスワードを入力する(エコーバックされない)
    

公開するファイルを置く

公開するファイルは ~/Sites/ におく。 URL は http://localhost/~nitta/ となる。


公開するファイルを置く(2)

公開するファイルは ~/Sites/ におく。 URL は http://localhost/~nitta/ となる。


公開するファイルを置く(3)

ユーザが公開するフォルダに index.html や index.php が存在しない場合は、 ディレクトリの一覧が表示される。 ファイル名が長くても正しく表示したい場合は ~/Sites/.htaccess に以下の記述を追加する。

~/Sites/.htaccess
Options +Indexes
IndexOptions NameWidth=* Charset=UTF-8