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 & 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용 디렉토리 인덱스 블록 변경
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'; //수정함