ラベル ec2 の投稿を表示しています。 すべての投稿を表示
ラベル ec2 の投稿を表示しています。 すべての投稿を表示

2016年7月16日土曜日

Itamaeセットアップメモ

EC2のAmazon LinuxにItamaeのサーバを構築し、リモートサーバもEC2のAmazon Linuxの場合


セットアップ
参考:Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita

sudo gem install itamae
sudo yum install ruby-devel gcc-c++
sudo gem install io-console


ローカルで実行する場合
sudo /usr/local/bin/itamae local path/to/recipe.rb
yamlのnodeを読み込む場合
sudo /usr/local/bin/itamae local --node-yaml path/to/node.yaml path/to/recipe.rb


リモートサーバに実行する場合
EC2へのSSHログインで使う秘密鍵をItamaeサーバ上にコピー(取り扱い注意?)
例:/home/ec2-user/.ssh/your-pair.pem
itamae ssh -h 対象のIP -i path/to/your-pair.pem path/to/recipe.rb

Ansibleや Itamaeで LAMP環境を作る

参考サイトのメモ。
Itamaeの方がいいかな。


Ansible

Ansibleのインストールと、ごく簡単なplaybook
VagrantとAnsibleでCentOSの環境を用意してみる - yk5656 diary

LAMP環境を作成
AnsibleでとりあえずのLAMP環境してみる - yk5656 diary

PHPをインストール
Ansible でインストール (php 5.6) - Qiita



Itamae

Itamaeのインストール、ごく簡単なレシピ、リモートサーバへの適用
Itamae on AWS - Itamae の EC2 へのインストールとレシピ適用 - - Qiita

レシピの書き方など
Chef脱落者が、Itamaeで快適インフラ生活する話 - Qiita
itamae 入門 - Qiita
Itamaeチートシート - Qiita
vagrantとitamaeによるLAMP環境構築 - Qiita
EC2 のインスタンスを Itamae でプロビジョニングした | mizoguche.info

設定値をJSONまたはYAMLに切り出す
第3回 ノード属性で汎用的なレシピを書く:Itamaeが構成管理を仕込みます! ~新進気鋭の国産・構成管理ツール~|gihyo.jp … 技術評論社

公式ドキュメント(英語。詳細は載ってない)
Home · itamae-kitchen/itamae Wiki · GitHub

公式ドキュメントが想像よりそっけないので、詳細は他のブログ等やQiitaで調べながら...。まあシェルコマンドが使えるから汚い書き方でいいならどうにでもなるけど。

2016年5月21日土曜日

