はじめてのAWS EC2インスタンスにDockerインストール、docker-compseでnginx-proxyとletsencrypt-nginx-proxy-companionを使う

巷ではSSLが当たり前になってきました。
さくらVPSからAWSへの移行作業といっしょにdockerでマイクロサービスが作れる環境、そしてSSL化もしたい。
といったところでいろいろ調査したり試したりしています。

SSL化ではAWS Certificate Managerがあります。しかしELB(ロードバランサー)でしか使えないよう。詳しく調べていないけど。。。

まあここは、無料で有名なLet’s Encryptを使うことにしました。
公式HP:https://letsencrypt.org/
Github:https://github.com/letsencrypt/letsencrypt

mozaic.fmでLet’s Encryptについて詳しく説明されていました。
https://mozaic.fm/episodes/23/lets-encrypt.html

Lets Encryptは無料の認証局で、誰でも簡単に使えて、かつ自動化ができます!
下記の手順では、letsencrypt-nginx-proxy-companionが自動でやってくれます。

Linuxコマンド 1つ前のディレクトリに戻る windowsの戻るボタン的な

今さら知って損した気分になりました。cdだけを打ち込んでホームディレクトに移動したとき、ため息出てたけど、1つ前に戻るコマンドあったんですね。windowsにあるんならあると思ってすぐに検索するのものだと思いますが、恥ずかしながら今日しりました。

$ cd –

1つ前のさっきいたディレクトに戻ります。

はじめてのAWS EC2インスタンス(Amazon Linux)にS3のバケットをgoofysでマウントする

EC2でS3をマウントするにはs3fsがメジューみたいですが、s3fsが遅いという情報があり、今回goofysを使ってマウントすることにしました。

EC2インスタンスにS3のバケットをgoofysでマウントする

goとfuseのパッケージが必要となるためインストール

sudo yum install golang fuse

 

AWS CLIの設定

$ aws configure
AWS Access Key ID [None]: [S3 フルアクセスユーザのAccess key ID]
AWS Secret Access Key [None]: [S3 フルアクセスユーザのSecret access key]
Default region name [None]: ap-northeast-1
Default output format [None]: json

※アジアパシフィック (東京)のリージョン: ap-northeast-1

http://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html#s3_region

 

バケットの確認

aws s3 ls s3://[バケット名]

GOPATHを設定

export GOPATH=$HOME/go
echo $GOPATH /home/ec2-user/go

goofysのインストール

go get github.com/kahing/goofys go install github.com/kahing/goofys

マウントポイントの作成

sudo mkdir /mnt/bucket

/mnt/bucketへアクセス権限を付与(とりあえず全アクセス)

sudo chmod -R 777 /mnt/bucket/

 

マウント

./go/bin/goofys [バケット名] /mnt/bucket

注意:コマンドが帰ってきたら完了です。マウントに成功してもしなくても、何も戻ってこないので実際に確認してみます。

 

プロセス確認

$ ps auxf | grep goofys

ec2-user 31604 0.0 0.2 110472 2188 pts/0 S+ 22:11 0:00 \_ grep --color=auto goofys
ec2-user 30988 0.0 1.3 225460 14168 ? Ssl 17:21 0:00 /home/ec2-user/go/bin/goofys バケット名 /mnt/bucket

ボリューム確認

$ df -h

ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 488M 56K 488M 1% /dev
tmpfs 498M 0 498M 0% /dev/shm
/dev/xvda1 30G 1.6G 28G 6% /
バケット名  1.0P 0 1.0P 0% /mnt/bucket

自動マウント

手動でマウントするのは面倒なので、/etc/fstabにサーバー起動時にマウントされるように設定します。

 

rootユーザーでAWS CLIの設定

$ sudo aws configure
AWS Access Key ID [None]: [S3 フルアクセスユーザのAccess key ID]
AWS Secret Access Key [None]: [S3 フルアクセスユーザのSecret access key]
Default region name [None]: ap-northeast-1
Default output format [None]: json

 

fstabを修正

$ vim /etc/fstab

LABEL=/ / ext4 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/home/ec2-user/go/bin/goofys#[バケット名] /mnt/bucket fuse _netdev,allow_other,--dir-mode=0775,--file-mode=0666,--uid=500,--gid=500 0 0
※--dir-mode、--file-modeと--uid、--gidはファイルやディレクトリが作成された際のデフォルト権限/所有者の設定

インスタンスを再起動して確認してみる

$ reboot

マウント確認する

$ df -h
オプション | 説明
-----------+--------------------------------------------------------------------
_netdev    | ネットワークが有効になるまでマウントを待つためのオプション。
           | ネットワーク経由のデバイスを起動時にマウントさせたい場合などに指定する。
