본문 바로가기

class "Think"/"PHP On Azure"

[PHP on Azure - 초급 - 9] Azure Storage를 활용한 PHP 웹사이트 (2)

- 윈도우 애저 무료 평가판 다운로드 : http://www.windowsazure.com/ko-kr/pricing/free-trial/?WT.mc_id=A53D57CF7 

- 윈도우 애저 평가판 설치 내용 하기 : http://www.phpschool.com/link/teach/2650


이전 강의 내용(http://hahaheo.com/233)을 이어서 계속 진행됩니다.


지금까지 따라하셨다면 Azure Storage 서비스를 어렵지 않게 만드셨을 것입니다.

이번강의에서는 여러분의 컴퓨터에 PHP Client Libraries for Windows Azure 라는 라이브러리를 설치하고 이를 이용하여 간단한 예제 사이트를 만들어 볼 예정입니다. 이는 모두 제가 예전에 강의했던 git을 사용해서 azure에 배포할 예정이기 때문에, 여러분의 PC에는 git repository 환경이 셋팅되어 있어야 합니다. (만약에 설정되어있지 않다면 참고사이트(1)을 참고하셔서 git을 셋팅해두시기 바랍니다)


뿐만 아니라 몇가지 추가적인 선행작업이 필요한데, 여러분의 git repository에 위에 언급한 라이브러리를 설치해야 하기 때문에 PHP를 설치해야합니다. APM Setup이나 msi 설치 파일등을 사용해서 간단하게 설치하신분도 있겠지만, 호환성을 위해 binary 파일을 받은 뒤에 환경변수로 묶어서 설치해보도록 하겠습니다.



먼저 php 바이너리 파일을 다운로드 받습니다


 http://windows.php.net/download/


여기에서 PHP 5.4(5.4.8) VC9 x86 Non Thread Safe를 다운로드 받겠습니다





적당한 곳에 압축을 푼뒤, 이 경로를 환경변수 경로로 지정해주어야 합니다.



윈도우7을 기준으로, 제어판 -> 시스템 -> 고급시스템 설정 -> 환경변수 를 클릭하고 ~에 대한 사용자 변수 란에 PATH 변수를 찾은 뒤 클릭하여 맨 뒤에 사진처럼 압축을 푼 경로를 지정하여 확인하면 됩니다.

다들 아시겠지만 이렇게 환경변수를 지정하게 되면, 해당 폴더의 binary 파일들이 Command Line Interface에서 실행이 가능한 상태가 됩니다. (자세한 내용은 여러분이 더 잘아실거라고 생각합니다 ^^)


이제 라이브러리를 다운로드 받기위한 셋팅을 진행하겠습니다


먼저 여러분의 git root 폴더에 repository로 사용하기 위한 임시폴더(저는 tuto8이라고 하겠습니다)를 생성하고, 아래와 같은 간단한 파일을 하나 작성하겠습니다.

파일 이름은 composer.json 이라고 지정합니다. 만든 파일에 내용을 그대로 넣으시면 됩니다


 {
    "require": {
        "microsoft/windowsazure": "*"
    },
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.php.net"
        }
    ],
    "minimum-stability": "dev"
}


위 json 파일에 대해 간단하게 설명하자면, library를 위에 지정된 pear.php.net이라는 repository에서 받아올 건데, 이에 대한 간단한 필수 옵션들을 지정하고 있습니다.


이제 설치 파일을 다운로드 받겠습니다. 


 http://getcomposer.org/composer.phar (우측클릭하여 다른이름으로 저장 하면 됩니다)


위에서 만든 json 파일과 같은 경로에 있도록 저장해야 합니다. 


Git Shell을 실행한 뒤, 위에서 생성한 repository 프로젝트 폴더로 이동하고 다음과 같은 명령어를 실행합니다


>php composer.phar install 


* 백신 프로그램이 설치되어있다면 경우에 따라 방화벽 해제를 요구하는 메시지가 출력될수 있습니다. 외부에서 파일을 다운로드 받기 때문에 '허용' 해주셔야 합니다.




다음과 같이 실행이 될것입니다 (시간이 조금 소요됩니다)




설치가 완료되면 git repository 프로젝트 폴더는 위와 같이 구성됩니다.



이제 Azure Storage를 사용하는 웹 페이지를 위해 6개의 php 파일을 코딩해야 합니다. 양이 많기 때문에 하나하나 천천히 살펴보도록 하겠습니다.

먼저 init.php 파일입니다. 라이브러리를 사용하기 때문에 한줄씩 알아보도록 하겠습니다


require_once 'vendor\autoload.php';


아까 여러분이 받은 라이브러리에는 필수파일들을 참조하기 쉽게 파일을 제공합니다. 그 파일이 autoload.php 이고, 이걸 참조하면 라이브러리들을 활용할 수 있게 해줍니다.



use WindowsAzure\Common\ServicesBuilder;


네임스페이스를 추가합니다. 먼저 Azure service 클라이언트를 생성해주는 ServicesBuilder이고



use WindowsAzure\Common\ServiceException;


다음에 API 콜의 예외처리를 위한 ServiceException 을 네임스페이스로 추가합니다.



$connectionString = "DefaultEndpointsProtocol=http;AccountName=[yourAccount];AccountKey=[yourKey]"


이전장에서 셋팅했던 Azure Storage 서비스의 연결을 위한 변수를 셋팅합니다. 여기서 [yourAccount]와 [yourKey]는 이전 강의에서 셋팅한 storage 정보로 치환해야 합니다. 

저같은 경우는 이전장의 셋팅정보가 yourAccount는 'tuto8storage'였고, yourKey는 '1aaA....' 의 문자열이었습니다.



UseDevelopmentStorage=true


여러분의 로컬 컴퓨터에 스토리지를 에뮬레이션 하여 사용할지에 대한 여부입니다. 이건 사용하지 않겠습니다.



$tableRestProxy = ServicesBuilder::getInstance()->createTableService($connectionString); 


ServicesBuilder::createTableService 객체를 생성하여 해당정보를 변수에 저장합니다. $tableRestProxy는 Azure 테이블의 모든 REST 호출에 대한 정보를 담게됩니다.



init.php 파일의 내용은 아래와 같습니다.


/* init.php */

require_once 'vendor\autoload.php';
use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\ServiceException;
$connectionString = "DefaultEndpointsProtocol=http;AccountName=tuto8storage;AccountKey=1aaA...."
$tableRestProxy = ServicesBuilder::getInstance()->createTableService($connectionString); 




이번강의는 여기까지 입니다.


다음강의에서 나머지 파일을 다뤄보도록 하겠습니다.





참고사이트


(1) git을 활용하여 PHP-MySQL 웹 사이트를 Azure에 배포하기 (1) - http://hahaheo.com/231