20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう!...

46
(C)1996-2014 SAKURA Internet Inc. 「さくらのクラウド」 スタートアップスクリプトを作ってみよう! - concrete5を題材に - 2014年8月23日 さくらインターネット株式会社 広報宣伝室 林 雅也 ※concrete5 は Concrete CMS, Inc および、コンクリートファイブジャパン株式会社の登録商標です
  • Upload

    -
  • Category

    Services

  • view

    1.337
  • download

    7

description

2014年8月23日開催「オープンソースカンファレンス2014 Shimane」の当社講演資料です。 セミナー詳細はこちら⇒ http://www.ospn.jp/osc2014-shimane/

Transcript of 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう!...

Page 1: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

(C)1996-2014 SAKURA Internet Inc.

「さくらのクラウド」 スタートアップスクリプトを作ってみよう!

- concrete5を題材に -

2014年8月23日

さくらインターネット株式会社 広報宣伝室

林 雅也

※concrete5 は Concrete CMS, Inc および、コンクリートファイブジャパン株式会社の登録商標です

Page 2: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

2 (C)1996-2014 SAKURA Internet Inc.

当セッションの概要

このセッションでは、さくらインターネット株式会社が提供するパブリッククラウドサービス「さくらのクラウド」がもつ「スタートアップスクリプト」という機能をご紹介させていただきます。

また、オープンソースCMSである「concrete5」を題材に、既存のスクリプトを元に、オリジナルスクリプトを作成する方法について、ご説明させていただきます。

Page 3: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

3 (C)1996-2014 SAKURA Internet Inc.

自己紹介

• さくらインターネット株式会社 林 雅也

– 2005年入社。社内インフラ担当など 2014年4月より広報宣伝室

– KOFやOSCに参加するようになり、少しずつオープンソースコミュニティに興味を持つようになる。

– Twitter:@haya2_

– Facebook:https://www.facebook.com/haya4

Page 4: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

4 (C)1996-2014 SAKURA Internet Inc.

さくらインターネット

1996年 京都府舞鶴市にて創業

1998年 大阪市中央区へ移転

1999年 株式会社化、東京支社開設

大阪・東京へIDCを新設

2005年 東証マザーズへ上場

2011年 石狩IDCを新設

商 号 さくらインターネット株式会社

本 社 所 在 地 大阪市中央区南本町一丁目8番14号

設 立 年 月 日 1999年8月17日

(サービス開始は1996年12月23日)

取 締 役

代表取締役 社長 田中 邦裕

取締役 副社長 舘野 正明

取締役 川田 正貴

取締役 村上 宗久

取締役(非常勤)森田 勝也

取締役(非常勤)辻 壮

上 場 年 月 日 2005年10月12日(東証マザーズ)

決 算 3月末日

資 本 金 8億9,530万円

従 業 員 数 236名 (2014年3月末)

1996年からサービスを行う データセンター・ホスティングの老舗です

Page 5: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

5 (C)1996-2014 SAKURA Internet Inc.

さくらのクラウドとは

Page 6: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

6 (C)1996-2014 SAKURA Internet Inc.

さくらのクラウドのコンセプト

• 所謂IaaS型のクラウドサービス

–何の変哲もないIaaS型クラウド

–物理サーバ、物理ネットワーク → そのまま、まるごと仮想化

Page 7: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

7 (C)1996-2014 SAKURA Internet Inc.

たくさんのサーバを

Page 8: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

8 (C)1996-2014 SAKURA Internet Inc.

アップグレード・ダウングレードしたり

Page 9: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

9 (C)1996-2014 SAKURA Internet Inc.

複製してスケールアウトしたり

Page 10: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

10 (C)1996-2014 SAKURA Internet Inc.

転送量課金のない固定制の料金形態で

月額料金表

Page 11: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

11 (C)1996-2014 SAKURA Internet Inc.

時間割課金にも対応しています

時間割料金表

Page 12: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

12 (C)1996-2014 SAKURA Internet Inc.

ブラウザからサーバにアクセスでき

Page 13: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

13 (C)1996-2014 SAKURA Internet Inc.

OSの選択も可能で

Page 14: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

14 (C)1996-2014 SAKURA Internet Inc.

bootオプションの変更も可能で

Page 15: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

15 (C)1996-2014 SAKURA Internet Inc.

シングルユーザモードにもできます

