RDSからEC2のmysqlに移す

RDSは便利ですが、高かったです。

EC2のMySQLのバックアップ

RDS運用の前はEC2のMySQLで運用していたので、古いですが現状のEC2のMySQLを一応バックアップしておきます。

EC2のMySQLのデータベースを空にする

RDSからEC2のMySQLにインポートする

Amazon Linux – PostgreSQL・Nginx・FuelPHP


インストール

参考:
Amazon Linux AMIにpostgresqlをインストールする
チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール

yumをアップデートして、phpとgitとvimとnginx入れた。アパッチとMySQLも入れた。

postgresql入れた。

エラーでた

php56と指定しないといけないっぽい。

これで必要なの入った。

postgreSQLの設定する

postgresユーザにパスワード設定

postgresユーザに切り替える

基本データベース生成とサービス開始

データベース作成する

NginxでPHP使えるようにする

参考:nginxでphpを使う(CentOS6.5)

php-fpmをインストールする

php-fpmの設定をする

下記のwww.confのuserとかgroupがapacheになっているので、nginxに変更します。

NginxでFuelphpが動くようにする

下記、nginx.confを修正していく。

下記箇所を、/usr/share/nginx/hoge/publicとかにする。

参考:http://fuelphp.jp/docs/1.8/installation/instructions.html
下記のように変更する。

nginxとphp-fpmを再起動する

FuelPHPをcloneする

FuelPHPはローカルで作ってるやつをcloneする。

FuelPHPのcomposer installする

phpPgAdminインストール

参考:phpPgAdminのインストール – CentOS6.5(Vagrant)

とりあえず、ローカルで上記サイトに記載のURLから、ダウンロードして、展開して、gitリポジトリに追加して、pullした。常時使える必要はなかったので、nginxのrootを変更してちょっとだけ使った。

ローカルのMySQLからAmazonRDSに移管する

EC2を使っていて、EC2のサーバに直接MySQLのDBを入れている状態から、AmazonRDSに移管します。自動でバックアップとかしてくれるので便利だからです。

Amazon RDSのインスタンスを作成する

まず、RDSのインスタンスを作成します。https://aws.amazon.com/jp/rds/getting-started/インスタンスを作る時に、データベースのID、パスワード、データベース名等を登録しました。エンジンはAurora 5.6.10aというやつです。

Amazon Aurora は、MySQL と互換性のあるリレーショナルデータベースエンジンで、高性能の商業用データベースの可用性およびスピードと、オープンソースデータベースのコスト効率性および簡素性を併せ持っています。Amazon Aurora は、MySQL の 5 倍の性能を持ち、同様の機能や可用性を提供している商用データベースの 10 分の 1 の価格です。

RDSにも、セキュリティグループがあります。このセキュリティグループの設定を変更して、EC2からアクセスできるようにします。

EC2のMySQLのデータを取り出す

RDSにデータをインポートする

参考:MySQL DB または MariaDB DB から Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート

上記によると、下記コマンドで、取り出してインポートするが一緒にできるらしい。

できた。便利だ。

あとは、アプリケーションのデータベースの設定を変更すれば完了します。

AWS – Cron

CakePHPのShellをCronで自動実行したい。
OSは、AmazonLinuxです。

$ cd /etc/cron.d
$ touch hoge
$ sudo vim hoge

・ 順番は、分 時 日 月 曜日。
・ */1で1分毎。ハイフンで期間指定もできる。

cronの動作チェック

cronが動いてるかチェックする。

$ service crond status

あと、cronの実行結果のログは、/var/log/cronにある。

参考:
cronで自動実行
【AWS】 Amazon Linuxでのcronジョブ設定
cakePHP2.3 cron (さくらサーバ)

AWS – postfixで受信したメールを解析する

参考:postfixで受信したメールをphpにわたしメールを解析する

上記のとおりやったら、phpに渡せた。権限の注意が必要。

phpでメール解析するための便利ツールが、Mail_MimeDecodeらしい。pearにある。
参考:stdinからのメール処理でメール情報を取得する

AWS – EC2でメールを受信する(Postfix)

参考:Postfix+Dovecotによるメールサーバ構築

とりあえず上記参考サイトのとおりに設定したら届いた。dovecotの設定もしたら、macのメーラーからも受信できるようになった。

