52
© satoshi kino , ANNAI LLC DRUPALCLOUDで動かそう Satoshi Kino (d.o name as qchan) satoshi.kino http://an-nai.jp 1

Drupal deployment trial on Engine Yard

  • Upload
    -

  • View
    2.219

  • Download
    1

Embed Size (px)

DESCRIPTION

Drupal deployment trial on Engine Yard (Japanese)

Citation preview

Page 1: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

DRUPALをCLOUDで動かそう

Satoshi Kino (d.o name as qchan)

satoshi.kino

http://an-nai.jp

1

Page 2: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

•紀野 惠 ( Satoshi Kino)

• ANNAI LLC, ㈱ジオどす 代表

•Drupal User Groupgroups.drupal.org/japan  Co-Manager

•DrupalCafe (毎月開催) Organizer

• KansaiOpenForumOpenSourceConference Kyoto 実行委員

2

Page 3: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Drupalって? 

オープンソースCMS(コンテンツ・マネージメント・システム)

と思われていますが、、、

3

Page 4: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Drupalって? 

Drupalは、オリジナルのCMSを作るフレームワークと考えてください。

既存のCMSパッケージを導入するつもりでいると、確実に裏切られます。

管理画面からも制作可能な開発ツールと考えた方がしっくりきます。

4

Page 5: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Drupalの特徴

• オープンソースであること

• 拡張性を優先したフレームワーク志向であること

• デザインの自由度が高い

• 先進性

• スケーラビリティ

• 巨大なコミュニティに支えられていること

5

Page 6: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

汎用性の高いCMS

• 基本機能は抑えて、ミニマルなコアパッケージ

• インストール直後はほぼ何も出来ないくらいの印象

• 20,000を超えるモジュール群

• 拡張性を再優先して、いかようにでも形が変えられるのでカスタマイズの要望に合わせやすい

6

Page 7: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

特化型CMSではない強み

• 特化型CMSには不可能な合わせ技も簡単

• SNS + ECommerce

• E-Learning + Blogポータル

• キャンペーンサイト + CRM

• brochureサイト + プロジェクト管理

• などなどすべてはアイデア次第です

7

Page 8: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

「Drupal」が得意なジャンルは?

複雑な内部構造と仕様を持つシステムが得意

特に、政府・自治体・大学・グローバル企業でのシェアが高い

8

Page 9: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

高等教育機関でのシェア26% !

acquia.com9

Page 10: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

政府・自治体システムシェア 24% !!

acquia.com10

Page 11: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

アメリカ政府 White House

11

Page 12: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

米国 オープンデータ・ポータル

12

Page 13: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

英国 オープンデータポータル

13

Page 14: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Code For America   世界銀行がバックアップしているハッカソンポータル

14

Page 15: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

アメリカ合衆国商務省

15

Page 16: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

フランス政府・ポータル

16

Page 17: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Johnson & Johnson

17

Page 18: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Pfizer製薬

18

Page 19: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Sony Music Entertainment

19

Page 20: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

グラミー賞20

Page 21: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

The Linux Foundation

21

Page 22: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

ハーバード大学発、Drupal Distribution

22

Page 23: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Ubuntu23

Page 24: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Web担当者Forum

24

Page 25: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Kansai Open Forum

25

Page 26: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Cloud ?

Drupalは規模の大きな多言語・グローバルサイトが多いためホスティングとしてのクラウド環境はすでに一般的です

26

Page 27: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Drupal on Engine Yard

Ruby on Rails、Rails Likeなフレームワーク向けのPaaSとして有名なEngine Yard

CMS由来のフレームワーク Drupalの情報は英語でもほとんど出回っていません

27

Page 28: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Engine Yardを使ったDeploy例

Feature(git)

Deploy(Engine Yard)

28

Page 29: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Feature ?

Drupalでの大きな制作案件は、共同での開発が多くなってきました。現行D7ではコンフィグ情報がDBに入ることもあって、Featureという単位でのコード(モジュール)のやり取りがCI手法の主流です。2014リリース予定のDrupal8からはすべてのコンフィグがファイル化され様変わりします。より一般的なCIフローになっていくでしょう。

29

Page 30: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

簡易版をデモ

Code(git)

Data(drush)

Deploy(Engine Yard)

30

Page 31: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

Demo

今回はFeatureを使わない簡易的な方法でのデモをお見せします。Data(SQL)を別途Drushを使ってEngine YardにDeployする方法です。

31

Page 32: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

注意

Drupalコミュニティとしては、Fork, Hackはオススメできません。コミュニティあってのDrupalです。コミュニティサポートを受け続ける前提で設計しましょう。

Engine YardのDeploy機能を初期インストールにだけ利用する方法は採用しない

32

Page 33: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

•準備

•ローカル開発環境Drupal(VM,MAMP等)

• Docker でもVagrantでも

• git リモートリポジトリ(Github, Bitbucket等)

• 現状、EYへ継続的なDeployをするためにはDrupal.orgのrepositoryは使えない別途リモート リポジトリが必要

• Engine Yard アカウント

• チャットでの提案型のヘルプは驚きがありますよ

• 表示パフォーマンスもかなりよく、スケールも非常に簡単です33

Page 34: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

# Ignore configuration files that may contain sensitive information.sites/*/settings*.php

# Ignore paths that contain user-generated content.sites/*/filessites/*/private

☆ drupal インストールフォルダ内の.gitignoreを編集し、  sites/以下のファイルもgit管理下に置く* Drushでのコア・アップデート時にoverrideされるのでバックアップを

34

Page 35: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

Engine Yardはリポジトリからのデプロイの度に、インストールフォルダごとのSnapshotを取って、Webサーバーのドキュメントルートからシンボリックリンクを付け替えています。接続情報などを外部化しておくと、Deployごとの書き換えが不要になります。

