본문 바로가기
프로그래밍/PHP

Mac OSX에서 Apache + MySQL + PHP 개발환경 구축하기

by o테리o 2010. 3. 19.
MAMP란 Macintosh + Apache + MySQL + PHP의 줄임말로 LAMP와 유사한 개념이다.

Mac OSX Tiger에는 기본적으로 Apache와 PHP가 설치되어 있으나 버전이 낮아서 (각각 1.3, 4) 좀 찜찜한 면이 있다. 편리하게 사용하려면 환경설정 > 공유 에서 간단하게 apache를 기동해 줄 수 있고, MySQL의 경우 홈페이지에서 OSX용으로 컴파일된 녀석을 이용해주면, 편리하게 셋팅할 수 있다.

만약 최신버전의 MAMP의 환경을 구축하고 싶다면 두가지 방법이 있는데, 하나는 Darwinport를 이용하는 방법과 webEdition사의 MAMP 를 이용하는 방법이 있다. (다운로드는 http://mamp.info에서 받을 수 있다. ) Darwinport의 경우 최신 버전의 소스를 받아서 Xcode로 컴파일을 하는 것이라 가장 최신의 버전을 유지할 수 있고, 한번 설정을 잘 잡아두면 업데이트도 편하다는 장점이 있다. 그리고 Darwinport가 알아서 데몬으로 돌려주기 때문에 매 부팅마다 따로 실행해 주지 않아도 된다. http://wiki.opendarwin.org/index.php/DarwinPorts:MAMP 를 참고하면 Darwinport를 이용해서 셋팅하는 방법이 있는데, 애휴.. 이거 솔직히 너무 복잡하다.

이리저리 해매던 중 발견한 webEdition의 MAMP는 윈도우에 있어서 APMSETUP이나 XAMPP를 떠올리게 한다. 오히려 더 간단하다. 그냥. 이미지 파일 안에 있는 MAMP란 디렉토리를 응용프로그램(/Application) 디렉토리에 복사해넣으면 된다. 그리고 시동을 편하게 할 수 있는 위젯도 포함되어있다. 기본 OS의 설정을 하나도 건드리지 않기 때문에 문제가 되면 MAMP디렉만 날려버리면 된다. 모든 데이터, 설정이 MAMP디렉 안에 있으니 맘이 편하다. ㅎㅎ

다만, 유일한 단점을 굳이 꼬집자면 현재 MySQL 5.0.19로 최신 버전인 5.0.22보다 3단계 낮다는 점. 그러나, 다년간의 경험을 통해 The more hard to install, the more hard to update.란 귀중한 교훈을 얻었다. 귀찮아서 한두번 업뎃 안하면 그냥 버전 낮은 쉬운 설치방법을 사용한 것이 금방 따라잡는다. Simple is the best다. ㅎㅎ

단, MySQL의 경우 개발을 편하게 하려면 몇가지 요령이 필요하다.

1. MAMP의 기본포트를 80, 3306으로 변경
MAMP는 참으로 소심하게도 기본 포트도 안 건드린다. 그래서 귀찮게 매번 포트를 적어주기 싫으면 MAMP 프로그램 화면에서 Preferences > port 에서 기본 포트로 선택해주게 하면 /Applications/MAMP/bin/ 디렉토리에 있는 서버 구동 스크립트들에 적힌 포트를 고쳐준다. 이상태에서 Mac OSX의 기본 웹 공유를 사용하면 MAMP껀 무시되고 기본 웹 공유 apache가 80포트를 먹으므로 주의.

2. MAMP의 기본 디렉토리 (htdoc) 변경
개발의 편의를 위해 /Applications/MAMP/htdocs 의 기본 웹 디렉토리를 ~/Sites로 변경. MAMP 프로그램 화면에서 Preferences > Apache에서 바꿀 수 있다.

3. /tmp/mysql.sock 사용하기
cocoaMySQL이나 MySQL Administrator 등의 프로그램은 서버에 접속할때 그냥 포트로 접속하는 척 하면서 정작 로컬로 접속할땐 socket접속을 시도한다. MAMP의 MySQL은 /Applications/MAMP/tmp/mysql.sock에 소켓을 만들어두기 때문에 일반적으로 소켓을 찾는 곳인 /tmp/mysql.sock로 고쳐주면 편리하다.

/Applications/MAMP/bin/ 에 있는 startMysql.sh 파일과 stopMysql.sh파일에 보면 --socket=... 라고 쓰여있는 부분이

--socket=/Applications/MAMP/tmp/mysql.sock /tmp/mysql.sock
라고 되어있는 것을

--socket=/tmp/mysql.sock


로 수정해준다. 그리고 여담으로, 만약 root의 암호를 지워버렸다면 stopMysql.sh에서 -proot 라고 되어있는 부분을 삭제해준다.

4. ~/.bash_login 에 PATH추가
.bash_login 은 터미널이 열릴때 처음 실행되는 명령문을 넣어둘 수 있다. 다음과 같이 넣어두면 MAMP의 콘솔 명령어를 이용할 수 있다. MAMP 기동 스크립트인 start.sh 등등은 .../MAMP/bin에 있고, mysql, mysqldump등등의 실행 파일은 .../MAMP/Library/bin에 들어있다. 다음과 같이 필요한 것을 추가해주자. (솔직히 start.sh를 쓰는 것 보다는 위젯을 쓰는게 더 편한것 같다.)

export PATH = “/Applications/MAMP/bin:/Applications/MAMP/Library/bin:$PATH”


5. phpMyAdmin의 버전을 최신버전으로
기본으로 들어있는 phpMyAdmin은 http://localhost/phpMyAdmin으로 접속할 수 있는데, 버전이 낮고 한글 언어팩도 빠져있다. phpMyAdmin 홈페이지에서 최신버전을 받아다가 /Applications/MAMP/bin/phpMyAdmin 디렉 안에 넣어주면 된다. 원래 phpMyAdmin 최신버전에는 config.inc.php 파일이 빠져 있어서 처음 쓰려면 셋팅을 해줘야하는데, MAMP 기본 phpMyAdmin을 지우지 않고 그냥 덮어쓰면 원래 있던 config.inc.php을 그대로 사용하는 셈이므로 편리하다. 셋팅을 새로 하고 싶다면 config.inc.php를 지우고 http://localhost/phpMyAdmin/scripts/setup.php를 부르면 간단하게 필요한 셋팅만 적힌 config.inc.php파일을 만들어낼 수 있다.
간단히, 서버를 localhost로 추가해주고 (root 암호도 비운다. Rails에서 편하게 개발하려고 나는 암호를 지정하지 않는다.) 나머진 그냥 기본값으로. 그리고 encoding에서 utf-8로 잡아주고 configuration > download를 클릭하면 만들어진 config.inc.php파일을 받을 수 있는데 이걸 phpMyAdmin 깔린곳에 넣어주면 끝이다.

6. 만약을 위해 서비스 툴 접근은 localhost에서만 가능하도록
apache 설정 파일인 httpd.conf는 /Applications/MAMP/conf/apache에 들어있다. (PHP는 .../conf/php5에 들어있으니 입맛에 맞게 고쳐쓰자) phpMyAdmin으로 검색해보면 Alias를 지정하는 부분과 디렉토리 권한 설정하는 부분이 있다. phpMyAdmin, SQLiteManager, mamp 에 대한 것들이다. 외부에서의 접속을 막고 싶은 것들은

Order allow, deny
Allow from all




Order deny, allow
Deny from all
Allow from localhost


라 는 구문으로 고쳐주자. 나처럼 root 암호 없이 쓰려면 이 작업은 필수!

7. MySQL 셋팅을 utf-8로

내가 개발하는 서버는 모두 utf-8기반이다. MySQL은 기본으로 latin1으로 인코딩 설정이 되어있어서 그냥 한글을 마구 쓰다가는 엉키는 수가 있다. 인코딩 확인은 phpMyAdmin에서 MySQL 환경설정값 보기에서 볼 수 있다.

MySQL은 어디에 깔리든 /etc/my.cnf파일을 참조하게 되어있다. 터미널을 열고

[mysqld]
#Don’t allow connections via TCP/IP.
skip-networking
#Set the default character set.
default-character-set=utf8
#Set the default collation.
default-collation=utf8_general_ci

[client]
default-character-set=utf8

와 같은 내용으로 만들어주면 된다. localhost에서만 MySQL에 접속할 수 있게 하고, 기본 인코딩은 utf8, collation은 utf8_general_ci 그리고 가끔 접속할때 삽질하는 client를 지도편달해주기 위해 [client]항목도 추가해준다.

출처는 정목이의 블로그