tag: 개발 이야기

Postfix로 서버에서 발송되는 메일을 리다이렉트하기

2014년 7월 15일

서비스나 웹사이트를 테스트를 하다보면 사용자에게 메일이 발송되는지 확인해야 하는 경우가 있다. 또한 실제로 운영되는 서비스를 테스트 환경에 놓고 테스트 하다가 메일이 사용자에게 발송되어 버리는 경우가 생길 수 있다. 물론 sendmail을 꺼두는 것도 방법이긴 하지만… Postfix를 사용하고 있다면 서버에서 발송되는 모든 메일을 하나의 메일 주소로 수신하게 설정할 수 있다. (Postfix가 서버에 없다면 설치하자.)

먼저 /etc/postfix/recipient_canonical_map 파일을 다음과 같이 작성한다.

/./    dev@haruair.com

이 맵핑 파일에서 앞부분은 정규표현식이며 수신자가 정규표현식에 해당하면 뒷부분의 이메일로 리다이렉트 하도록 처리해준다. 정규표현식으로 여러 조건을 만들어 여러 이메일로 리다이렉트 할 수도 있다. 해당 파일을 저장하고 나서 /etc/postfix/main.cf를 열어 맵핑한 파일을 참조하도록 다음 설정을 추가한다.

recipient_canonical_classes = envelope_recipient
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical_map

위 설정에서 recipient_canonical_classes는 기본값이 envelope_recipient, header_recipient인데 header_recipient는 수신자를 해당 리다이렉트 되는 이메일로 치환해버리기 때문에 확인하는데 불편함이 있어서 위와 같이 envelope_recipient만 설정한다. 두번째는 보는 것과 같이 맵파일의 경로를 설정해준다.

수정을 완료하고 저장한 후 postfix 설정을 다시 불러오면 모든 과정이 끝난다.

$ postfix reload

postfix 설정에 관한 자세한 내용은 postfix 문서에서 확인할 수 있다.

참고로 Windows에서는 Papercut을 켜두면 해당 서버에서 발송되는 메일이 실제로는 발송되지 않고 모두 로컬에 저장되어 그 내용을 확인할 수 있다.

MAMP에서 Sublime Text로 Xdebug 사용하기

2014년 7월 15일

PHP를 디버깅하기 위해서는 Xdebug와 같은 확장을 서버에 설정해야 하고 리모트로 디버깅 하기 위한 클라이언트 프로그램이 요구된다. 이 글에서는 서버로 MAMP를 활용하며 클라이언트로 Sublime text를 활용한다.

Xdebug 활성화하기

MAMP에는 이미 Xdebug가 포함되어 있기 때문에 php.ini를 찾아 수정해주면 바로 활성화 할 수 있다. php.ini의 위치는 MAMP 기본 설치 시 /Applications/MAMP/bin/php/php<버전>/conf/php.ini에 있다. 해당 파일을 열어 가장 마지막줄로 이동하면 다음과 같이 주석처리 되어 있는 것을 확인할 수 있다.

[xdebug]
;zend_extension="/Applications/MAMP/bin/php/php5.5.10/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"

PHP 버전에 따라 위 내용이 다를 수 있다. 해당 확장을 불러올 수 있도록 맨 앞에 ;를 지운다. 그리고 리모트 디버깅을 위해 다음과 같이 내용을 추가해 저장한다.