allow_other| 他のユーザーでも利用できるようにする。
--file-mode| マウントする際のファイル権限を設定する。
--uid      | マウントするユーザーIDを指定する。
--gid      | マウントするグループIDを指定する。

参考サイト

http://qiita.com/kooohei/items/a14f22cb0381342d1861

AndroidでSpinnerのdropDown表示位置調整 dropDownHorizontalOffset(水平位置)の設定はできない?

ドロップダウンを表示位置を調整するissueがやってきて

調査とかしたけどdropDownVerticalOffsetは設定が可能ですが、dropDownHorizontalOffsetは効かない。

 

android:dropDownHorizontalOffset=”-50dp”  この設定がきかない。Javaで書いても
android:dropDownVerticalOffset=”10dp”     数値を上げるとドロップダウンを下部、マイナスにすると上部

 

ドキュメントには、dropDownHorizontalOffsetがあるんだよなー

https://developer.android.com/reference/android/widget/AutoCompleteTextView.html#attr_android:dropDownHorizontalOffset

Atomエディタを使い始めたときに知っていると便利なショートカットキーをまとめた – Qiita

Atomエディタを本格的に実務で使い始めて4ヶ月ほど経とうとしています。当然全て網羅しているわけではなく、既に使いこなしている人にとっては基本的なものばかりですが、自分が使い始めたときに知っていたらもう少しスムーズにAtomに入っていけたかもと思えるショートカットをまとめました。

情報源: Atomエディタを使い始めたときに知っていると便利なショートカットキーをまとめた – Qiita

はじめてのAWS S3のバケットを作成

バケット作成だけはすごく簡単。静的なページだけならS3だけでもサイト作れるとのこと

今回はただバケットを作成するだけです。細かい設定などは、ドットインストールで確認 http://dotinstall.com/lessons/basic_aws/9515

 

 

はじめてのAWS s3用のロールを作成する

EC2にs3をマウントするため、まずs3用のロールを作成します。

ダッシュボードからIAMをクリックして、ロールをクリックして選択する。

 

手順 1 : ロール名の設定

適当にロール名を入力して次のステップへいく

 手順 2 : ロールタイプの選択

とりあえず、Amazon EC2を選択した。

手順 4 : ポリシーのアタッチ

手順 5 : 確認

 

作成済みEC2インスタンスへロールを設定できるのかと思っていたが、EC2インスタンス新規作成するときでしか

ロールを設定できないそうです。なのでもう一度EC2インスタンス作成した。

 

 

 

情報源: EC2インスタンスにS3をマウントして使用する(IAM Role ver) – Qiita

AWSアカウントの2段階認証を設定 Google Authenticator

1.iOS か Android に、Google Authenticator をインストール

 

2.ルートアカウントでログインし、でマネージメントコンソールを開き、Security Credentials をクリック

3.「MFAの有効化」ボタンをクリックして、ダイアログを表示

4.「仮想MFAデバイス」を選択して「次のステップ」ボタンをクリック

5.ダイアログのQRコードをGoogle Authenticator のアプリから読み取る。 Google Authenticator に表示された 6 桁のコードを 2 つ入力する必要があります。ひとつ入力して、別のコードに切り替わるのをしばらくまって、2つ目の入力をする。

※私の場合はiosとandroidで1つづつ端末があるので同じQRコードを2つの端末から読み取った。どちらも同じ6桁の数値が表示される

 

6.設定が完了するとこんな感じです。

7.試しにサインアウトし、ログインするともう一つ下記の画面が表示される。ここで「Google Authenticator」を起動して6桁の数値を入力してログインする

情報源: AWSアカウントの2段階認証を設定する – Qiita

Android Studioでgithubアカウントを変更するとVCSのpush、pullが失敗する

個人のGithubアカウントを会社で使っていたのですが、会社側でこの度、正式にgithubを使用することとなりました。githubを使っているツールすべてを会社用アカウントへ変更していました。しかし、なぜかAndroid Studioだけ旧アカウントの設定が使用されてリモートへのpush、pullができない状態になり、解決までかなりの月日を費やしてしまいました。

 

ログの内容

remote: Repository not found.
fatal: repository 'https://新アカウント名@github.com/新アカウント/hoge.git/' not found

 

この問題は、githubの複数アカウント管理を調べれば解決しそうだったので、一生懸命複数アカウントのことばかり調査していました。しかしこれば間違いでした。

次に、Android Studioの設定情報を何回も確認しましたが、問題なし

結局問題は、githubアカウントの保存問題で、「git-credential-wincred」が旧アカウントの設定になっていました。

git1

git2

git3

 

参考サイト

GIT-CREDENTIAL-WINCREDのユーザー名やパスワードを変える

https://blog.hinaloe.net/2015/03/08/change-name-or-pass-of-git-credential-wincred/