블로그 이미지
초딩입맛제주아재
하고 싶은 것만 하며 살고 싶다

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

'deploy'에 해당되는 글 1

  1. 2008.08.30 [OSX] Eclipse에서 PHP 로컬 개발/테스트 환경 구축하기(4)
2008. 8. 30. 00:32 Programing/PHP
PHP보다는 HTML,CSS,Javascript와 씨름하며 지내는 요즘 반갑게도 PHP를 써야하는 작은 프로젝트를 하나 맡았습니다. 근 1년여 동안 멀리했던 PHP인지라 함수들도 가물가물하고 요즈음은 트렌드도 많이 바뀌어서 제법 낯설기도 하지만 그래도 반갑기만 하네요~ :)

마침 메인 PC도 맥으로 갈아탄터라 이것저것 셋팅하는 맛도 있겠거니와 정말정말 오래간만에 php컴파일도 좀 해보고 아파치도 만져볼 생각에 한창 들떴더랍니다. ^^

최근 구매한 iMac 24인치에는 개발에 필요한 기본적인 도구들이 상당히 많이 들어있습니다. 그 중에 아파치와 PHP도 포함되어 있으니 정말 편한 시스템이죠~(물론 자바도 기본으로 설치되어 있답니다~~)


1.준비

우선 Enabling PHP and Apache in Leopard를 참고하시어 php,apache 기본 설정을 확인 하시고 php를 활성화 하는 작업이 선행되어야 합니다. 이 상태로도 기본적인 php개발 환경은 마련이 됩니다. 하지만 프로젝트가 바뀔때마다 매 번 아파치의 DocumentRoot를 변경하고, ftp를 이용해 실서버로 배포하는 작업은 그리 유쾌한 작업은 아니죠. 게다가 이클립스라는 아주 훌륭한 IDE를 쓰면서 말이죠....

(주의: 저는 지금 이클립스를 이용해서 개발 하시는 분들을 위한 포스팅을 하고 있답니다~!!)


2.가상호스트 설정

프로젝트 별 가상호스트를 만들어 줍니다.
편집기로 아피치 가상호스트 설정 파일을 엽니다.

$ sudo vi /private/etc/apache2/extra/httpd-vhosts.co

처음 이 파일을 열면 샘플 가상호스트가 주석으로 둘러싸여 있는데요 그 부분을 복사해서 아래에 붙여 넣습니다.

DocumentRoot를 설정하고 도메인도 설정합니다.
이 가상호스트만의 독립적인 로그가 필요하면 로그 파일에 대한 내용도 작성합니다.
자세한 가이드는 여기를 참고하세요.

<VirtualHost *:80>
    DocumentRoot "/Users/asrada/Documents/workspace/MyProject/trunk/testcase"
    ServerName test.project1.com
    ErrorLog "/private/var/log/apache2/test.project1-error_log"
</VirtualHost>

가상호스트에 도메인을 만들어 주긴 했지만 실제 저 도메인은 등록이 안된 것이죠.
때문에 hosts 파일에 저 도메인에 대한 리다이렉션을 명시해야 합니다.

$ sudo vi /etc/hosts

파일을 열고 맨 아랫줄에 리다이렉션 시킬 ip 와 도메인을 입력하면 됩니다.
가상호스트가 로컬에 있으니 로컬 PC로 리다이렉션 시키면 되겠죠~

127.0.0.1 test.project1.com

이제 브라우저에서 test.project1.com을 입력하면 가상호스트로 설정된 DocumentRoot에 있는 index.html파일이 열리게 됩니다.
프로젝트가 추가되면 가상호스트를 늘려주면 됩니다~~



3. Ant를 이용한 배포

이제 로컬PC에서 프로젝트 소스 파일을 편집하고 테스트도 해 볼 수 있게 되었습니다.
실서버로 배포만 하면 프로젝트를 마무리 할 수 있겠네요~~~:)
자 그럼 FTP클라이언트를 실행하고....이럼 안되겠죠?? ^^
이클립스를 쓰고 있으니 최대한 이클립스안에서 모든걸 해결하도록 해보죠.
이클립스 플러그인중에 Ant라는 아주 유용한 플러그인이 있습니다.
이클립스에서 작업한 소스코드를 FTP프로토콜을 이용해서 별도의 FTP클라이언트 프로그램을 실행할 필요 없이 원하는 곳으로 전송 할 수 있고, 프로젝트 전체를 압축해서 보내고 전송이 완료되면 실서버에 telnet으로 접속해서 전송한 압축파일을 원하는 디렉토리에 풀어주는 일도 가능합니다.
자세한 내용은 여기를 보세요~~

Ant의 기능은 상당히 많지만 이 포스트에서는 Ant의 기본 구조와 간단한 사용방법을 소개하는 정도에서 그치도록 하겠습니다. ^^

1)설정파일 만들기

Ant설정 파일은 xml형태의 파일로 하나의 project 엘리먼트 안에 여러개의 target 엘리먼트로 이루어지는데요, 이 target은 어떤 하나의 행동(task)을 나타냅니다.

<project name="UIRSS_Extension" basedir=".">
 <property file="${basedir}/info.properties" />

 <target name="create.xpi">
  <zip destfile="${extension.root}/${extension.destfile}" basedir="${src.root}" />
 </target>
 
 <target name="compress">
  <tar destfile="${basedir}/${deploy.destfile}" basedir="${extension.root}" compression="gzip" />
 </target>

위의 예제는 실제로 제가 쓰고 있는 Ant설정 파일의 일부입니다.

내용을 보면 UIRSS_Extension이라는 프로젝트 이름을 갖고 있는 Ant설정 파일이라는 것을 알 수 있구요,

