Google App Engine에서 Composer 사용
3309 단어 GoogleAppEngineGAEPHP
이전 Google App Engine에서 Hello, World! (PHP)에서는 Google App Engine에서 PHP가 작동하는 곳까지 시도했습니다. 이번에는 보다 복잡한 애플리케이션 작성을 위한 준비로 Composer에서 라이브러리를 사용할 수 있도록 하고 싶습니다.
준비
이번에는 Composer에서 설치한 라이브러리가 Google App Engine에서 작동하는지 확인하는 것이 목적이므로 확인하기 쉬운 Faker을 사용하기로 결정했습니다. Faker는 이름이나 주소 등 개인정보의 더미 데이터를 작성하기 위한 라이브러리입니다.
먼저 소스 코드를 관리하는 데 적합한 디렉토리에 composer.json
를 준비합니다.
{
"require": {
"fzaninotto/faker": "1.6.*"
}
}
composer로 라이브러리 설치composer install
명령 실행 후 디렉토리는 다음과 같습니다.
- composer.json
- composer.lock
- vendor/
+- autoload.php
+- composer/..
+- fzaninotto/...
index.html 만들기
이전 샘플에서는 app.yaml
와 index.php
가 모두 동일한 디렉토리에 저장되었습니다. 복잡한 어플리케이션을 작성해 가는데는 조금 심허 없는 생각이 듭니다. 앞으로 사용자가 액세스하는 파일은 website
디렉토리에 저장하기로 결정합니다.
이번 index.php
은 다음과 같이 만들었습니다.
Faker 사용법은 공식 readme.md을 참조하십시오.
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
require '../vendor/autoload.php';
$faker = Faker\Factory::create('ja_JP');
for ($i=0; $i < 10; $i++) {
echo $faker->name, '<br />', "\n";
}
app.yaml 만들기
이전 app.yaml을 바탕으로 이번 app.yaml은 다음과 같이 했습니다. 가장 큰 차이점은 skip_files
를 지정한다는 것입니다. skip_files로 지정한 파일은 App Engine
에 업로드되지 않습니다.
보안상의 우려가 있는 파일, 어플리케이션의 동작에 무관한 파일은 업로드하지 않도록 설정해 두면 좋을 것입니다.
handlers는 website 디렉토리 아래 index.php
를 참조하도록 지정합니다.
application: <YOUR_PROJECT_ID>
version: alpha-003
runtime: php55
api_version: 1
threadsafe: true
skip_files:
- ^(.*/)?app\.yaml
- ^README\..*
- ^(.*/)?composer\.(phar|lock|json)$
- \.gitignore
- ^\.git/.*
- ^(.*/)?(.*\.swp)
handlers:
- url: /.*
script: website/index.php
App Engine에 배포
준비가 되었으므로 프로덕션 환경에 배포합니다.appcfg.py update ./
아래 URL에서 동작을 확인합니다.http://<YOUR_PROJECT_ID>.appspot.com/
Fake가 생성한 더미의 이름이 표시되는 것을 확인할 수 있었습니다.
포인트
Google App Engine이기 때문에 특필하지 않고, composer로 설치한 라이브러리를 이용할 수 있었습니다만, 굳이 포인트를 쓰는 것이라면…
{
"require": {
"fzaninotto/faker": "1.6.*"
}
}
- composer.json
- composer.lock
- vendor/
+- autoload.php
+- composer/..
+- fzaninotto/...
이전 샘플에서는
app.yaml
와 index.php
가 모두 동일한 디렉토리에 저장되었습니다. 복잡한 어플리케이션을 작성해 가는데는 조금 심허 없는 생각이 듭니다. 앞으로 사용자가 액세스하는 파일은 website
디렉토리에 저장하기로 결정합니다.이번
index.php
은 다음과 같이 만들었습니다.Faker 사용법은 공식 readme.md을 참조하십시오.
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
require '../vendor/autoload.php';
$faker = Faker\Factory::create('ja_JP');
for ($i=0; $i < 10; $i++) {
echo $faker->name, '<br />', "\n";
}
app.yaml 만들기
이전 app.yaml을 바탕으로 이번 app.yaml은 다음과 같이 했습니다. 가장 큰 차이점은 skip_files
를 지정한다는 것입니다. skip_files로 지정한 파일은 App Engine
에 업로드되지 않습니다.
보안상의 우려가 있는 파일, 어플리케이션의 동작에 무관한 파일은 업로드하지 않도록 설정해 두면 좋을 것입니다.
handlers는 website 디렉토리 아래 index.php
를 참조하도록 지정합니다.
application: <YOUR_PROJECT_ID>
version: alpha-003
runtime: php55
api_version: 1
threadsafe: true
skip_files:
- ^(.*/)?app\.yaml
- ^README\..*
- ^(.*/)?composer\.(phar|lock|json)$
- \.gitignore
- ^\.git/.*
- ^(.*/)?(.*\.swp)
handlers:
- url: /.*
script: website/index.php
App Engine에 배포
준비가 되었으므로 프로덕션 환경에 배포합니다.appcfg.py update ./
아래 URL에서 동작을 확인합니다.http://<YOUR_PROJECT_ID>.appspot.com/
Fake가 생성한 더미의 이름이 표시되는 것을 확인할 수 있었습니다.
포인트
Google App Engine이기 때문에 특필하지 않고, composer로 설치한 라이브러리를 이용할 수 있었습니다만, 굳이 포인트를 쓰는 것이라면…
application: <YOUR_PROJECT_ID>
version: alpha-003
runtime: php55
api_version: 1
threadsafe: true
skip_files:
- ^(.*/)?app\.yaml
- ^README\..*
- ^(.*/)?composer\.(phar|lock|json)$
- \.gitignore
- ^\.git/.*
- ^(.*/)?(.*\.swp)
handlers:
- url: /.*
script: website/index.php
준비가 되었으므로 프로덕션 환경에 배포합니다.
appcfg.py update ./
아래 URL에서 동작을 확인합니다.
http://<YOUR_PROJECT_ID>.appspot.com/
Fake가 생성한 더미의 이름이 표시되는 것을 확인할 수 있었습니다.
포인트
Google App Engine이기 때문에 특필하지 않고, composer로 설치한 라이브러리를 이용할 수 있었습니다만, 굳이 포인트를 쓰는 것이라면…
vendor/autoload.php
로 경로를 통과 이 2점입니다. 이번 최종 파일 구성은 다음과 같습니다.
- composer.json
- composer.lock
- vendor/
+- autoload.php
+- composer/..
+- fzaninotto/...
- website/
+- index.php
여기까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(Google App Engine에서 Composer 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rshibasa/items/ab96b3f68a05629bae4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)