[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.5.10/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so"
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.remote_port=9000

Sublime text에 Xdebug Client 설치 및 디버깅

Screen Shot 2014 07 15 at 12 19 17 pm

Cmd + Shift + P 를 눌러 Command Palette를 열고 Install Package를 실행해 Xdebug Client를 설치한다.

Screen Shot 2014 07 15 at 12 33 03 pm

설치 후 메뉴에서 Tools > Xdebug > Start Debugging을 실행해 디버깅 세션을 시작한다.

세션이 정상적으로 시작되었다면 디버깅 하고자 하는 페이지에 다음과 같이 디버깅 쿼리 스트링을 붙여 다시 접속해보면 Sublime Text에서 디버깅이 가능한걸 확인할 수 있다.

http://localhost/example.php?XDEBUG_SESSION_START=sublime.xdebug

Screen Shot 2014 07 15 at 12 28 19 pm

하단 4개의 창에서 Context, Watch, Stack, Breakpoint를 확인할 수 있으며 코드에서 오른쪽 클릭으로 Breakpoint나 watch expression을 추가해 확인할 수 있다.

OSX에서 사용 가능한 클라이언트

근래의 대다수 에디터와 IDE에서 기본적으로 내장되어 있어 현재 사용하고 있는 에디터나 IDE에 있는 기능을 먼저 확인해보도록 하자. 다음은 OSX에서 사용 가능한 standalone 클라이언트다.

Chrome 개발자도구 – 소소소한 팁

2014년 7월 13일

다른 브라우저를 사용하다가도 구글 크롬으로 돌아오게 되는 가장 큰 이유가 개발자 도구 때문이다. 물론 다른 브라우저에 내장된 개발자 도구들도 뛰어나지만 오래 사용하다보니 단축키나 사소한 기능들이 손에 익어버린 이유가 크다.

최근들어 멀티커서나 재미있는 기능들이 추가되고 있어 나중엔 별도의 도구 없이도 개발할 수 있는 환경이 되지 않을까 생각이 든다.

(이 글은 정말 소소소한 팁을 다루고 있다. 소소하다 못해 소소소한데 뭐 이런걸 포스팅하냐 하시면 제가 할 말이 없습니다. ;ㅅ;)

크롬 개발자도구를 더 자세히 보고 싶다면 생활코딩 크롬 개발자도구편을 살펴보자.

소소소한 팁

menu

개발자도구는 햄버거 버튼 > 도구 > 개발자 도구에서 열 수 있다. 맥에서의 단축키는 option(alt) + cmd + i로 열 수 있다.

창 크기 확인하기

Screen Shot 2014 07 13 at 9 28 41 pm

개발자도구를 연 상태에서 창 크기를 변경하면 창 크기를 표시해준다.

엘리먼트 순서 변경, 제거하기

엘리먼트를 드래그-드롭으로 순서를 변경할 수 있다. delete 키를 누르면 제거할 수 있다.

픽셀값 변경하기

px, % 등의 값은 선택하고서 ↑, ↓ 키로 값을 변경할 수 있다. Shift + ↑, ↓ 는 10단위로 이동 가능하다.

색상 변경하기

css에서 색상을 보여주는 작은 색 박스를 클릭하면 컬러픽커로 색상을 변경할 수 있다.

Pseudo class 바로 확인하기

styles 탭에서 우측 상단에 pseudo class를 확인할 수 있는 셀렉터가 있다. 클릭해보면 4개의 pseudo class를 테스트 할 수 있다.

element right

물론 해당 엘리먼트에서 오른쪽 클릭해도 확인할 수 있다.

OSX에 나만을 위한 워드프레스 설치하기

2014년 7월 4일

평소에 짧은 메모를 많이 적는 편이다. 맥에서 메모를 위해 사용할 수 있는 다양한 도구가 많이 있긴 하지만 완제품인 어플리케이션을 내 취향대로 수정해 사용할 수 없는 부분이 가장 불편하다. 손에 딱 맞는, 쉽게 사용할 수 있는 프로그램을 찾아야하는데 그게 말처럼 쉽지 않다. 그래서 내 경우에는 오래 전부터 로컬에 나만 접근 가능한 워드프레스를 만들어 글쓰기 도구로 활용하고 있다.

다양한 플러그인을 사용할 수 있고, 외부에 노출될 위험이 없으며, 추후 외부 공개로 전환하기에도 간편하다.1 만약 마크다운으로 작성하고 싶다면 일반 워드프레스를 사용하는 것과 동일하게 플러그인을 설치하면 완료된다. 특히 워드프레스가 지속적으로 업데이트 되고 있는 것도 큰 장점인데 각각의 글 변경사항을 관리해주는 부분, Just write 기능 등 글을 관리하는데 있어 유용하다. 물론 태그나 카테고리, 기간별 아카이빙 등 기본적인 기능들도 큰 도움이 된다. 워드프레스를 설치할 수 있는 환경은 MAMP라는 앱을 사용하면 쉽고 간편하게 진행 할 수 있다.

MAMP 설치하기

MAMP는 Mac을 위한 Apache, MySQL, PHP로 맥에서 웹서버를 구동해주는 앱이다. 일반적으로는 각각 설치하고 세팅해야 하는 번거로움이 있는데 MAMP는 단지 버튼 하나만 누르면 끄고 켤 수 있도록 돕는다.

MAMP를 공식 사이트에서 내려받는다.

MAMP Website

내려받은 MAMP를 설치한다. 설치에는 980MB 정도를 요구한다. 내려받은 파일을 실행해 설치한다. 2

MAMP Install

설치가 완료되면 MAMP를 실행한다. 실행하면 MAMP PRO를 실행할 것인가 물어보는데 Check for MAMP PRO when starting MAMP 체크를 해제하고 Launch MAMP 클릭한다. MAMP PRO는 서버 관리에 있어 더 편리한 도구를 많이 제공하는데 지금은 MAMP면 충분하다.

MAMP Management Panel

이제 MAMP 관리 페널인데 버튼이 3개 있다. 우측에 Start Servers 버튼을 누르면 서버가 실행되고 서버 관리 웹페이지가 뜬다.

MAMP Admin Webpage

데이터베이스 생성하기

워드프레스를 설치하기에 앞서 워드프레스의 데이터가 저장될 공간인 데이터베이스를 추가해야 한다. 위에서 본 서버 관리 웹페이지에 상단 메뉴에서 Tools > phpMyAdmin을 클릭한다.

phpMyAdmin

상단에 Databases 탭을 클릭, Create database 밑에 Database name에 wordpress를 입력하고 오른쪽 Create 버튼을 클릭한다. (다른 데이터베이스명을 사용해도 상관없다)

Create a database

워드프레스 설치하기

wordpress website

워드프레스 웹사이트에서 워드프레스를 내려받는다. 영어 또는 한국어 등 자신이 선호하는 버전을 설치하면 된다.

Apache Tab

내려받은 파일을 MAMP 안에 htdocs 폴더에 넣고 압축을 푼다. htdocs 폴더 경로는 /Application/MAMP/htdocs 인데 MAMP 관리 패널에서 Preferences… > Apache 탭으로 들어가 화살표 버튼을 누르면 MAMP 폴더가 나타난다. 거기 htdocs 폴더를 열어 거기에 받은 파일을 넣자.

다음으로 wp-config.php 파일을 내려받아 압축 해제한 폴더 안에 넣는다. wp-config.php는 앞에서 추가한 데이터베이스와 워드프레스를 연결하기 위한 정보가 들어있는 파일이다. MAMP의 기본 아이디와 비밀번호, 앞서 데이터베이스명을 미리 입력해둔 파일이라 해당 위치에 잘 넣기만 하면 된다. (만약 위에서 생성한 데이터베이스 이름이 wordpress가 아니라면 이 파일을 열어 수정해야 한다.)

여기까지 모두 완료되면 http://localhost:8888/wordpress 를 인터넷 주소창에 입력해 접속한다. 사이트명, 아이디, 비밀번호 등을 등록하는 절차를 걸쳐 워드프레스를 사용할 수 있게 된다.

Welcome to wordpress

아이디를 생성하고 로그인하면 이제 워드프레스를 로컬 환경에서 사용할 수 있게 된다.

Wordpress main page

  • MAMP에서 아파치 설정을 해주면 동일한 네트워크 내에서 접속 가능한 형태로도 사용 가능하다. 
  • 중간에 관리자 권한을 위해 비밀번호를 입력하게 된다. 
  • ssh config로 ssh 접속 간편하게 하기

    2014년 6월 30일

    일반적으로 ssh에 접속하기 위해 다음과 같은 명령어를 사용한다.

    $ ssh edward@dev.haruair.com

    사실 단순해 보이지만 개발자는 게을러야 하므로 ~/.ssh/config에 설정을 작성해두면 더 짧게 사용할 수 있다. ~/.ssh/config가 없다면 빈 파일을 만들면 된다. 파일 내용은 다음과 같다.

    Host dev
        HostName dev.haruair.com
        User edward

    이렇게 작성하면 다음과 같이 접속 가능하다. (만약 동작하지 않는다면 퍼미션을 확인해주세요. ChangWan Jun님이 chmod 440 ~/.ssh/config 식으로 퍼미션 지정이 필요하다고 알려주셨습니다.)

    $ ssh dev

    해당 서버가 ssh key를 기본값인 id_rsa를 사용하고 있다면 접속에 문제가 없다. (ssh key를 생성하는 방법은 이 페이지를 참조) 하지만 각각 서버마다 다른 키를 사용하고 있다면 여전히 -i 플래그를 이용해야 해서 번거롭다.

    $ ssh dev -i ~/.ssh/haruair.dev
    $ ssh company -i ~/.ssh/edward.company

    각각 서버마다 어떤 키를 참조할지 config에 미리 작성해둘 수 있다.

    Host dev
        HostName dev.haruair.com
        User edward
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/haruair.dev
    
    Host company
        HostName dev.haruair.company
        User edward
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/edward.company

    내 경우엔 GitHub용 키를 별도로 생성해서 등록했는데 다음과 같이 쓸 수 있다.

    Host github.com
        User git
        IdentityFile ~/.ssh/haruair.github

    이렇게 등록해두면 다음과 같이 해당 주소의 ssh를 사용할 때 해당 키를 참조하게 된다.

    $ git clone git@github.com:haruair/some-repo.git

    2차 도메인 등의 경우, 다음과 같이 와일드카드로도 지정이 가능하다.

    Host *.haruair.com
        User edward
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/haruair.dev

    config 파일은 상당히 세세한 범위까지 설정이 가능한데 그 내용은 ssh_config 메뉴얼에서 확인할 수 있다.

    ssh 인증키 생성 및 서버에 등록하기

    2014년 6월 30일

    ssh key를 생성하고 서버에 등록하는 방법은 복잡하지 않다. ssh-keygen으로 공개키/비밀키 한 쌍을 생성하고, 공개키 내용을 접속할 서버에 ~/.ssh/authorized_keys에 저장하면 해당 서버에 비밀번호 없이 ssh 접속이 가능하다.

    다음은 클라이언트에서 인증키를 생성하는 방법이다.

    $ ssh-keygen -t rsa -C "edward@haruair.com"
    Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/my_ssh_key # 키이름을 넣음
    Enter passphrase (empty for no passphrase): ********** # 최초 등록시 사용할 비밀문구를 입력함

    -t는 키의 타입이 rsa인지 dsa인지 정하는 플래그고 -C는 코멘트를 남기는 플래그다.

    위와 같이 입력하면 my_ssh_key와 my_ssh_key.pub이 생성되는데 *.pub 파일이 공개키로 서버에 등록하면 비밀번호 없이 접속이 가능해진다. 공개키의 내용을 확인하는 방법은 다음과 같다.

    $ cat /home/user/.ssh/my_ssh_key.pub

    위 명령어를 입력하면 터미널 상에 공개키 내용이 출력된다. 해당 내용을 복사해두자. 이제 이 내용을 서버에 접속해서 ~/.ssh/authorized_keys에 공개키를 추가해준다. 다음은 해당 서버에서 입력할 명령어다.

    $ cat >> ~/.ssh/authorized_keys
    (이 상태에서 복사한 공개키를 붙여 넣고 엔터를 눌러 줄을 바꾼 후 Ctrl+D를 누르면 저장된다.)

    이제 비밀번호 없이 인증키로 로그인이 가능하다.