ETC -

macOS Apache 설치하기

  • -

macOS에 Homebrew로 Apache 설치하기

안녕하세요 TriplexLab 입니다.

오늘은 macOS에 Homebrew로 Apache 설치하는 방법을 살펴보겠습니다.

👉🏻 1. macOS 11.4 Big Sur 개발환경 세팅

1. Big Sur 필수 라이브러리 설치를 위해 아래 명령어를 수행합니다.

> brew install openssl

2. 내장 Apache가 이미 실행 중인 경우 먼저 종료하고 자동 로드 스크립트를 제거해야 합니다.

> sudo apachectl stop
> sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

3. Brew에서 제공하는 Apache HTTPD (오픈 소스 기반 웹 서버)의 새 버전을 설치해야 합니다.

> brew install httpd

설치하면 아래와 같이 DocumentRoot와 아파치 설정 파일의 경로
(/opt/homebrew/etc/httpd/httpd.conf)를 알려줍니다.

아파치 설치된 경로 확인

4. 새 Apache 서버가 자동으로 시작되도록 합니다.

> brew services start httpd

5. http://localhost:8080 브라우저에 접속하면 "It works!"라는 간단한 헤더가 표시되어야 합니다.

Apache 서버 실행하고 브라우저 접속

👉🏻 2. 아파치 설정파일 변경

Apache 구성

이 작동하는 웹 서버를 "로컬 개발 서버"로 작동하도록 일부 구성을 변경해주어야합니다. 
Visual Studio Code 를 열어 파일을 편집해줍니다.
mac에서 숨은 디렉토리들 볼려면 command + shipt + . 을 눌러서 숨은 파일을 확인할수 있습니다.

숨은 디렉토리들을 다시 안보이게 할려면 command + shipt + . 를 또 누르면 됩니다.

루트 경로에서 숨은 파일을 확인

반투명한 파일들이 숨은 폴더들 입니다.
여기서 이제 위에서 확인한 (/opt/homebrew/etc/httpd/httpd.conf) 경로를 따라 들어가서 Apache가 설치된 곳을 찾습니다.
httpd.conf을 찾았으면 Visual Studio Code에서 열어줍니다.

httpd.conf 확인

👉🏻아파치 설정 포트 변경

🛠 아파치 설정 파일에서 포트의 default 값을 8080에서 80으로 바꾸어 줍니다.

Listen 8080 
=> Listen 80

원하는 포트번호를 설정

👉🏻아파치 설정 패스 변경

🛠 아파치의 DocumentRoot가 자신의 홈 디렉토리에 있는 폴더(ex. Documents/Sites)를 가리키도록 변경해 줍니다.
바로 밑의 Directory 태그도 새 문서 루트를 가리키도록 변경해줍니다.

DocumentRoot "/usr/local/var/www" 
<Directory "/usr/local/var/www">
=> DocumentRoot "/Users/your_user/Documents/Sites"
=> <Directory "/Users/your_user/Documents/Sites">

Directory 태그도 새 문서 루트를 가리키도록 변경

나중에 Root디렉토리(프로젝트폴더) 구조를 변경하면 여기 설정에 다시와서 path(경로)를 변경해줘야 합니다.

👉🏻AllowOverride 설정 변경

🛠 동일한 Directory블록에서 AllowOverride 설정을 다음과 같이 변경해 줍니다.

AllowOverride None 
=> AllowOverride All

🛠 주석 처리된 mod_rewrite 를 활성화 해줍니다.

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

mod_rewrite 활성화

User & Group 

🛠 기본적으로 Apache는 사용자 daemon 및 그룹 으로 실행됩니다. 
우리의 홈 디렉토리에 있는 파일에 접근 할 수 있도록 User와 Group을 변경해줍니다.

User _www
Group _www
=> User your_user
=> Group staff

User&nbsp;&&nbsp;Group

Servername

#ServerName www.example.com:8080 
=> ServerName localhost

Servername

이제 Sites (홈 디렉토리의 폴더)를 가리키는 Apache가 구성되었습니다.