certbot (Let's Encrypt)を Amazon Linuxにインストール


以前一度挫折した(古いAmazon Linuxをアップデートして使っているためだと思われる)が、certbotに改名後に試してみたら、できた。


前提

  • gitはインストール済み
  • WebサーバはApache



手順

  1. sudo easy_install pip
  2. sudo pip install --upgrade pip
  3. sudo /usr/local/bin/pip install --upgrade virtualenv
  4. (作業用ディレクトリで)
    git clone https://github.com/certbot/certbot
  5. cd certbot
  6. ./certbot-auto certonly --webroot -w /var/www/html -d ドメイン名 --agree-tos -m メールアドレス --debug
  7. /etc/httpd/conf.d/ssl.confの下記箇所を変更する。(Apache2.4.8より前のバージョン場合は微妙に違うので参考サイト参照。)
    SSLCertificateFile /etc/letsencrypt/live/ドメイン名/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/ドメイン名/privkey.pem
  8. httpdを再起動


証明書の自動更新
証明書の期限は90日なので、cronで定期更新させる。cronがメールを飛ばすように設定してあれば結果がメールで来る。

(例:月に1回更新する場合。日時は月初にすると混雑しそうなので、適当にずらした方がよいかも。)
45 3 12 * * ./certbot/certbot-auto renew && sudo service httpd reload

(2016/6/25 追記)
--debugも付けた方がよいかも?参考→Let's Encryptの cronによる実行が動かなくなった時の対策
(追記終わり)

期限まで30日以上ある場合は更新されない。それでも更新したい場合は--force-renewオプションを付ける。
上記例を試した時はまだ更新されなかったので、本当にこれでよいかはその日が来てから確認する。(--debug無しとか大丈夫か?タイミングによっては、月イチだと期限切れになるケースがあるかも?)


備考的な

  • Aapcheは停止しなくても大丈夫。(webrootオプションを使う場合はいいらしい。)
  • 証明書生成時にポート443は開いてなくても大丈夫。
  • /var/www/htmlに.well-knownディレクトリが残る。消してもいいのかな?



さよなら自己署名!さよならオレオレ証明書!


参考



2016年1月9日土曜日

EC2の MySQLを S3にバックアップする方法(世代管理付き)


S3への送信はaws-cliが良さそう。
参考:aws-cli - AWS CLIでS3を操作する - Qiita


aws-cliはAmazon Linuxなら最初から入っているが、手元のインスタンスはconfigure等をするにはバージョンアップが必要だった。
yumでもバージョンアップできるが、今回は諸事情により依存関係のある諸々をそっとしておきたかったので、下記を参考にyumを使わずにaws-cliをバージョンアップ。

参考:AWSCLIで運用検討中の人必見! AWSCLIを使用したS3へのファイルコピー | クラウド工房 Powered by Amazon Web Services

sudo easy_install pip
sudo pip install awscli -U


IAMでS3のみに権限を絞り込んだユーザーを作り、その認証情報をconfigure。(もう少し権限を絞っても良いかも。)

aws configure

AWS Access Key ID [None]: (アクセスキーを入力)
AWS Secret Access Key [None]: (シークレットアクセスキーを入力)
Default region name [None]:
Default output format [None]:


世代管理はS3の機能であるバージョニングとライフサイクルを使う。
S3でバケットを作成し、バージョニングを有効化。
ライフサイクルでルールを追加。(例「以前のバージョン」を30日後に削除)


後は適当にダンプとS3へのコピーのスクリプトを作ってcronに登録する。
分かりやすいようにディレクトリを作成し、そこにスクリプトを作った。

バックアップ用スクリプト作成。
vi backup.sh

#!/bin/sh
echo "START " `date +'%Y/%m/%d %H:%M:%S'`
MYSQL_PWD='MySQLのパスワード' mysqldump -u MySQLのユーザー 対象DB > data.dump
aws s3 cp data.dump s3://バケット名/
echo "E N D " `date +'%Y/%m/%d %H:%M:%S'
(パスワード直書きにしたが、きちんとやるならMySQLのパスワードは隠したい。)

スクリプトのファイルに実行権限を付ける。
chmod 700 backup.sh

cronに登録。
crontab -e

0 1 * * * cd /スクリプトのディレクトリ; ./backup.sh >> history.log


aws-cliを使うと、AWSのサービス間の通信はSSL(TLS?)で暗号化されるようだ。
参考
aws — AWS CLI 1.9.17 Command Reference
By default, the AWS CLI uses SSL when communicating with AWS services.

Amazon Web Service aws cliはデフォルトで暗号化通信されるのか? - なぜか数学者にはワイン好きが多い



S3を使わずにサーバ上で世代管理するだけなら、下記が一番分かりやすかった。
mysqldumpをcronで1日1回取得し、バックアップ用ファイルを保存する - サイト制作の豆知識

2015年3月8日日曜日

Linuxのセキュリティ対策


  • 基本
  • ファイアウォール
    • firewalld(RHEL7/CnetOS7以降)
    • iptalbes
    • Amazon EC2の場合は(EC2の)Security Groupsによる簡易ファイアウォールでも
  • WAF
    • ModSecurity
  • ウィルス対策
    • Clam AntiVirus
  • Rootkit検査
    • rkhunter
    • chkrootkit
  • 改鼠検知
    • AIDE
    • Tripwire
    • OSSEC (2015/4/4追記)
  • ログ報告
    • Logwatch

2013年11月15日金曜日

PHP5.5を Amazonの yumリポジトリからインストール

EC2のAmazon Linux AMIでデフォルトのyumリポジトリであるamznリポジトリから、PHP5.5をインストールできるようになった。

$ yum info php55

Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main/latest/primary_db                                                                                                                      | 2.5 MB     00:00    
amzn-updates/latest/primary_db                                                                                                                   | 301 kB     00:00    
mod-pagespeed/primary                                                                                                                            | 4.5 kB     00:00    
mod-pagespeed                                                                                                                                                     28/28
Available Packages
Name        : php55
Arch        : x86_64
Version     : 5.5.5
Release     : 1.55.amzn1
Size        : 2.9 M
Repo        : amzn-updates/latest
Summary     : PHP scripting language for creating dynamic web sites
URL         : http://www.php.net/
License     : PHP and Zend and BSD
Description : PHP is an HTML-embedded scripting language. PHP attempts to make it
            : easy for developers to write dynamically generated web pages. PHP also
            : offers built-in database integration for several commercial and
            : non-commercial database management systems, so writing a
            : database-enabled webpage with PHP is fairly simple. The most common
            : use of PHP coding is probably as a replacement for CGI scripts.
            :
            : The php package contains the module (often referred to as mod_php)
            : which adds support for the PHP language to Apache HTTP Server.



手元のサーバで使ってる拡張(Extension)のPHP5.4から5.5への変更のメモ。

php54-mbstring → php55-mbstring
php54-pdo → php55-pdo
php54-mysql → php55-mysqlnd
php54-pecl-apc → php55-opcache
php54-pecl-xdebug → まだない

5.4に比べてまだ少ないようだ。

2013年8月21日水曜日

EBSの rootボリュームをのサイズを増やす方法

Amazon EC2でEBSのrootボリュームの容量を増やす方法のメモ。

  1. インスタンスを停止する
  2. EBSボリュームをDetachする
  3. Detachしたボリュームのスナップショットをとる
  4. スナップショットからボリュームを作成する
    その際に、任意のサイズを指定する
    また、Availability Zoneはインスタンスと同じZoneを指定する
  5. 作成したボリュームをインスタンスにAttachする
    その際に、下記のデバイスとして指定する
    /dev/sda1
  6. インスタンスを起動する
  7. SSHでログインして、resize2fsコマンドを実行する
    sudo resize2fs /dev/sda1
  8. dfでリサイズ後の容量を確認する
    df -h


2013年8月6日火曜日

ホスト型侵入検知ツール(IDS)の aideを Amazon Linuxにインストール

徳丸さんが改ざん検知を導入したそうなので、うちにも入れてみた。徳丸さんはionotifywait(とTripwire)を採用したそうだけど、調べてみたらaideの方が使いやすそう。aideはTripwireなどと同じホスト型の侵入検知ツールというか改竄検知ツール、というか差分ファイル調査ツール。
なのでaideをAmazon Linuxにインストールしてcronで動かすまでの備忘録。rootで作業した。

インストール
yum install aide

設定ファイル編集
vi /etc/aide.conf
  • デフォルト設定の注意点
    • /var/www が含まれていないのでWebファイルの改竄を検知できない
    • /etc/httpd も含まれていない
    • /var/log が含まれているのでログが書かれると反応してしまう
  • 最初は厳し目(検知多め)にしておいて、使いながら緩くしていくのが良さそう

cron設定例
MAILTO=foo@example.com
00 2 * * * cd /var/lib/aide; cp aide.db.new.gz aide.db.gz; /usr/sbin/aide -u > /dev/null || cat /var/log/aide/aide.log
  • 毎晩2時に、前回作ったDBを適用し、チェック&DB作成を実行し、異常があった場合のみログの内容をメールで送付する場合の例
  • エラーがある場合は標準出力に出力されるエラー情報と同じ内容がログにも出力されるので、標準出力は /dev/null に捨てている


きちんとやるなら、aideのDBをどうやって守るか(別サーバに置くなど)とかも考えないといけないみたい。

2013年7月5日金曜日

Amazon Linuxに Ruby 2.0(+ Rails)をインストールするメモ

現時点でyumでは2.0は入れられないので調べた。
いろんなやり方があって、みんな微妙に違うから、参考サイトのパッチワークになってしまった。
参考にしたのは下記のサイト、下記の箇所。

  • yumで依存するパッケージをインストールする(全部いるのかどうかは分からない)

  • “Here is a variant with rbenv.”の方に従って、
    • rbenvをインストール
    • ruby-buildをインストール
    • /etc/profile.d/rbenv.shファイルを作成
    • “. /etc/profile”を実行

  • Rubyをインストール(必要に応じてバージョンを指定する)
  • Railsをインストール(必要に応じてバージョンを指定する。本家サイトはこちら


後で気付いたが、Amazon Linuxには最初からRuby 1.8が入っているからrbenvにしてよかった。

MySQL 5.6を RPMからインストール

現時点でyumに無いMySQL5.6をAmazon Linuxにインストールするメモ。
バージョン番号は現時点での最新版なので必要に応じて読み替えること。


インストール

  1. yum install MySQL-*.rpm

chkconfigに登録しようと見てみたら、もうmysqlが登録されてた。


初期設定


2011年12月25日日曜日

2011年を振り返って

2011年も残りあとわずか。このブログに投稿した内容を振り返ってみて、今年気になったキーワードのベスト5と、それに関連する投稿を挙げてみる。


5. Android

今年は予想されていたとおり、スマホ元年になった。そしてアメリカの状況を追うように、日本でもAndroidがiPhoneを上回りシェアを伸ばしている。
”Yahoo!”や”IE”を使っていた人たちがスマホを使うようになってきた、これは個人向けのサービスだけでなく企業向けのシステムをも飲み込んでいくのだろう。
タブレットも含めたスマホ以外へのAndroidの展開については、まだなんとも言えないけれど。(むしろこちらが来たら革命的に状況が変わるかも。)



4. Amazon EC2

今年は満を持してAWSのデータセンターが日本に上陸した。もともとシンガポールでもそんなに問題はなかった(アメリカは体感できるくらい遅かった)けど、やはり東京にあるに越したことはない。
その他にもAWSは立て続けに機能が追加されている。個人的にはAmazon Linux AMIの登場が良かった。CentOSよりyumでインストールできるパッケージのバージョンが新しいし。
以前は「突然落ちる!」という話が蔓延して大丈夫かなと思ってたけど、実際に使ってみて大丈夫な部分もそうでない部分も分かってきた。
来年は色んな環境をEC2へ移行していこうかなと夢想中。



3. jQuery UI

これは今年登場したわけではないけど、個人的に今年から本格的に使い始めたのでランクイン。
いわゆる”デザイン”ができない自分にとって、jQuery UIはまさに福音だった。classを指定するだけで簡単にそれらしいサイトができあがるし、その上バラエティに富んだテーマを選ぶことができる。企業向けのWebアプリならこれで充分でしょう。
はやくGridがリリースされないかな。



2. jQuery Mobile

そしてjQuery UIの弟分ながら既に兄貴とは比べものにならないくらいメジャーになり、(自分の中では)デファクトスタンダードにまでなっているjQeury Mobile。
jQuery UIのCSS Frameworkで実装されたclassさえ指定しておけばよいというやり方をさらに進化させ、data-*属性により動きまで指定するというやり方は黒魔術的だが、覚えてしまえば手軽に使うには便利。Ajax(実際にはHijax)による遷移も含めて、もうMobileだけじゃなくてPC向けにも取り入れればいいんじゃないかと思う。
とここまで書いて気づいたが、このブログではまともにjQuery Mobileについて書いたことがなかった。マニュアルを見れば他に調べる必要もないからか。



1. Titanium Mobile

1位に輝いたのはTitanium。チタニウムではなくタイタニウム。日本ではチタンに引っ張られてチタニウムと読みたくなるが、それでもどうしてもタイタニウム。
まだ発展途上の感は強いが、JavaScriptで、AndroidとiPhoneの両方のアプリが作れるというのは便利。
フォーラム等で回答をしたり見やすいAPI Documentも作ってくれたmasuidriveさんの活躍に負うところも大きいと思う。参考情報(日本語ならなお良し)の探しやすさは往々にしてソフトウェアがブレイクするかどうかにおいて、ソフトウェアの出来よりも影響が大きかったりする。来年も期待してます。



こうして見ると、やっぱりスマホの年だったと実感する。あとはJavaScriptか。
でも、ここでは出てこなかったけど、なんだかんだで個人的には今年もPHPが中心だったなあ。でもPHPは身近過ぎて、「今年」気になったキーワードという感覚にはならないんだよなあ。

2011年3月18日金曜日

AWS CloudFormationで PHP Hello World Applicationを作成してみた

AWS(Amazon Web Services)のCloudFormationの「PHP Hello World Application」に関する情報があまりないので試してみた。


まずはAWS Management Consoleから「PHP Hello World Application + SSH enabled」のstackを作成。
場所はAsia/Pacific 東京リージョンを選択できた。
インスタンスタイプはMicroインスタンス、OperatorEmailには自分のメールアドレスを記入した。


しばらくすると、こんなのが作成された。

  • S3
    • 空のバケットが作成された(バックアップ用?)
  • EC2
    • Root Device Typeがebsのインスタンスが1つ作成された
    • EBSのCapacityは8GiB
    • Security Groupが1つ作成された
      • SSHとHTTP(ポート番号は8888)のポートで、ともにIPアドレス制限無し
    • Load Balancerが起動した
      • 80番ポートを待ち受けてインスタンスの8888番ポートに向ける
    • Elastic IPは作成されなかった
  • CloudWatch
    • Alarmが3つ作成された
      • RequestLatencyAlarmHigh
      • CPUAlarmHigh
      • TooManyUnhealthyHostsAlarm
    • 閾値に達したら登録したメールアドレスにメールで知らせてくれるようだ
  • CloudFormation
    • stackが1つ作成された(そりゃそうだ)
  • RDS
    • DB Instanceが1つ作成された
      • DB Engine Versionは5.1.50
      • DB Instance Classはdb.m1.small
      • DB Storageは5GiB
      • Backup Windowは15:00~15:30(日本時間?)
      • Maintenance Windowは日曜14:00~14:30(これも日本時間?)
    • DB Security Groupが1つ作成された
      • 上記のEC2 Security Groupが適用されている
    • DB Parameter Groupのcharacter_set関連は「engine-default」になっているが、UTF-8使えるのかな?
  • SNS
    • CloudWatchのメール通知用のTopicが1つ作成された


EC2のLoadBalancerのドメインにHTTPでアクセスすると、Wellcomeメッセージとともにphpinfoが表示された。
phpinfoによるとバージョンは下記の通り。
  • Apache : 2.2.16
  • PHP : 5.3.3

SSHでアクセス(SSHのログインユーザーはrootでなく"ec2-user"なので注意。"ec2-user"はsudoができる)してみると、/var/www/html の中には index.php しかなかった。
ユーザー"ec2-user"のviはPHPのソースがハイライトされて見やすい。(少し目がチカチカするが。)

PHP拡張については主なものは入っているが、mbstringが入っていない。
yumで入れたら普通にインストールできた。
sudo yum install php-mbstring

mbstringを有効にするためにApacheを再起動。
すると、アクセスできなくなった。EC2のLoadBalancerからインスタンスが外れている。
SNSからのアラートメールもいくつも送られてきてる。

調べてみると、httpd.confでポート番号が80になっていた
8888に変更して再起動。

これでアクセスできるようになった。mbstringも使えるようになった。


使い終わったら、AWS Management ConsoleでCloudFormationのstackを削除。
するとCloudFormationが作った一連のものをきれいに削除してくれた。
例外はS3で、S3だけはバケットが残っていた。


あとこれは今回の調査に直接関係ないが、AWS Management ConsoleのS3とEC2が重くなった気がする。(この前の改善の影響?)


結論
ささっとPHP実行環境を作りたいなら、これもありかもしれないと思った。
RDSを使いたいかどうかは状況によるけど、CloudWatchとかSNSの設定が楽なのは便利そう。

2011年3月7日月曜日

Amazon EC2 東京リージョンと他のリージョンの価格比較


AWSの東京データセンターが開業したので、主な価格を他のリージョンと比較してみる。


US West
Asia Pacific
シンガポール
Asia Pacific
東京
EC2 Micro$0.025/時$0.025/時$0.027/時
EC2 Small$0.095/時$0.095/時$0.10/時
EC2 Medium$0.19/時$0.19/時$0.20/時
EBS$0.11/GB/月$0.11/GB/月$0.12/GB/月
S3(1TB以下)$0.154/GB/月$0.140/GB/月$0.150/GB/月


EC2は5%くらい高め、逆にS3はUS Westより安い。

速度(レイテンシ)は間違いなく東京が速いみたい。(参考:Amazon Web Servicesが日本に上陸!というわけで早速レイテンシやスループットを測ってみた - RX-7乗りの適当な日々


参考:AWSが日本データセンターを運用開始、責任者に聞いた - @IT

2010年4月16日金曜日

Amazon EC2の AMIとして 自分でCentOSをインストールする方法

Amazon EC2上の仮インスタンス上でCentOSのAMIを作成する方法を書こうとしたのだけれど、途中試行錯誤したので作業ログ的なメモになってしまった。


  1. Amazonが用意しているFedoraのAMIでAmazon EC2 API Toolsが既に入っているインスタンスを立ち上げる。(Amazon EC2 API Toolsをインストールする手間が省ける)
  2. 下記サイトを参考に、X.509証明書と秘密鍵をダウンロードする
  3. 2でダウンロードした2つのファイルを、1で立ち上げたインスタンスに転送する
  4. 下記サイトを参考に、1のインスタンス上でCentOSをセットアップする
  5. イメージの登録まで済めば、AWS Management Consoleの左側のメニューの「Images」のAMIsのところに、作ったAMIが表示される!



でもこの方法だとEBSからの起動ではなくinstance-store(S3)からの起動になってしまう。
なのでEBSから起動できるAMIを作ってみる。

  1. 作成したOSイメージ(centos5.img)を/tmpに移動(移動は不要?)
  2. 後はsuz-lab - blog: Migrating a CentOS S3 Based AMI to an EBS Based AMIを参考に進める
    • ddでAMIイメージをコピーしたらいつまでたっても終わらないので別のssh繋げて見てみたら終わってるように見えたのでそのまま進めてしまった
    • ec2regはec2-registerのalias
    • ec2regの -d オプションはdescriptionの登録なので省略してもOK

S3に作った時の「バンドルイメージの作成」以降がEBSへのコピーに変わった感じか。こっちの方が作るのも楽だ。
今ではもうEBSからの起動が普通なので、こちらの方法で手順をまとめられると良かったのだが。

2010年3月14日日曜日

代表的なクラウドサービスの比較(IaaS, PaaS and SaaS)

「クラウドとは何か?」についてはとあるコンサルタントのつぶやき : Part 1. マイクロソフトのクラウドコンピューティング "S+S" 概要 その1が分かりやすい。
特にこの図


以下は代表的なサービスにつていの調査メモ。

IaaS
(Infrastructure as a Service)

PaaS (Platform as a Service)

SaaS (Software as a Service)


全部まとめてXaaS (Xxxx as a Service)。
広義では、インターネットの向う側にあるものは全部クラウドだ。

2009年2月6日金曜日

衝撃スクープ!はてなが話題のPaaSでクラウドに参入!近日中に新サービスHatena::Serversをリリースか!?

これがそのスクリーンショット。


...

かと思ったら、はてな内部で使っているサービスらしい。
はてなでの仮想化技術の使い方@AMDセミナー - とあるはてな社員の日記内の一コマ。

どうもお騒がせしました。

最近EC2のことが頭から離れないもので...

ブログ アーカイブ

tags