ローカルの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の中にメッセージが保存されていた。

SSL証明書の設定(AWS)

何をやるかちょっと忘れた。

参考:
http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/InstallCert.html#InstallSSL-managing-server-certs

sshでサーバに入ります。
opensslが入ってるか確認します。

プライベートキーを作成します。

CSR(証明書署名要求)を作成する。

これで完成。

netowl.jpというところでSSL証明書を買ったんだけど、CSR入力後にSSL証明書発行したら、承認メールが送られてくるようになっていて、SSL証明を使うドメインのメールアドレスに承認メールが送られてくるので、メール受信可能な状態にしないといけない。AWSでメール受信設定するのもめんどくさいので、google mailを使うことにした。

証明書を発行したら、AWSのiamというのにアップロードしたら便利らしい。iamとか使わなくてもこの前で来たけどやってみる。

Unable to locate credentials. You can configure credentials by running “aws configure”.

おお、使えない。

Unable to locate credentials. You can configure credentials by running “aws configure”.
まだ使えない。AccessKeyとSecretKeyが必要で、それを設定する必要があるらしい。このKeyはIAMから取得できるらしい。IAMってなんだ。まあ、今いらないからいいや。

単純にアップして、httpd.conf(ssl.conf)を設定したら反映された。
chromeは、キャッシュしているらしく、正常に反映した後でも、URLバーが赤い状態になっていたが、ブラウザを再起動したら緑になった。

vagrantでnginx使うためのuser変更

vagrantで、vagrantユーザをnginxに変更しようとしたらどうもできなかったので、nginxのユーザをvagrantにする。

vim /etc/nginx/nginx.conf
vim /etc/php-fpm.d/www.conf

上記2ファイルのuserをvagrantにします。
そして、再起動します。

service php-fpm restart
service nginx restart

エラー default cache was unable to write ‘hogehoge’ to Memcache cache

タイトルのエラーがでたりでなかったりする。あとそもそも認証のセッション保持期間が変。
capistranoでデプロイした後に、memcachedを再起動してるのですが、その後にhttpdも再起動しないとうまく動かなかった。

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つくったけど特になんにもとまってない気がする。

nginxでphpを使う(CentOS6.5)

参考:Nginx でPHPを動かす(php-fpmをインストールする) [PHP5.3以降の場合]

PHPをFastCGI化する必要があります。
php5.3がインストールされている場合、
yum php-fpmとやると、php-fpmがインストールできます。

vim /etc/php-fpm.d/www.conf
ここにuserとかgroupがapacheになっているので、nginxに変更します。
ちなみに、/etc/php-fpm.confがphp-fpmの基本設定ファイルになります。

vim /etc/nginx/conf.d/default.conf

service php-fpm restart
service nginx restart

CentOS6.5 Nginxの最新版インストール

参考:CentOS-6へ最新版のnginxを3分でインストールする方法

nginx -v バージョン確認
nginx 起動

設定ファイルはこれっぽい。
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf

/etc/nginx/conf.d/default.confに、location / は、/usr/share/nginx/htmlだよと書いてある。
/var/wwwじゃないのか。

vagrantの場合下記のようにする。
ln -fs /vagrant/html /usr/share/nginx/html

さくらVPS CentOS6.5の設定

さくらVPSの標準のOSは、CentOS6.5です。これにPHP、MySQL、Apacheとかを入れて使えるようにします。

CentOS6.5
PHP5.3.3
Apache 2.2.15
MySQL 5.6.21

yum update -y
yum groupinstall -y “Web Server” “MySQL Database” “PHP Support”
service httpd start
sudo chkconfig httpd on
yum remove mysql*
yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum install mysql mysql-devel mysql-server mysql-utilities
yum install -y php-mysql
service mysqld start
mysql_secure_installation
sudo chkconfig mysqld on
yum –enablerepo=epel install -y phpMyAdmin php-mysql php-mcrypt

さくらVPSがssh接続できない

久しぶりにさくらVPSを借りて仮登録完了したからssh接続しようとしたらエラーになって接続できない。
Connection refusedになるので、サーバを再起動してみたけど、今度はOperation timed outになる。

まだ何の設定もしてないまっさらな状態のはずなんだけど、さくらの管理画面についているHTML5のターミナルのようなものを見てみると、下記のようにカーネルパニックとか書いてある。また再起動しても同じになる。

スクリーンショット 2014-10-20 4.12.07

さくらVPS SSH接続できないときにVNCコンソールで頑張って復帰するといった記事もあって、やってみたけどどうもダメなので、OS再インストールしてみた。時間かかる。。。AWSなら一瞬なのになー。。

20分くらいかかった気がするが再起動終わったら普通通りログインできた。