👉🏻 3. Sites 폴더에 html 파일 추가

apache가 가리키는 Sites 폴더를 생성하지 않았다면, 터미널 창을 열어 아래를 수행합니다.

> mkdir /Users/your_user/Documents/Sites
> cd /Users/your_user/Documents/Sites
> echo "<h1>My User Web Root</h1>" > index.html

구성 변경 사항이 적용되었는지 확인하려면 Apache를 다시 시작합니다.

> brew services stop httpd
> brew services start httpd

http://localhost:80 브라우저에 접속하면 "My User Web Root"라는 간단한 헤더가 표시되어야 합니다.

Apache 다시 실행 브라우저에 접속

👉🏻4. Sites 폴더에 php 파일 추가

조금 전의 아파치 설정 파일(/opt/homebrew/etc/httpd/httpd.conf)에서

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

LoadModule라고써져 있는 맨마지막 아래에 다음 libphp모듈을 추가합니다.
php 연동 설정을 위한 libphp 모듈 위치 확인 명령어 입니다.

> find /opt/ -name libphp*

libphp 모듈 경로 확인 참고용


✅ libphp.so 경로를 잘 체크해야합니다.

LoadModule php7_module /opt//homebrew/lib/httpd/modules/libphp.so

libphp.so 모듈 경로 확인

PHP용 디렉토리 인덱스를 명시적으로 설정해야 하므로 다음 블록을 변경해줍니다.

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

=>

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

PHP용 디렉토리 인덱스 블록&nbsp;변경

php가 설치 되어 있지 않다면 아래 명령을 수행해줍니다.

> brew tap shivammathur/php 
> brew install shivammathur/php/php@8.0

apache를 다시 실행하고 Sites 폴더 아래에 php 파일을 작성해줍니다.

> brew services stop httpd
> brew services start httpd

> cd /Users/your_user/Documents/Sites
> echo "<?php phpinfo();" > index.php

http://localhost:80 브라우저에 접속하면 phpinfo 내용이 나옵니다.

phpinfo 내용이 확인

php 버전 업그레이드 하기

php 버전 업그레이드 하기위해서는 원하는 버전을 끝에 작성합니다.

> brew install shivammathur/php/php@8.0

그리고 libphp.so 모듈파일 경로를 확인해보고

> find /opt/ -name libphp*

업그레이드 하고자하는 버전 경로 (php@8.0)나오면 그거에 맞에
LoadModule에 수정하면 됩니다.👇🏻👇🏻

아파치 설정 파일(/opt/homebrew/etc/httpd/httpd.conf)에서 libphp.so 경로를 수정 합니다.

 

LoadModule php_module /opt/homebrew/opt/php@8.0/lib/httpd/modules/libphp.so

👉🏻PHP 인식 오류

php 데이터 셀렉하는 코드가 화면에 노출

위와 같이 화면에 php 데이터 셀렉하는 코드가 노출되는 현상을 해결하는 방법은 다음과 같습니다.

1) php 인식 - httpd.conf

// httpd.conf
<IfModeule mime_module>
  추가👉🏻 AddType application/x-httpd-php .php .php3 .inc .ph .htm .html
</IfModule>

윈도우에서 xampp프로그램을 설치했을 경우
👉🏻 httpd-xampp.conf파일로 이동후 설정합니다.

// httpd-xampp.conf
<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>
추가👇🏻👇🏻
<FilesMatch \.html$>
    SetHandler application/x-httpd-php
</FilesMatch>

2) php 인식 - php.ini

// php.ini
short_open_tag = Off
👇🏻👇🏻아래와 같이 변경해준다. 
short_open_tag = On

👉🏻PHP path 경로 잘못되었을때

다음과 같이 PHP path 경로는 찾을수 없다는 경우입니다.

구성된 저장 경로 ''은(는) 디렉토리가 아니거나 존재하지 않거나 생성할 수 없습니다.

👉🏻해결방법

// config.php
$config['sess_save_path'] = NULL; //기본값 NULL
수정후👇🏻👇🏻
$config['sess_save_path'] = '/tmp'; //수정함
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.