LoginSignup
7
8

More than 5 years have passed since last update.

[AWS OpsWorks]Berksfileだけgithubにあげて、OpsWorksでhttpd24 + php56 WEBサーバを作ってみる

Last updated at Posted at 2015-04-25

TL;DR

OpsWorksでhttpd24 + php56をインストールする。

https://github.com/imura81gt/httpd24_php56_opsworks
ここにあるBerksfileとCustom Jsonで。
chef cookbook書かなくてすんだ話。

こんな壁にぶち当たった

PHP App Server layer と custom json を使って php56を入れようとしても、httpd24が入らなくてエラーが出た。

 when 'rhel'
    package_name 'httpd'

個人的にchefを使うときの方針?きまり?手抜きルール?として

  • Chef DKを使う
  • なるべく自分ではcookbook書かない
    • 自分で使うだけだから考えなくていいのに、Amazon Linux以外にもUbuntuや他OSでも使えるように書きたくなるから。。。

みたいなことを考えてて、あーcookbook作るのは面倒だなーどうしようかなーと思いながらOpsWorksを引き続き触ってました。

ざっとOpsWorksを使ってみてわかったこと

  • custom json で attributeを指定できる
  • opsworksが提供しているchef-repoはあまりattribute使ってなくてカスタムしずらい
  • Berkshelfが使える

_人人人人人人人人人人人人人人人人人人人人人人人人人人人_
> BerksfileだけgithubにあげればOpsWorksで動かせる予感! <
 ̄YYYYYYYYYYYYYYYYYYYYYYYYYYY ̄

(マニュアルを読んでないだけかもしれないけど。。。)

用意

Berksfileだけ入ったgithubリポジトリ

Berksfile

source "https://api.berkshelf.com"

# apache
cookbook 'apache2', '~> 3.0.1'

# php
cookbook 'php', '~> 1.5.0'

githubリポジトリでDeploy Keyを設定しておく

deploy key(no password) の作成

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/imura81gt/.ssh/id_rsa): ./githubtest
Enter passphrase (empty for no passphrase):(何も文字を入力せずにEnterキー)
Enter same passphrase again:(何も文字を入力せずにEnterキー)

deploy key の設定

該当リポジトリの [Settings] -> [Deploy keys] -> [add deploy key] で
先ほど生成された .pubファイル の中身を設定。

OpsWorks準備

Stack作成

Add Stack をクリック

0001.png

いろいろ入力して Advanced をクリック

0002.png

Use custom Chef cookbooksYes
Berksfileだけ置いたgitリポジトリの情報を入力。
custom jsonを以下のように入力。

{
  "apache": {
    "package": "httpd24",
    "service_name": "httpd",
    "version": "2.4",
    "lock_dir": "/var/run/httpd",
    "keepalive": "On"
  },
  "php": {
    "packages": [
      "php56",
      "php56-devel",
      "php56-cli",
      "php-pear"
    ]
  }
}

なんか一部attribute(lock_dir, keepalive)defautl attributeを取ってこれてなかった謎。
(取れてなくてapachectl configtest でエラーなのにopsworksが正常終了した)

0003.png

Add Stack をクリック

0005.png

Layer作成

006.png

Layer typeCustom を選択した Add Layer

0007.png

インスタンス追加

Add Instance

0008.png

OpsWorksのセミナーでc3.large以上がいいって話だった気がしますが、テストなので t2.microを選んで Add Instance

0009.png

recipe(apache2::default, php::default)を追加する

edit をクリック

0010.png

Setup のところに apache2::defaultphp::default を入力して Save

0011.png

インスタンス作成時にpublic ipが付与されるようにする

NAT経由で外に出るか、public ipを付与してあげないと
いざ動かすとずっと booting のままになる

Recipes をクリック

0013-1.png

Edit をクリック

0013-2.png

Puglic IP addressYes にして Save

0013-3.png

インスタンス起動・適用

start

0013.png

待ち

0014.png

5分くらい待った。 Hostnameのところをクリック

0017.png

ログが見れる

0018.png

確認

(OpsWorksなのにsshしちゃった

Apache

[ec2-user@httpd24-php56-1 ~]$ httpd -v
Server version: Apache/2.4.12 (Amazon)
Server built:   Mar 18 2015 20:24:15
[ec2-user@httpd24-php56-1 ~]$

php

[ec2-user@httpd24-php56-1 ~]$ php -v
PHP 5.6.8 (cli) (built: Apr 17 2015 18:04:37)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
[ec2-user@httpd24-php56-1 ~]$
[ec2-user@httpd24-php56-1 ~]$ rpm -qa | grep php
php56-5.6.8-1.111.amzn1.x86_64
php-pear-1.9.5-2.17.amzn1.noarch
php56-xml-5.6.8-1.111.amzn1.x86_64
php56-process-5.6.8-1.111.amzn1.x86_64
php56-jsonc-devel-1.3.6-1.19.amzn1.x86_64
php56-cli-5.6.8-1.111.amzn1.x86_64
php56-common-5.6.8-1.111.amzn1.x86_64
php56-devel-5.6.8-1.111.amzn1.x86_64
php56-jsonc-1.3.6-1.19.amzn1.x86_64
[ec2-user@httpd24-php56-1 ~]$

あとは、、、、

  • Virtual Hostの設定をするrecipe
  • デプロイユーザ作成
  • 必要なディレクトリ作成

のrecipe書いて

  • アプリケーションのデプロイ

すればカンタンなphpアプリケーションなら動かせそう。

7
8
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8