しかし、settings.phpを除くsites以下は全て同期させないとモジュールやテーマ、ファイルなど開発中のDrupal全体としてDeployできなくなるので注意が必要です。

☆ インストールフォルダに Engine Yardのデプロイ・フック・ファイル deploy/before_bundle.rb を設置DB接続情報などを外部にコピーしシンボリックリンクを貼る

35

Page 36: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

deploy/before_bundle.rb をinstall directoryへ

# link settings.phpif !File.exist?(config.shared_path + "/sites/default/settings.php")  then run "mkdir -p #{config.shared_path}/sites/default && cp -a #{config.release_path}/sites/default/settings.php #{config.shared_path}/sites/default/settings.php"end

run "rm -Rf #{config.release_path}/sites/default/settings.php && ln -s #{config.shared_path}/sites/default/settings.php ./sites/default/settings.php"

36

Page 37: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

☆ EnginYardからアクセスできるGit repositoryにローカル開発環境などからPush

37

Page 38: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

☆ Engine Yard にDeploy!!

あとちょっとです。

38

Page 39: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

$databases = array ( 'default' => array ( 'default' => array ( 'database' => ‘{your_db}’, 'username' => ‘{your_dbname}’, 'password' => ‘{your_password}’, 'host' => ‘{your_host}’, 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ),);

☆Engine YardへSSHでログインし、移動させたsettings.phpにDB情報を追記

DB接続情報は/data/{your_app}/shared/config/database.yml

に記載されています。

39

Page 40: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

以後、このSettings.phpはローカルやリモート・リポジトリの影響を受けません。

*EY, EnvironmentのStop、boot時にHostが変更されるので手動での書き換えが必要*環境毎にsettings.phpを読み分けるスクリプトを作る方法もあり

40

Page 41: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

$databases = array ( 'default' => array ( 'default' => array ( 'database' => $_SERVER["DB_NAME"], 'username' => $_SERVER["DB_USER"], 'password' => $_SERVER["DB_PASS"], 'host' => $_SERVER["DB_HOST"], 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ),);

☆ (別)settings.phpに環境変数から読み込ませる* これをほどこすと、EnviromnetのStop, Bootにかかわらず使えるのだが、

  テストではDrushと相性が悪かった。今後に期待。

41

Page 42: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

☆ Drupal 初期インストールの場合settings.phpが既に設置されているので、初回アクセス時にドキュメントルートを見に行くとインストーラーのエラーがでます。

http://{your_domein}/install.php

へアクセスし、インストールを進めてください。

42

Page 43: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

ここが、Drupal, Wordpress、Ec-CubeなどCMS的なアプローチを採用しているプロダクトに特有のところ。ブラウザ上から行った開発・設定操作がDBへ入るので、コードだけで完結しない。しかし、DrupalはWPと違ってドメイン情報などはDBに持たないためポータビリティの問題は少ない。次期D8では設定がコード化され大きく変わります。

☆ 開発中アプリをDeployする場合  DBのシンクロが必要

43

Page 44: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

$ sed -i '1i export PATH="$HOME/.composer/vendor/bin:$PATH"' $HOME/.bashrc$ source ~/.bashrc$ composer global require drush/drush:6.*

☆ DrushをEngine Yard側にもインストールしておくと、 DBのSyncが一発

Drush とは Drupal shell という意味のコマンドラインツールで、Drupalの開発に欠かせないものです。EngineYardはcomposerが使えるのでインストールは簡単です。

https://github.com/drush-ops/drush

44

Page 45: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

ey.aliases.drushrc.php

<?php

$aliases['EY'] = array( 'uri' => '◯◯◯', 'root' => '◯◯◯', 'db-url' => '◯◯◯', 'remote-host' => '◯◯◯', 'remote-user' => '◯◯◯', 'os' => 'Linux', 'databases' => array ( 'default' => array ( 'default' => array ( 'driver' => '◯◯◯', 'username' => '◯◯◯', 'password' => '◯◯◯', 'port' => '', 'host' => '◯◯◯', 'database' => '◯◯◯', ), ), ),

);

☆ Drush Aliasを設定し、Engine Yard上Drupalの操作を遠隔から行う。http://drush.ws/examples/example.aliases.drushrc.phpDrushを使うと、複数のアプリ情報を管理できます。サイト・サーバー間の情報のやり取りも簡単になります。

45

Page 46: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

手順 

drush sql-sync @self @ey.EY

☆ DBデータのSynch

ローカルとEngine YardのDB Syncこれだけ!!

46

Page 47: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

番外

drush rsync @self @ey.EY

☆ Drushでのコード・デプロイも可能2行のコマンドでサイト一式のデプロイ完了コンテンツだけを移行したい場合は別の方法があります。

ちなみに、これでsettings.php抜きのコード・デプロイになります。

47

Page 48: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

次は、海外で伸びているDrupal専用Passの現状がどうなっているかを見てみましょう

* Pantheon https://www.getpantheon.com/

* Acquia Cloud http://www.acquia.com/products-services/acquia-cloud

48

Page 49: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

毎月、DrupalCafeを開催しています。ぜひ来てください。

49

Page 50: Drupal deployment trial on Engine Yard

2014 ANNAI© satoshi kino , ANNAI LLC

Japan Users Groupgroups.drupal.org/japan

50

Page 51: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

4/12(土)にはDrupalCamp in Japan KYOTOを予定しています。

51

Page 52: Drupal deployment trial on Engine Yard

© satoshi kino , ANNAI LLC

ありがとうございました。

Satoshi Kino (d.o name as qchan)

satoshi.kino

http://an-nai.jp

52