railsgirlsの補足
Railsgirlsに沿っての講習を受けた。
その中で気になったことを補足。
rake db:migrateの前に…
MysqlのインストールとDB作成をしなければならない。
mysqlのインストールはgemファイルに書いてbundle install
gem 'mysql2'
-mysqlの起動
sudo mysql.server start
-mysqlにログイン
-mysqlにrootでログイン
mysql -u root -p
Enter password: パスワードを入力
-DBを確認
show databases;
→
-developmentとかがないのでDB作成する。
create database hello_development;
→これを project/config/database.ymlの内容と合わせる。
ex.)
adapter:mysql2
database:development
rails g scaffold idea name:string picture:string
ちょっと雑多なメモになってしまったけどそんな感じ。
メールサーバ構築の参考URL
職場でメールサーバの構築の依頼に対応したので参考にしたURLを備忘までに。
※インターネット環境ではなくクローズドなローカル環境で実施。
→dnsがないので、クライアント端末にhosts設定してもらった。
はじめての自宅サーバ構築 - Fedora/CentOS - メールサーバ
メールサーバ構築(Postfix +MySQL +Dovecot +postfixadmin) | clicktx::Tech::Memo
DBのリカバリについて
リカバリには2種類ある
1.クラッシュリカバリ
【どんな場合?】
システム稼働中に停電等、何らかの障害で急にインスタンスが停止した
SHUTDOWN ABORTコマンド実行等、データベースが正常日停止されなかった状態からデータベースを起動した場合
→
トランザクションが実行中だった可能性がある。
【リカバリ方法】
自動でのREDOログファイルの適用(ロールフォワード)
※UNDOセグメントもREDOログで復元
2.メディアリカバリ
【どんな場合?】
ディスク障害等によってデータの格納されているデータファイルが消失してしまった場合など
【リカバリ方法】
①バックアップをリストア
②アーカイブREDOログ・ファイルとオンラインREDOログ・ファイルを利用して、ロールフォワード処理を手動で実行。
③手動でコマンド実行することによって、先ほどのクラッシュリカバリと同様にロールフォワードを行い、確定していないトランザクションはロールバックし、データベースの整合性を維持する。
<参考URL>
Oracleバックアップ/リカバリ講座(2):アーキテクチャから理解するOracleリカバリ (3/3) - @IT
http://www.oracle.co.jp/corp/hiroshima/club/specially/events/doc/hrs070626-2.pdf
ssh接続できない場合の対処
まずは原因を探る。
ssh -vvv ~~~~ でOK
【よくある問題】
・ユーザーのホームディレクトリのパーミッションは適切か(700など).
・~/.ssh ディレクトリのパーミッションは適切か(700など).
・秘密鍵のパーミッションは適切か(600など).
・puttyで作ったopenssh形式に公開鍵は変換("ssh-keygen -i -f Puttyで作った公開鍵 > openssh形式の公開鍵")しないといけない.
・ローカルマシンのvi ~/.ssh/config に書いた秘密鍵のpathは正しいか。
※自分は一回、sshをssjとtypoしてハマった。。。デバッグで動かせば一発で分かります。
etc
他にハマったポイント
AWS EC2インスタンスにssh接続するまで その2
[技術メモ]AWS EC2インスタンスにssh接続するまで その1
の通りにやっても自分はできなかった・・・
なぜか!?
これは秘密鍵の作り方に問題ありました。。。
自分は鍵の名前をid_rsaでなく、neco_id_rsaとしていました。
なぜかというと、他のPJでもawsでssh接続しており、既にid_rsaがあったため。
どうやらデフォルトでは~/.ssh/id_dsa ,~/.ssh/id_ecdsaおよび~/.ssh/id_rsaの名前の秘密鍵しか読みにいかないらしい。
増やしたい場合は設定ファイル(/etc/ssh/ssh_config)にIdentityFileプロパティを追加する.
IdentityFile ~/.ssh/neco_id_rsa
ちなみにMACの場合は /etc/ssh/sshd_config(~/.ssh/config だったかな?)に設定する。
AWS EC2インスタンスにssh接続するまで その1
ユーザはnecoで論じていきます。
(1) インスタンスに新規ユーザを作成する。
EC2インスタンス作成時に割り当てたキーペアファイル(ここではxxx.pemとする)を使って、ユーザ名「ec2-user」でインスタンスにログインする。
[neco@local ~]$ ssh -i xxx.pem ec2-user@ec2-xxx-xx-x-xx.compute-x.amazonaws.com
新規ユーザ「hoge」を追加して、パスワードを設定する。
[ec2-user@instance ~]# sudo adduser hoge [ec2-user@instance ~]# sudo passwd hoge
ユーザhogeにsudoを許可する。
[ec2-user@instance ~]# sudo vi /etc/sudoers (下記を追記) neco ALL=(ALL) ALL
インスタンスからログアウトする。
(2) 独自の公開鍵と秘密鍵を作成する
ローカルマシンで、SSHの鍵を作成する。
[neco@local]$ ssh-keygen -t rsa
ユーザホームディレクトリの.ssh以下に、秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成される。
(3) 公開鍵をインスタンスに配置する
公開鍵をEC2インスタンスにコピーする。コピー先は、一旦ec2-userのホームディレクトリとしている。scpには、キーペアを使用する。
[neco@local]$ scp -i xxx.pem ~/.ssh/id_rsa.pub ec2-user@ec2-xxx-xx-x-xx.compute-x.amazonaws.com:/home/ec2-user/
EC2インスタンスに、最初と同じ方法でログインする。公開鍵がコピーできたことを確認する。
[ec2-user@instance ~]$ ls id_rsa.pub
suコマンドで、ユーザhogeになる。
[ec2-user@instance ~]$ su neco
hogeユーザのホームディレクトリに、.sshディレクトリを作成する。ローカルからコピーした公開鍵を、authorized_keyという名前に変えて配置する。
[neco@instance ec2-user]$ sudo mkdir /home/hoge/.ssh [neco@instance ec2-user]$ sudo mv id_rsa.pub /home/hoge/.ssh/authorized_keys
移動した公開鍵の所有者とグループを、ec2-userからhogeに変更する。
[neco@instance ec2-user]$ sudo chown neco /home/neco/.ssh/authorized_keys [neco@instance ec2-user]$ sudo chgrp neco /home/neco/.ssh/authorized_keys
公開鍵と格納ディレクトリのパーミッションを変更する。
[neco@instance ec2-user]$ sudo chmod 600 /home/neco/.ssh/authorized_keys [neco@instance ec2-user]$ sudo chmod 700 /home/neco/.ssh
インスタンスからログアウトする。
(4) 作成した鍵を使ってログインする
ローカルからSSHで接続する。(暗黙に秘密鍵が使用される)
[neco@local ~]$ ssh neco@ec2-xxx-xx-x-xx.compute-x.amazonaws.com
これで、ログインできるようになります。
はずですが!
できない!
なぜだ!
解決方法は次回。