Page 16: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

16 (C)1996-2014 SAKURA Internet Inc.

fstabを変更したり

Page 17: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

17 (C)1996-2014 SAKURA Internet Inc.

panicが起きた後も確認できます

Page 18: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

18 (C)1996-2014 SAKURA Internet Inc.

ネットワークも自由に組めます

Page 19: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

19 (C)1996-2014 SAKURA Internet Inc.

NICを追加して

Page 20: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

20 (C)1996-2014 SAKURA Internet Inc.

線を伸ばしてスイッチに接続もできます

Page 21: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

21 (C)1996-2014 SAKURA Internet Inc.

物理データセンターとも接続できます

ハイブリッド接続を利用すれば 「さくらの専用サーバ」「リモートハウジング」と接続可能

Page 22: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

22 (C)1996-2014 SAKURA Internet Inc.

さくらのVPSからワンタッチでコピーできます

Page 23: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

23 (C)1996-2014 SAKURA Internet Inc.

標準でAPIをサポート

REST形式でアクセス可能で、/server/ならサーバ一覧など、直観的なAPIアクセスを実現。

$ curl --user “APIKEY":“SECRET" https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/

Index":0,"ID":"112400226821","Name":"git¥u30b5¥u30fc¥u30d01","HostName":"localhost","Description":"","ServiceCla

