Part 1에서는 Mac OS X에 Ruby on Rails와 서버프로그램들을 설치하기 위한 준비단계로 몇가지 프로그램들을 설치해 보았다. 이제 본격적으로 프로그램의 설치를 시작해 볼 것이다. 먼저 이 단계에서는 Apache 웹서버와 PHP, MySQL을 설치해 보자.
4. Apache2 설치
가장 먼저 Apache2를 설치한다. 이미 Mac OS X에는 Apache1 이 설치되어 있지만, Ruby on Rails를 Mongrel를 이용해서 돌리기 위해서는 Apache2 버전이 필요하다. Mac OS X의 System Preferences의 Sharing에서 Personal Web Sharing이 멈춰져 있는지 확인하고 멈춰져 있지 않다면 웹서버를 종료(Stop)한다 (그림 참조).
웹서버를 종료했으면, 이제 터미널을 열고 다음의 명령을 입력하여 Apache2를 설치한다.
sudo port install apache2
설치가 성공적으로 끝나다면 이제 Apache2 서버가 사용할 configuration 파일을 만들어 주어야 한다. 일단 기본적으로 포함된 configuration file을 사용하도록 하고, 만일 나중에 필요하다면, 이 파일을 수정하도록 할 것이다.
터미널에서 /opt/local/apache2/conf 디렉토리로 이동한 후 다음과 같은 명령어를 실행한다. 이 명령어는 Apache2를 설치할 때 자동으로 설치되는 httpd.conf.sample 파일을 이름을 바꾸어 우리가 사용할 기본 configuration 파일로 만들어 준다.
cd /opt/local/apache2/conf
sudo cp httpd.conf.sample httpd.conf
이제 Apache2 서버를 실행해 보자. 다음의 명령어를 터미널에서 입력하면 Apache2가 시작된다. 이 파일은 시스템의 launchd에 등록이 되어서 컴퓨터가 시작될 때마다 자동으로 Apache2 서버가 실행이 된다.
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
참고: Mac OS X 10.4.7 이후 버전에서 launchctl을 실행하면 1-2분 뒤에 에러메시지가 한번 뜨는데, 아마도 이것은 시스템의 버그인 것으로 생각된다. 별 문제 없으니 그냥 무시하면 된다.
자… 이제 웹서버 설치가 끝났다. :) 제대로 작동하는지 웹브라우저를 실행해서 확인해 보도록 하자.
웹브라우저에서 http://localhost/ 를 입력했을때 “It works!”라는 메시지가 보이면 서버가 제대로 설치된 것이다. 디폴트로 보여주는 웹페이지는 /opt/local/apache2/htdocs에 저장되어 있다. 따라서 “It works!” 대신 다른 페이지가 보여지길 원하면 원하는 웹페이지를 이 디렉토리에 넣으면 된다.
참고: 웹서버를 멈추고 실행하기 위해서 더 이상 System Preferences를 이용해서는 안된다. 현재 시스템에는 두개의 웹서버가 설치되어 있기 때문에 System Preferences에서 Personal Web Sharing을 실행한다면 이미 시스템에 기본으로 설치되어 있던 Apache1이 실행될 것이다. 따라서, 우리가 새로 설치한 Apache2 웹서버를 멈추고 실행하기 위해서는 apachectl 라는 터미널 명령어를 이용해야 한다.
그런데, 당연한 이야기지만 이 apachectl도 두개가 존재한다. 그래서 터미널에서 그냥 “sudo apachectl start“라는 명령을 입력하면 우리가 설치한 Apache2 버전이 실행되는 것이 아니라 이전 버전의 Apache1 가 실행이 된다. 그 이유는 이전 버전의 apachectl이 설치된 /usr/sbin 디렉토리가 새 버전의 apachectl 이 설치된 /opt/local/apache2/bin/ 보다 우선하기 때문이다.
시스템에 이미 설치된 웹서버를 삭제하면 해결되는 문제이지만, apachectl 명령어나 기타 apache 관련 명령어를 그리 자주 쓸일이 없기 때문에 필요한 경우 다음과 같이 전체 pass를 입력해 주는 방법이 보다 쉽고 안전하지 않을까 생각한다.
/opt/local/apache2/bin/apachectl start (or stop/restart)
5. MySQL 설치
MySQL 설치와 관련해서는 niceview님이 위키에 아주 자세히 설명을 해주셨기 때문에 여기서는 자세한 설명은 생략할 것이다. (아래의 링크를 꼭 읽어보도록 하자. 그리고 MySQL의 설치와 관련한 모든 내용의 저작권은 niceview님께로.)
http://wiki.bawi.org/index.php/Mac에서_Rails_개발환경_구축하기#MySQL
먼저 터미널을 열고 다음의 명령어를 입력해서 MySQL 5 를 설치한다.
sudo port install mysql5 +server
만약 mysql을 처음으로 인스톨하는 거라면, 설치가 끝나고 기본 데이타베이스를 생성해야 한다. 터미널에서 다음의 명령어를 입력하여 데이타베이스를 생성한다. 데이타베이스는 /opt/local/var/db/mysql5 디렉토리에 생성된다.
sudo -u mysql mysql_install_db5
데이타베이스 생성이 끝났으면 Apache2와 마찬가지로 다음의 명령어를 통해 mysql 서버를 기동시킬수 있다. 이 역시 launchd에 등록되어 시스템 시동시에 자동으로 시작된다.
sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
이제 한글 처리를 위해 MySQL 시스템을 UTF8 환경으로 설정해 보도록 할 것이다.
먼저 터미널에서 다음의 명령어를 실행해서 my.cnf 라는 파일을 만든다.
sudo pico /opt/local/etc/mysql5/my.cnf
참고: 여기서는 pico 를 썼지만, 다른 손에 익은 에디터가 있다면 당연히 그것을 쓰면 된다.
에디터가 뜨면 다음의 내용을 입력하고 저장한다.
[mysqld]
skip-networking
default-character-set=utf8
default-collation=utf8_general_ci
[client]
default-character-set=utf8
다음은 mysql의 unix socket을 설정할 차례다. MacPorts로 mysql을 설치하고 실행하면 unix socket 이 기본적으로 /opt/local/var/run/mysql5/mysqld.sock로 설정된다. 그러나 일부 프로그램들이 소켓을 /tmp/mysql.sock에서 찾기 때문에 종종 소켓을 찾을 수 없다는 에러가 뜨곤 한다. 이를 위해서는 처음에 mysqld를 띄울때 socket 옵션을 주어서 (–socket=/tmp/mysql.sock) 소켓의 위치를 지정해 주거나 /opt/local/var/run/mysql5/mysqld.sock을 /tmp/mysql.sock 로 심볼릭 링크를 시켜주어야 하는데 (niceview님의 방법), 후자가 훨씬 간편한 방법인 듯 하다. 다만, 매번 시스템을 재시동했을때 심볼링 링크가 자동으로 생성되도록 user agent script을 만들어야 한다. niceview님이 만드신 스크립을 사용하면 손쉽게 이 문제를 해결할 수 있다. 터미널을 열고 다음의 명령을 실행한다.
sudo pico /Library/LaunchAgents/net.jeongmok.LinkMySQLSocket.plist
에디터가 뜨면 다음의 내용을 입력하고 저장한다.
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0”>
<dict>
<key>Label</key>
<string>net.jeongmok.LinkMySQLSocket</string>
<key>ProgramArguments</key>
<array>
<string>/bin/ln</string>
<string>-fs</string>
<string>/opt/local/var/run/mysql5/mysqld.sock</string>
<string>/tmp/mysql.sock</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
그런 다음, launchctl을 이용해서 만들어진 plist 파일을 LaunchAgent 에 등록한다.
sudo launchctl load -w /Library/LaunchAgents/net.jeongmok.LinkMySQLSocket.plist
이제 MySQL의 기본적인 설정이 끝났으므로 MySQL의 루트 패스워드를 지정한다.
터미널에서 다음의 명령어로 루트의 패스워드를 지정할 수 있다.
/opt/local/lib/mysql5/bin/mysqladmin -u root password ‘new-password’
/opt/local/lib/mysql5/bin/mysqladmin -u root -h [hostname] password ‘new-password’
패스워드가 제대로 지정이 되었는지는 다음의 명령어로 확인해 보도록 하자.
mysql5 -u root -p
마지막으로 몇가지 mysql 명령어들의 심볼릭 링크들을 만들어 보도록 할 것이다.
바로 위의 명령어에서도 볼수 있듯이 mysql 을 MacPorts를 이용해서 설치를 하게 되면 /opt/local/lib/mysql5/bin 아래에 있는 mysql 명령어 들을 /opt/local/bin 디렉토리에 심볼릭링크를 자동으로 만들어 주는데, 명령어 뒤에 모두 5라는 버전넘버가 붙는다. 아마도 여러 버전의 mysql 서버를 설치한 사용자들을 위한 배려인 듯 싶다.
lrwxr-xr-x 1 root admin 23 Dec 25 23:05 mysql5 -> ../lib/mysql5/bin/mysql
lrwxr-xr-x 1 root admin 28 Dec 25 23:05 mysqladmin5 -> ../lib/mysql5/bin/mysqladmin
만일 mysql5 라는 식의 버전넘버가 붙는 형태에 익숙하지 않다면 자주 쓰는 명령어들에 대해서 새로운 심볼릭링크를 만들어 두도록 하자.
cd /opt/local/bin
ln -sf ../lib/mysql5/bin/mysql mysql
ln -sf ../lib/mysql5/bin/mysqladmin mysqladmin
또한 MySQL의 재시작을 편리하게 하기 위해 다음과 같은 심볼릭링크를 만들어 두는 것도 좋다.
cd /opt/local/bin
ln -sf ../etc/LaunchDaemons/org.macports.mysql5/mysql5.wrapper mysqld
심볼릭링크가 만들어 졌다면 앞으로 다음과 같이 명령어를 사용하면 된다.
sudo mysqld restart #mysql 서버를 시작하는 명령어
6. PHP5 설치
이상의 단계에서 MySQL까지 설치를 했으면 이제 PHP5를 설치한다. Ruby on Rails를 설치하는데 PHP를 설치할 필요가 있을까? :) 사실 그럴 이유는 전혀 없다… 개인적으로 PHP도 같이 쓰고 있기 때문에 함께 설치를 해 두었을 뿐이다. 그러나, 가끔 게시판이나 위키 등을 설치할 필요가 있을 때 PHP가 필요하기도 하고, phpMyAdmin과 같은 MySQL 관리 툴을 설치하려고 해도 PHP가 필요하다. 하지만, PHP가 전혀 필요없다면 이 과정은 건너 뛰어도 된다.
PHP를 설치하기 위해서는 터미널에서 다음과 같은 명령어를 입력한다.
sudo port install php5 +apache2 +mysql5 +ssl
설치가 끝난 후, 다음의 명령어를 입력한다.
cd /opt/local/apache2/modules
/opt/local/apache2/bin/apxs -a -e -n “php5″ libphp5.so
이 과정은 /opt/local/apache2/conf/httpd.conf 파일에 libpho5.so 모듈을 추가하게 될 것이다.
참고: 만약 이전에 PHP5를 설치한 적이 있다면 이미 이 모듈이 http.conf에 추가되어 있을 것이기 때문에 이 작업은 필요없다.
httpd.conf 파일을 확인해 보면 LoadModule 말미에 다음의 내용이 추가된 것을 확인 할 수 있다.
LoadModule php5_module modules/libphp5.so
터미널에서 다음과 같이 입력하여 php.ini 파일을 만든다.
sudo cp /opt/local/etc/php.ini-dist /opt/local/etc/php.ini
이제 아까 위에서 만들었던 httpd.conf 파일을 조금 수정하도록 하자. 에디터로 /opt/local/apache2/conf/httpd.conf 파일을 연다.
sudo pico /opt/local/apache2/conf/httpd.conf
주석처리되어 있는 다음의 부분을 찾아서 다음과 같이 고쳐준다. (# 을 지워준다.)
# Language settings
Include conf/extra/httpd-languages.conf
# User home directories
Include conf/extra/httpd-userdir.conf
참고: 자신에게 필요한 conf 파일이 있다면 해당 extra conf 파일도 같이 활성화한다.
적당한 위치에 (include가 있는 부근) 다음의 내용을 추가해준다.
# PHP modules
Include conf/extras-conf/*.conf
httpd.conf 파일을 저장했으면 터미널에서 다음의 명령어로 Apache2 서버를 재기동한다.
sudo /opt/local/apache2/bin/apachectl restart
이제 지금까지 설치한 apache, mysql, php가 모두 잘 작동하는지 테스트를 해보도록 하자. 이를 위해서 터미널에서 /opt/local/apache2/htdocs로 이동을 한 다음 test.php 파일을 만든다.
cd /opt/local/apache2/htdocs
sudo pico test.php
에디터가 뜨면 다음의 내용을 입력하고 저장한다.
<? phpinfo() ?>
웹브라우저에 다음의 주소를 입력해서 에러 없이 php 설정에 관한 페이지가 보인다면 제대로 설치가 된 것이다. PHP 정보 뿐 아니라 간략한 Apache와 MySQL의 정보도 확인할 수 있다.
http://localhost/test.php
지금까지 MacPorts를 이용해서 Apache2, PHP5, MySQL5 를 설치해 보았다. Part 3에서는 본격적으로 Ruby on Rails를 설치해 보도록 할 것이다.
User agent script가 무엇인지요?
구글링을 통해서도 적당한 답을 엇지 못했습니다. 보기엔 xml형식을 빌어 plist확장자로 파일을 생성후 LaunchAgent폴더에 넣는데. LaunchAgent폴더는 또 어떤 목적으로 이용되는 폴더인지 궁금하군요.
제가 위에 남긴 코멘트는 약간의 버그때문에 깨졌군요. 아무래도 한글입력상태에서 그림에 나타난 문자들 입혁하는 부분을 하고나면 이렇게 버그가 있는것 같습니다.
아참 niceview님의 Mysql설치관련 위키는 링크가 제데로 되지 않더군요. 아무래도 niceview님의 위키에 문제가 있는것 같습니다.
자꾸 깨지는군요. 밑의 키 입력이 잘 못됐다면서..
———————
질문 하나 더합니다. 도배같은 분위기가 듭니다. ^^;
Mysql의 패스워드 설정 부분에서 hostname을 넣는 부분에는 어떤 값을 넣어야 하느지요? 물론 호스트네임 이겠지만 어떻게 찾는지 궁금합니다. ^^ 그리고 어떤 호스트를 말하는 걸까요? 아파치? 는 아니겠죠? 그럼 Mysql뿐인데..^^
제가 잠시 어딜 다녀오느라 답변이 늦었습니다. 맥오에스는 unix의 init.d 처럼 시동시에 특정 서비스를 launch 하기 위해서 launchd 라는 것을 사용합니다. User Agent Script는 이를 위해 사용되는 겁니다. 설정값의 내용을 plist로 만들어 넣어주면 시동시에 내용을 읽어서 launch 해줍니다.
좀더 자세한 내용은 다음을 참고하세요.
http://developer.apple.com/macosx/launchd.html
그리고, 글이 깨진 포스팅은 지웠습니다 :)
mysql 서버와 관련해서는, 로컬컴퓨터에 설치를 하셨을테니 서버이름은 localhost 를 넣어주시면 됩니다.