2개의 target은 각각 zip으로 특정 파일들을 압축하고 tar로 특정 파일들을 묶는 작업을 수행하도록 설정 되어 있습니다.

보시다시피 target안에 있는 zip이나 tar 요소들은 우리가 잘 알고 있는 그 zip과 tar에 대응하는 요소입니다.

각 target은 독립적으로 실행되며 여러 target을 순차적으로 실행하는 것도 가능합니다.

<target name="deploy" depends="local.compress, sendToServer,server.decompress"/>

위 target을 실행하면 먼저 local.compress라는 target을 실행한 후 sendToServer target을 실행하고 마지막으로 server.decompress target을 실행하게 됩니다. 배치파일과 비슷하죠?? ^^

이렇게 기능적으로 완전히 독립된 여러 target들을 만들어 두고 작업 득성에 맞게 각 target들을 조립해서 하나의 target을 만들어서 사용하면 배포에 들어가는 시간과 노력을 아낄 수 있습니다.:)

2)외부 속성 파일 사용하기

Ant 설정 파일에서는 변수를 지원하는데요, 맨 위 Ant 설정 파일을 자세히 보시면 ${}로 감싸여져있는 변수 형태의 값들이 여기저기 있는데요, 실제로 이것들은 변수의 역할을 합니다. 맨 윗줄 project요소에 있는 basedir속성을 그 아래 property요소에서 ${basedir}로 재사용하고 있죠?

이렇게 project안에서 속성 값을 공유 할 수 있습니다. 또한 여러 속성들을 외부 파일에 작성 해 두고 그 값들을 불러와서 쓸 수 있는데요, 2번째 줄에 있는 property 요소에 이 변수들에 대한 값을 설정하고 있는 외부 설정 파일의 위치를 담고 있는 것을 볼 수 있습니다.

그 외부 설정 파일은 아래와 같은 모양을 하고 있습니다.

src.root = ${basedir}/srcExtension
extension.destfile=uirss.xpi
extension.root = ${basedir}/extension
deploy.destfile=extension.tar.gz
ftp.server=  xxx.xxx.xxx.xxx(실제 ftp의 ip를 입력합니다)
ftp.userid=userid
ftp.port=port
ftp.password=password
telnet.server=${ftp.server}
telnet.userid=${ftp.userid}
telnet.password=${ftp.password}

이 파일에 설정된 변수의 이름을 Ant설정 파일안에서 ${}로 감싸서 재사용 할 수 있는 것이죠.

이런식으로 자신의 프로젝트 배포에 필요한 task들을 묶어서 하나의 xml 파일로 만든 다음 이 xml파일을 이클립스의 Ant  View에 끌어다 놓으면 자동으로 인식을 하게 됩니다.




2번째 그림에서 보이는 개미아이콘이 붙은 항목은 각각의 xml파일이고 project 요소의 name속성 값을 보여줍니다. 이 부분을 더블 크릭하면 디폴트 target의 내용이 실행됩니다. 그 하위 동그라미 아이콘들은 xml파일 안에 있는 각각의 target요소들을 뜻하며 text는 target의 name속성 값입니다.  각 target항목을 더블클릭하면 해당 target의 작업이 실행됩니다.

3.마치며

이렇게 몇 가지 간단한 내용들고 OSX에서 PHP로컬 개발 환경을 구축하는 방법에 대해 소개해 드렸습니다. 하지만 1번을 제외한 2,3번의 내용들은 OSX에만 국한되는 것은 아니니 Apache를 사용하시는, 이클립스를 사용하시는 윈도우 사용자 분들도 그대로 적용하실 수 있습니다.

너무 많은 내용을 하나의 포스트에 짤막하게 담으려다 보니 세밀함이 많이 부족한 포스트가 되고 만것 같습니다.^^;; 게다가 글재주 또한 잼병이라 아는것마저 정확히 전달을 하지 못한 것 같습니다......;;

더 자세한 내용들은 각 사이트에 세세한 문서들이 많으니 참조하시길 바랍니다.

'Programing > PHP' 카테고리의 다른 글

[OSX] Eclipse에서 PHP 로컬 개발/테스트 환경 구축하기  (4) 2008.08.30
Enabling PHP and Apache in Leopard  (2) 2008.08.19
WAV파일 분석  (0) 2006.11.10
간단한 소켓통신  (0) 2006.10.13
간단한 대화식 프로그램  (0) 2006.07.24
시스템 모니터링 툴  (0) 2006.07.17
posted by 초딩입맛제주아재

댓글을 달아 주세요

  1. 달룟 2008.09.23 17:19  Addr Edit/Del Reply

    물결님의 코드 중 대부분을 이해하지 못하지만,
    저도 맥을 쓰면서, sudo는 참 자주 쓰게 되더군요.

    • BlogIcon 초딩입맛제주아재 2008.09.23 23:53 신고  Addr Edit/Del

      흐 달룟님;;;
      아마 제가 설명을 잘 못해서 그러실거에요.
      그리고 달룟님께는 조금은 생소한 웹기반 환경일 탓도 있겠구요.

      root계정을 활성화 하지 않는 한 sudo사용은 필수불가결합니다. 사용자 계정으로 허용되지 않는 모든 파일을 수정하거나 실행할때는 꼭 써야 하니까요 ^^

  2. 알 수 없는 사용자 2008.10.07 16:57  Addr Edit/Del Reply

    저도 요즘 이클립스와 싸우는 중입니다. 이클립스를 써본적이 없어서 심히 좌절 중이랍니다 ㅠㅠ

  3. 빼빼로 2011.07.06 14:42  Addr Edit/Del Reply

    좋은 글 감사합니다^^

prev 1 next