ss":"cloud¥/plan¥/1","CreatedAt":"2012-05-07T00:19:44+09:00“,"Icon":{"ID":"112500078923",

"URL":"https:¥/¥/secure.sakura.ad.jp¥/cloud¥/zone¥/is1a¥/api¥/cloud¥/1.1¥/icon¥/112500078923.png","Name":"¥u30c

d¥u30b3","Sc

$ curl --user “APIKEY":“SECRET" -H 'X-Sakura-API-Beautify:1'

https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server/

"From": 0,

"Count": 29,

"Total": 29,

"Servers": [

{

"Index": 0,

"ID": "112400226821",

"Name": "git¥u30b5¥u30fc¥u30d01",

"HostName": "localhost“,

Page 24: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

24 (C)1996-2014 SAKURA Internet Inc.

CLI “sacloud”も用意しています

$ sudo ~/.nave/nave.sh usemain stable

[sudo] password for tanaka:

######################################################################## 100.0%

installed from binary

$ sudo npm install -g sacloud

$ sacloud config --apiRoot="https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/"

/home/tanaka/.sacloudcfg.json:

{

"apiRoot": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/"

}

$ sacloud config --accessToken=APIKEY --accessTokenSecret=SECRET

/home/tanaka/.sacloudcfg.json:

{

"apiRoot": "https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/",

"accessToken": “APIKEY",

"accessTokenSecret": “SECRET"

}

$ sacloud show server

GET https://secure.sakura.ad.jp/cloud/zone/is1a/api/cloud/1.1/server.json?{} -> 200 OK (1/1) ~1.539sec

+--------------+--------------------+--------+---------------------+ | id | name | status | created at | +--------------+--------------------+--------+---------------------+ | 112400226821 | gitサーバ1 | up | 2012-05-07 00:19:44 | +--------------+--------------------+--------+---------------------+ | 112500271369 | www2 | up | 2013-06-20 00:27:33 | +--------------+--------------------+--------+---------------------+ | 112400258152 | rp1 | up | 2012-05-28 15:35:11 |

Page 25: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

25 (C)1996-2014 SAKURA Internet Inc.

スタートアップスクリプト

サーバ作成時に任意のシェルスクリプトを 「スタートアップスクリプト」から選択しておけば

サーバ起動時に実行させることができます。

Page 26: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

26 (C)1996-2014 SAKURA Internet Inc.

パブリックスクリプト

Page 27: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

27 (C)1996-2014 SAKURA Internet Inc.

自作スタートアップスクリプトも作れます

Page 28: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

28 (C)1996-2014 SAKURA Internet Inc.

スタートアップスクリプトの仕組み

Page 29: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

29 (C)1996-2014 SAKURA Internet Inc.

スタートアップスクリプトとは

スタートアップスクリプトは、新たにサーバを作成する際、任意のシェルスクリプトを記述した「スタートアップスクリプト」を選択することにより、起動時にそれらを自動的に実行する機能です。

※スタートアップスクリプト機能は現在、CentOS、ScientificLinux、Ubuntu、 Debian GNU/Linux環境で動作いたします。

※2014年9月2日訂正

Page 30: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

30 (C)1996-2014 SAKURA Internet Inc.

スタートアップスクリプトの動作

サーバ作成画面でスタートアップスクリプトを選択すると、起動後のサーバ内で以下の動作が行われます。 1. 起動時、/etc/rc.localが/root/.sacloud-api/startup.shを実行 2. startup.shが、「スタートアップスクリプト」で指定したスク

リプト(“/root/.sacloud-api/notes/スタートアップスクリプトID“に配置)を実行

3. スクリプトが実行され、ログが”/root/.sacloud-api/notes/スタートアップスクリプトID.log”に出力される

4. 各スクリプトが正しく(終了コードが”0″)終了すると、”/root/.sacloud-api/notes/スタートアップスクリプトID.done”という名前の空ファイルを作成(このファイルが存在すると@sacloud-once を指定したスクリプトは実行されない)

Page 31: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

31 (C)1996-2014 SAKURA Internet Inc.

スタートアップスクリプトの例 – WordPress -

Page 32: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

32 (C)1996-2014 SAKURA Internet Inc.

このスタートアップスクリプトの基本構成

1. 説明

2. iptablesの設定

3. Apache、MySQL、PHPのインストール

4. WordPressのインストール

Page 33: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

33 (C)1996-2014 SAKURA Internet Inc.

WordPressのスタートアップスクリプト-1

#!/bin/bash

# @sacloud-once

# @sacloud-desc WordPressをインストールします。

# @sacloud-desc サーバ作成後、WebブラウザでサーバのIPアドレスにアクセスしてください。

# @sacloud-desc http://サーバのIPアドレス/

# @sacloud-desc (このスクリプトは、CentOS6.XもしくはScientific Linux6.Xでのみ動作します)

1回だけ 実行する

サーバ作成画面のスタートアップスクリプト選択欄に説明文として表示される

Page 34: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

34 (C)1996-2014 SAKURA Internet Inc.

WordPressのスタートアップスクリプト-2

#---------START OF iptables---------#

cat <<'EOT' > /etc/sysconfig/iptables

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT ACCEPT [0:0]

:fail2ban-SSH - [0:0]

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH

-A INPUT -p TCP -m state --state NEW ! --syn -j DROP

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT

-A INPUT -p udp --sport 53 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A fail2ban-SSH -j RETURN

COMMIT

EOT

service iptables restart

#---------END OF iptables---------#

iptablesの設定を行う

Page 35: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

35 (C)1996-2014 SAKURA Internet Inc.

WordPressのスタートアップスクリプト-3

#---------START OF LAMP---------#

yum -y install expect httpd-devel mod_ssl php-devel php-pear mysql-server php-mbstring php-xml php-gd php-mysql|| exit 1

service httpd status >/dev/null 2>&1 || service httpd start

for i in {1..5}; do

sleep 1

service httpd status && break

[ "$i" -lt 5 ] || exit 1

done

chkconfig httpd on || exit 1

service mysqld status >/dev/null 2>&1 || service mysqld start

for i in {1..5}; do

sleep 1

service mysqld status && break

[ "$i" -lt 5 ] || exit 1

done

chkconfig mysqld on || exit 1

NEWMYSQLPASSWORD=`mkpasswd -l 32 -d 9 -c 9 -C 9 -s 0 -2`

/usr/bin/mysqladmin -u root password "$NEWMYSQLPASSWORD" || exit 1

cat <<EOT > /root/.my.cnf

[client]

host = localhost

user = root

password = $NEWMYSQLPASSWORD

socket = /var/lib/mysql/mysql.sock

EOT

chmod 600 /root/.my.cnf

#---------END OF LAMP---------#

Apache、MySQL、PHPの インストールを行う

Page 36: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

36 (C)1996-2014 SAKURA Internet Inc.

WordPressのスタートアップスクリプト-4

#---------START OF WordPress---------#

USERNAME="wp_`mkpasswd -l 10 -C 0 -s 0`"

PASSWORD=`mkpasswd -l 32 -d 9 -c 9 -C 9 -s 0 -2`

curl -L http://ja.wordpress.org/latest-ja.tar.gz | tar zxf - -C /var/www/ || exit 1

mv /var/www/wordpress /var/www/$USERNAME

cat <<EOT > /var/www/$USERNAME/wp-config.php

<?php

/** WordPress のためのデータベース名 */

define('DB_NAME', '$USERNAME');

/** MySQL データベースのユーザー名 */

define('DB_USER', '$USERNAME');

/** MySQL データベースのパスワード */

define('DB_PASSWORD', '$PASSWORD');

/** MySQL のホスト名 */

define('DB_HOST', 'localhost');

define('DB_CHARSET', 'utf8');

define('DB_COLLATE', '');

¥$table_prefix = 'wp_';

define('WPLANG', 'ja');

define('WP_DEBUG', false);

EOT

curl -L https://api.wordpress.org/secret-key/1.1/salt/ >> /var/www/$USERNAME/wp-config.php

cat <<'EOT' >> /var/www/$USERNAME/wp-config.php

if ( !defined('ABSPATH') )

define('ABSPATH', dirname(__FILE__) . '/');

require_once(ABSPATH . 'wp-settings.php');

EOT

mysql --defaults-file=/root/.my.cnf <<-EOT

CREATE DATABASE IF NOT EXISTS $USERNAME;

GRANT ALL ON $USERNAME.* TO '$USERNAME'@'localhost' IDENTIFIED BY '$PASSWORD';

FLUSH PRIVILEGES;

EOT

cat <<EOT > /etc/httpd/conf.d/$USERNAME.conf

<VirtualHost *:80>

DocumentRoot /var/www/$USERNAME

AllowEncodedSlashes On

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory "/var/www/$USERNAME">

Options FollowSymLinks MultiViews ExecCGI

AllowOverride All

Order allow,deny

allow from all

</Directory>

</VirtualHost>

EOT

service httpd reload || exit 1

chown -R apache:apache /var/www || exit 1

WordPressのインストールを行う 1. WordPressをダウンロードして、展開 2. 設定ファイル(wp-config.php)を編集 3. mysqlにデータベースを作成 4. httpdのconfigファイルを編集

Page 37: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

37 (C)1996-2014 SAKURA Internet Inc.

concrete5とは

・アメリカのデザイン会社より生まれたオープンソースのCMS。

・ブラウザ上での直観的な操作によるコンテンツデザインが可能。

・concrete5 Japan 日本語公式サイト

http://concrete5-japan.org/

・concrete5 - Free CMS

Open Source Content Management System

http://www.concrete5.org/

Page 38: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

38 (C)1996-2014 SAKURA Internet Inc.

編集のポイント

・ダウンロードURLの変更

・展開方法の変更

・インストールスクリプトの仕様に応じた、スクリプトの変更の要否を確認。

Page 39: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

39 (C)1996-2014 SAKURA Internet Inc.

concrete5のスタートアップスクリプトの例-1

#!/bin/bash

# @sacloud-once

# @sacloud-desc concrete5をインストールします。

# @sacloud-desc サーバ作成後、WebブラウザでサーバのIPアドレスにアクセスしてください。

# @sacloud-desc http://サーバのIPアドレス/

# @sacloud-desc (このスクリプトは、CentOS6.XもしくはScientific Linux6.Xでのみ動作します)

1回だけ 実行する

サーバ作成画面のスタートアップスクリプト選択欄に説明文として表示される

Page 40: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

40 (C)1996-2014 SAKURA Internet Inc.

concrete5のスタートアップスクリプトの例-2

#---------START OF iptables---------#

cat <<'EOT' > /etc/sysconfig/iptables

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT ACCEPT [0:0]

:fail2ban-SSH - [0:0]

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH

-A INPUT -p TCP -m state --state NEW ! --syn -j DROP

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT

-A INPUT -p udp --sport 53 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A fail2ban-SSH -j RETURN

COMMIT

EOT

service iptables restart

#---------END OF iptables---------#

iptablesの設定を行う

※変更点なし

Page 41: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

41 (C)1996-2014 SAKURA Internet Inc.

concrete5のスタートアップスクリプトの例-3

#---------START OF LAMP---------#

yum -y install expect httpd-devel mod_ssl php-devel php-pear mysql-server php-mbstring php-xml php-gd php-mysql|| exit 1

service httpd status >/dev/null 2>&1 || service httpd start

for i in {1..5}; do

sleep 1

service httpd status && break

[ "$i" -lt 5 ] || exit 1

done

chkconfig httpd on || exit 1

service mysqld status >/dev/null 2>&1 || service mysqld start

for i in {1..5}; do

sleep 1

service mysqld status && break

[ "$i" -lt 5 ] || exit 1

done

chkconfig mysqld on || exit 1

NEWMYSQLPASSWORD=`mkpasswd -l 32 -d 9 -c 9 -C 9 -s 0 -2`

/usr/bin/mysqladmin -u root password "$NEWMYSQLPASSWORD" || exit 1

cat <<EOT > /root/.my.cnf

[client]

host = localhost

user = root

password = $NEWMYSQLPASSWORD

socket = /var/lib/mysql/mysql.sock

EOT

chmod 600 /root/.my.cnf

#---------END OF LAMP---------#

Apache、MySQL、PHPの インストールを行う

※変更点なし

Page 42: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

42 (C)1996-2014 SAKURA Internet Inc.

concrete5のスタートアップスクリプトの例-4

#---------START OF concrete5---------#

USERNAME="c5_`mkpasswd -l 10 -C 0 -s 0`"

PASSWORD=`mkpasswd -l 32 -d 9 -c 9 -C 9 -s 0 -2`

curl -L http://direct.concrete5-japan.org/index.php/download_file/view/1310/45/ > c5.zip || exit 1

unzip c5.zip

mv concrete5.6.3.1.ja /var/www/$USERNAME

cd /var/www

curl -s -f -L https://raw2.github.com/concrete5/concrete5/master/cli/install-concrete5.php -O

chmod 777 /var/www/install-concrete5.php

cat <<EOT > /var/www/install-command-sample

./install-concrete5.php

--db-server=localhost

--db-username=$USERNAME

--db-password=$PASSWORD

--db-database=$USERNAME

--starting-point=blank

--admin-password=(パスワード)

--admin-email=(メールアドレス)

--target=./$USERNAME

--site=concrete5sample

--core=./$USERNAME/concrete

--reinstall=no

EOT

mysql --defaults-file=/root/.my.cnf <<-EOT

CREATE DATABASE IF NOT EXISTS $USERNAME;

GRANT ALL ON $USERNAME.* TO '$USERNAME'@'localhost' IDENTIFIED BY '$PASSWORD';

FLUSH PRIVILEGES;

EOT

cat <<EOT > /etc/httpd/conf.d/$USERNAME.conf

<VirtualHost *:80>

DocumentRoot /var/www/$USERNAME

AllowEncodedSlashes On

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory "/var/www/$USERNAME">

Options FollowSymLinks MultiViews ExecCGI

AllowOverride All

Order allow,deny

allow from all

</Directory>

</VirtualHost>

EOT

service httpd reload || exit 1

chown -R apache:apache /var/www || exit 1

./install-concrete5.php --db-server=localhost --db-username=$USERNAME --db-password=$PASSWORD --db-database=$USERNAME --starting-point=blank --admin-password=(パスワード) --admin-email=(メールアドレス) --target=./$USERNAME --site=concrete5sample --core=./$USERNAME/concrete --reinstall=no

concrete5のインストールを行う 1. concrete5をダウンロードして、展開 2. インストール支援スクリプト(install-

concrete5.php)をダウンロード 3. mysqlにデータベースを作成 4. httpdのconfigファイルを編集 5. インストール支援スクリプトにオプションを指定

して実行

Page 43: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

43 (C)1996-2014 SAKURA Internet Inc.

実際の画面 (デモ、もしくは動画でのご紹介)

Page 44: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

44 (C)1996-2014 SAKURA Internet Inc.

残された課題

1. バージョンが決め打ちになってしまう。

2. インストールスクリプトの仕様が異なるため、アカウント情報の一部を自動生成できない。

Page 45: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

45 (C)1996-2014 SAKURA Internet Inc.

今後の機能改良:gitからのインポートに対応予定

他の人の作ったスタートアップスクリプトをベースに、簡単にサーバー

立ち上げができるように!

Page 46: 20140823_「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -

46 (C)1996-2014 SAKURA Internet Inc.

ご清聴ありがとうございました

ブログやTwitterでの感想をお待ちしております

• さくらの広報 – Twitter(公式) @sakura_pr

• さくらのクラウド – ハッシュタグ #sacloud

– Twitter(公式) @sakuracloud