ちなみに、mailコマンドでメールの確認ができるらしい。([mailコマンド]Linuxからメールを送る

$ sudo yum install mail
$ echo ‘testmail!’ | mail -s ‘hello!’ -r admin@hogehoge.com hoge@hoge.com

実際に送ることができた。ec2-user宛に送ったら、~/Maildirの中にメッセージが保存されていた。

capistrano エラー currentディレクトリが削除できません

EC2のインスタンスをAMIから複製して、本番環境つくってcapistrano3で本番環境へのデプロイをつくっております。
でもエラーになりました。currentを削除できませんということです。

権限がおかしかった。
参考:http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html

EC2 – AMIをつくってサーバを複製する

AMIはAmazon Machine Imageです。インスタンスからAMIを作成して、そのAMIからインスタンスをつくることでサーバを複製できます。
AMIをつくるときにMySQLとかとまっちゃうと書いてあるので、サーバ停止せずに複製する場合は、インスタンスからSnapshotを作成して、SnapshotからAMIを作成するといいそうです。

参考:Amazon EC2(AWS) インスタンスをコピーしてサイトを複製

ちなみに今インスタンスからAMIつくったけど特になんにもとまってない気がする。

EC2 cakePHPでMemcachedつかう

AmazonLinuxにMemcachedを設定します。

インストールと設定

インストールします。
参考:さくらの VPS 設定覚書(4)PHP

設定します。

Memcached を起動します。

自動起動の設定をします。

“0:off 1:off 2:on 3:on 4:on 5:on 6:off”と出れば、設定成功です。

memcache.iniを設定します。
http://php.net/manual/ja/memcache.ini.php

Apacheを再起動します。
service httpd restart

php -R ‘ phpinfo(); exit(); ‘ | grep “memcache”
で、反映してるか確認できます。

EC2でポートをあける

Custom TCP Rule, tcp, 11211, セキュリティグループ

cakePHPでつかえるようにする

core.phpで下記がコメントアウトされてるので、コメントを外します。

あとは、キャッシュを使いたいところで、App::uses(‘Cache’, ‘Cache’);を書いて、Cache::read(‘hoge’);とか、Cache::write(‘hoge’, 123);とかやります。

memcachedは、apacheを再起動しても消えないけど、memcachedを再起動したら消えます。あとcakePHPのCacheは、モデルが追加、編集、削除されたときにモデルに関するキャッシュを消すそうです。でもroutes.phpでURL変えてると消えない場合があるようです。

EC2にChefでwwwグループ作成する

EC2にChefでPHP、MySQL、Apacheなどを入れてみる

chefでresourceというのはchefが用意している命令のことらしい。OSの種類に応じて処理を実行してくれたり、エラーの場合の処理も内部でやってくれるので、Recipeに数行のresourceを書くだけでOKになっている。

packageもResourceですよね??packageを使って、php、mysql、httpdがインストールできそうなコードを試してみる。

とりあえずこれで実行してみたらエラーでなくてインストールされたっぽい。

vimとかphpmyadminもインストールさせてみようと思ったらエラーになった。
phpmyadminのインストールは下記に書いてあった。
AWS EC2にPHPMyAdminをインストールする

まあこれだけできても特段有り難いものではない。
かといって全てを可能にする為の勉強工数もあまり有り難いものではないなあ。

追記:
phpmyadminは、上記実行後に、sudo yum updateして、再度上記を実行したらエラーになった。残念だった。

EC2にcapistrano3でデプロイ

EC2はサクラレンタルサーバと違ってデフォルトですんなりいけた。

EC2の/var/wwwにデプロイする。
/var/www/htmlに/var/www/currentのシンボリックリンクをはっておく。

capistranoサーバで下記設定する。
任意のディレクトリhogeに移動する。

config/deploy.rb

config/deploy/staging.rb

VagrantでEC2にアクセスする

ベイグラントと読むらしい。Vagrantで AWS EC2インスタンス(RHEL5.5)を作成するだけが頼りです。

Vagrant のAWS-Provider インストールというのをしてみる。

結構時間かかる。時間かかるなー。まだ終わらないので、Vagrantfileに記述する情報を調べる。

参考サイトから引用。こういうVagrantfileを作る必要があるらしいけど、アクセスキーとかシークレットキーとかもらってないので調べる。

と思ってたらインストールが完了した。

AWS EC2 用のDummyBox 取得&初期化というのをしてみる。

vagrant init
そして、上記のVagrantfileを作成する。なのでAPIのキーみたいの調べる。
ここにあるっぽい。

スクリーンショット 2014-02-26 4.08.41

Access Keys (Access Key ID and Secret Access Key)のCreate New Access Keyを押してみる。作成できた。rootkey.csvというのももらった。別にsecret access keyが書いてあるだけなのでしっかり保存しとけよっていうことらしい。

ではいざVagrantfileをつくってupしてみる。
amiがなかったから作ってみた。

vagrant 起動(= 仮想サーバ作成)をしてみる。

悲しいです。エラーでまくり。

Nokogiriってなんだよ。。

unfっていうのをインストールしてみる。

あんま関係ないかも。。エラー変わらず。

vagrantでawsのインスタンスを起動しようとしたときに、getaddrinfo: nodename nor servname provided, or not known (SocketError)と出る件

aws.region = “ap-northeast-1a”を、aws.region = “ap-northeast-1″したらいいらしい。

おおいい感じと思ったら別のエラーが出た。

あーなんかAMIつくったときにもう1個インスタンスが出来てたらしくて一個止めたらなんか入れた。入れたけどこれって単純に接続してるだけじゃん。なんだこれ。

Vagrant 1.1 で EC2 を vagrant upなるほどー。おらが思ってたのとちゃう。。
単にVagrantつかってEC2にアクセスできるだけか。。

[AWS][Vagrant]vagrant-awsを利用したイイカンジ(?)のAWS開発フロー

なんかすごいけどまだよくわからない。
さくらにしても、AWSにしても俺はローカルと開発サーバと本番サーバを同じ環境にしたくて、しかもローカルの代わりにAWSは使いたくない。お金かかるし。だから本番サーバのAWSに合わせたVagrantのBOXを自分でつくりたい。

Packerっていうのでつくれそう。
https://speakerdeck.com/ryuzee/vagrant-plus-amazon-ec2これに下記があった。
スクリーンショット 2014-02-26 7.48.48

Packerというのをインストールしてみる。
PackerでVagrant用のBoxを作成したときのメモ

インストールできない。
http://www.packer.io/downloads.htmlここにあった。

OSXでpackerでCentOS6.4のVirtualBox VMを作成する
インストールできた。
でどう使うんでしょうか?

今日全部覚えるのは無理だな。色々なツールがあるし、そもそもよくわかってないし。
どうしたらいいのじゃ!まいった!時間がないのに!

ただし「このLinuxをAmazonクラウド以外で使えますか?」という問いには「いいえ、Amazon EC2以外で利用可能ではありません」と記されています。

とどこかに書いてあった。まあそうなのか。じゃあローカルに仮想環境つくるもくそもないのか。全くおんなじじゃないと意味ないっすからねえ。でもamazon linuxはec2でしか使えないならローカルで実現できるわけないし。

VagrantとChefでチームの開発環境を共通化する

とりあえず便利そうなやつだけインストールしておこう。

で、一旦amazon linuxという呪縛から離れて、CentOS release 6.5の仮想マシンを立ち上げてみよう。ということはboxをhttp://www.vagrantbox.es/で探してみよう。CentOS 6.5 x86_64かな??
ってことは、こんな感じでやるのかな?

エラーがいっぱいでてるけど、vagrant sshしたらとりあえず入れる。

ここに、Apache 2.2.15、Mysql 5.5.33、PHP 5.3.3これをchefで構築できるようにしたい。
でも時間かかるから、とりあえず普通にインストールしちゃって次のことするか。
次のことっていうのは、AMIを落として別のアカウントのEC2に適用するっていうのをしたいです。
あるいは、scpでソースコード移管して、DBに関しても移動させるか。システムログを消しても大丈夫かどうかだけど一般的にログは消しても大丈夫だからな。

さっきの、sudo yum groupinstall -y “Web Server” “MySQL Database” “PHP Support”をやってみたらmysqlがインストールできなかった。

http://qiita.com/srockstyle/items/8bed9550be75bf2e5e14これのとおりにやってみる。

## EpelとRemiを入れる
sudo -i
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

## MySQLの5.5をremiから
yum –enablerepo=remi install mysql-server mysql mysql-libs mysql-devel

できた。でも5.5.33がよかったんだけど、5.5.36だった。どうでもいいか。いいのかな?