DockerでAmazonLinuxを動かす
AmazonLinuxがdocker上で簡単に動かせるようになったので試してみました。
環境
- ホストOS・・・CentOS 7
- Docker・・・1.12.3
※CentOS 6上のDocker 1.7で試したら、 image amazonlinux:latest not found と出て実行できませんでした。
AWS cliのインストール
インストール
yum install python-pip pip install pip --upgrade pip install awscli
aws configure # 以下は環境に合わせて AWS Access Key ID [None]: Access Key AWS Secret Access Key [None]: Secret Key Default region name [None]: ap-northeast-1 Default output format [None]: json
Amazon Linuxイメージ取得
aws ecr get-login --region ap-northeast-1 --registry-ids 137112412989
# ecr get-loginを実行すると以下のようなコマンドが出力されるので、そのまま実行する
docker login -u AWS -p {パスワード} -e none https://137112412989.dkr.ecr.ap-northeast-1.amazonaws.com
# Docker Imageを取得
docker pull 137112412989.dkr.ecr.ap-northeast-1.amazonaws.com/amazonlinux:latest
Amazon Linuxの起動
ここまで来たら、通常通りコンテナを起動するだけです。
docker run -it 137112412989.dkr.ecr.ap-northeast-1.amazonaws.com/amazonlinux:latest /bin/bash
AmazonLinux起動してみるとわかるのですが、本当に何も入ってないです。
image名の変更
特に必要ないですがimage名を変更したほうが楽かも
docker tag {イメージID} amazonlinux
docker rmi 137112412989.dkr.ecr.ap-northeast-1.amazonaws.com/amazonlinux
参考
CakePHP3のメンテナンス切り替え用プラグインを作った
ホームページやシステムをすでにリリースしていて、DB等メンテナンスする場合にメンテナンス画面を表示するあれです。
どうやってみなさん画面を切り替えているのでしょうか?
.htaccessが多いのでしょうか。
今回は、メンテナンスを簡単に表示するCakePHP3のプラグインを作成しました。
インストール
composer require fusic/maintenance
使い方
使い方は簡単なので README をご確認ください。
ざっくりは以下になります。
src/Application.phpにMaintenanceMiddlewareを追加するsrc/Template/Error/maintenance.ctpにメンテナンス用ctpを作成する- メンテナンス画面を表示するタイミングで
tmp/maintenanceの空ファイルを作成する
最後に
今回初めて、 Middleware を使ったのですが、今後認証系もMiddlewareを使われるようになったりするんですかねー
使いどころをまだ思いついてない。。。
LaravelのMiddlewareを参考にしてみよう。
Serverless Framework v1 を使ってみた
Lambdaでの開発を高速化、便利にするフレームワーク、 Serverless Framework がver1.0が出たみたいなのでやっと触ってみました。
1.0が出たばかりで古い情報が多かったので自分の備忘録もかねて残しておきます。
CentOS6上に構築してます。
インストール
nodeのインストール
nodeのv4以上が必要となります。
バージョンが低い場合は入れなおしましょう。
node -v > v4.6.1
入れなおす場合
# インストールされているnodeを削除する yum erase nodejs # リポジトリの追加 rpm -Uvh https://rpm.nodesource.com//pub_4.x/el/6/x86_64/nodesource-release-el6-1.noarch.rpm # nodeのインストール yum install nodejs # バージョン確認 node -v > v4.6.1
Serverless Frameworkのインストール
npm install serverless -g serverless -v > 1.0.3
AWS IAMの作成
AdministratorAccess権限を持ったIAMを作成します。
デプロイ時に使用するユーザーとなります。
Serverless Frameworkテンプレートの作成
適当なディレクトリで、以下のコマンドを実行して初期構築を行います。
テンプレートファイルが作成されます。
mkdir hoge serverless create --template aws-nodejs --name hoge
template、nameには自由に設定してください。
templateは以下の好きなものを選んで問題ありません。
serverless.ymlの追記・修正
serverless.ymlには様々な設定が記述されています。
その中から、 region 、 accessKeyId 、 secretAccessKey を追記・修正します。
provider:
region: ap-northeast-1
credentials:
accessKeyId: {{AWS IAMアクセスキー}}
secretAccessKey: {{AWS IAMシークレットキー}}
regionは使用するリージョンを設定してください。
デフォルトだと、バージニアにデプロイされます。
credentialsについては、他にもaws-cliのcredentialsを使ったりできるみたいなのですが、手っ取り早く動かすために serverless.yml に追記してます。
デプロイ
以下、コマンドを実行することで Lambda へデプロイすることが可能です。
serverless deploy -v
実行結果として、endpointが表示されます。
endpointへブラウザからアクセスして messageに Go Serverless v1.0! Your function executed successfully! が表示されれば成功です。
次回へ続く
今さらすっごい便利なtigをインストールした
tigはGitをCUIで扱う場合に便利にしてくれるツールです。
git log や git add 等がカラフルで見やすく、インタラクティブに操作できるようになります。
tigの存在は知ってたのですが、ずっーーと見て見ぬ振りをしていたので使ってみました。
インストール
rpmforgeを追加すればyumでインストールすることが可能です。
MacであればHomebrewでインストール可能みたいです。
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm vim /etc/yum.repos.d/rpmforge.repo - enabled = 1 + enabled = 0 yum --enablerepo=rpmforge install tig
ただし、yumでインストール出来るのは結構古いので、自分でmakeしてもいいかも
http://jonas.nitro.dk/tig/manual.html
使い方
git clone した場所で、 tig と入力するだけです。
tig を実行すると git log した状態と同じになります。
tigを実行した画面

この状態で上下で対象のcommitを選び、エンターでdiffを見ることが出来ます。
ステータスを確認する(git status)
現在のステータスを確認するには tig status を実行します。
※tigの初期画面から S でも移動可能

基本的にはgit statusと変わりませんが、この画面上で git add , git diff , git reset , git commit を完結することが出来ます。
git add、git reset
ファイルを選択した状態で u を押す
git diff
ファイルを選択した状態で Enter を押す
git checkout --
ファイルを選択した状態で ! を押す
「Are you sure you want to revert changes?」と聞かれるので、y を押すことで変更を戻すことが可能です。
git commit
addをした状態で、C を押す
その他
~/.tigrc を修正することで細かな設定を変更することが可能です。
http://qiita.com/yoshikazusawa/items/d99e8b5d6f6a45aa6e2e
http://jonas.nitro.dk/tig/tigrc.5.html
CakePHP3.1で追加されたRoutes Shellを試してみた
前提
- CakePHP3がインストールされていること
Routes Shell 何に使うの?
Routes Shell はroutesを複雑に作っている場合等、CLIからroutesが正常に動くかをテストするときに使います。
URL解析チェック
以下のコマンドを実行することで、どのroutesに一致して、どうparseされるかを確認できます。
php bin/cake.php routes check /hoges/edit/1
// routesには以下が設定してあります。
// $routes->connect('/hoges/:action/*', ['controller' => 'fugas']);
実行結果

※Queryを含む場合はcheck対象のURLをダブルコーテーションで囲む必要があります。
php bin/cake.php routes check "/hoges/edit?key1=aaa&key2=bbb"
URL生成チェック
以下のコマンドを実行することで、どういうURLが生成されるかを確認することが出来ます。
php bin/cake.php routes generate controller:fugas action:edit 1
// routesには以下が設定してあります。
// $routes->connect('/hoges/:action/*', ['controller' => 'fugas']);
実行結果
> /hoges/edit/1