MacOS Catalina에서 Apache 환경 설정

이전(6년 전에 구입) MacBook에서 웹 서버 테스트 환경을 만들었습니다.
요즘의 사정으로, 다른 MacBook에서 비슷한 환경을 만들려고 하면, 저기? 라고 생각한 것으로부터, 이번은 여기에 기록을 남깁니다.

환경



MacOSX Catalina 10.15.3
아파치 2.4.41
루비 2.6.3

하고 싶은 일



사용자 디렉토리를 문서 루트로 게시하고 cgi를 이동합니다.

설정 내용



현재 상태



이전 MacBook에는 "사이트"(터미널의 ls에서는 "Sites")라는 폴더가 있었지만 새 MacBook에는 이 폴더가 없었습니다.~ $ sudo apachectl start를 실행하여 브라우저에서 "http://localhost/"에 액세스하면 "It works!"가 표시됩니다.
OS X에 있던 Web 서버 기능 「Web 공유」는 Mountain Lion(10.8) 이후 없어져, 홈 폴더 바로 아래 「Sites」폴더는 없어졌다(같다....)

문서 루트 만들기 및 설정


# cd /Users/hoge/     
# mkdir Sites2            #「Sites」フォルダを作成
# touch Sites/.localized  # 「.localized」ファイルを作成すると以前のように『サイト』と表示

Finder에서 확인


/private/etc/apache2/httpd.conf 편집 (숫자는 행 번호)


183 #LoadModule userdir_module libexec/apache2/mod_userdir.so
520 #Include /private/etc/apache2/extra/httpd-userdir.conf
   ↓
183 LoadModule userdir_module libexec/apache2/mod_userdir.so
520 Include /private/etc/apache2/extra/httpd-userdir.conf

/private/etc/apache2/extra/httpd-userdir.conf 편집 (숫자는 행 번호)


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

Apache를 다시 시작하고 로컬 폴더의 Sites에 index.html 만들기


~ $ sudo apachectl restart
~ $ sudo vi /Users/entero/Sites/index.html
~ $ cat /Users/entero/Sites/index.html 
Here is User dir.

브라우저에서 찾아보기



원래 문서 루트

사용자의 문서 루트

아무것도 스스로 지정하지 않았는데,/Users/hoge/Sites가 문서 루트가 되어 있었습니다.
이유는 여기에 기본적으로 "Sites"로 지정되었습니다./etc/apache2/extra/httpd-userdir.conf10 UserDir Sites
사용자 디렉토리에 작성한 문서 루트의 액세스를 제어하는 ​​지시문은
/private/etc/apache2/users/hoge.conf에 설명합니다. 예로서 다음을 설정해 보았습니다.
<Directory "/Users/entero/Sites/">
        Options Indexes        # ファイル一覧の表示を許可     
        Require all granted    # すべて許可
</Directory>

파일 index.html을 index2.html로 rename하여 설정이 활성화되어 있는지 확인했습니다.


cgi 작동



변경 부분은 2개

·/private/etc/apache2/users/hoge.conf에 사용자 디렉토리의 Sites/cgi로 cgi를 이동하도록 지정
<Directory "/Users/hoge/Sites/cgi">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory> 

·/private/etc/apache2/httpd.conf의 173 행의 코멘트 아웃을 해제
    169 <IfModule !mpm_prefork_module>
    170         #LoadModule cgid_module libexec/apache2/mod_cgid.so
    171 </IfModule>
    172 <IfModule mpm_prefork_module>
    173         LoadModule cgi_module libexec/apache2/mod_cgi.so
    174 </IfModule>

동작 확인

cgi 디렉토리에 다음 파일 test.cgi 만들기
$ cat /Users/hoge/Sites/cgi/test.cgi 
#!/usr/bin/env ruby
print "Content-Type: text/html; charset=UTF-8\n"
print "\n"
print "<html>"
print "これは<b>CGI</b>のテストです。"
print "</html>"

브라우저에서 http://localhost/~hoge/cgi/test.cgi에 액세스하면 "이것은 CGI 테스트입니다."라는 메시지가 표시됩니다.

HTML 소스가 표시되면 위의 변경 사항
문자가 깨질 때는 "charset ="을 확인하십시오.

좋은 웹페이지 즐겨찾기