sakutarou’s blog

とりあえずWeb系技術をゆるく書いていく

DockerでAmazonLinuxを動かす

AmazonLinuxがdocker上で簡単に動かせるようになったので試してみました。

環境

  • ホストOS・・・CentOS 7
  • Docker・・・1.12.3

CentOS 6上のDocker 1.7で試したら、 image amazonlinux:latest not found と出て実行できませんでした。

AWS cliのインストール

AWS cliをすでにインストールしている場合はスキップ

インストール

yum install python-pip
pip install pip --upgrade
pip install awscli

AWS cliの設定

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

参考

Amazon Linux Container Image - Amazon ECR

CakePHP3のメンテナンス切り替え用プラグインを作った

ホームページやシステムをすでにリリースしていて、DB等メンテナンスする場合にメンテナンス画面を表示するあれです。
どうやってみなさん画面を切り替えているのでしょうか?
.htaccessが多いのでしょうか。

今回は、メンテナンスを簡単に表示するCakePHP3のプラグインを作成しました。

github.com

インストール

composer require fusic/maintenance

使い方

使い方は簡単なので README をご確認ください。
ざっくりは以下になります。

  1. src/Application.phpMaintenanceMiddleware を追加する
  2. src/Template/Error/maintenance.ctp にメンテナンス用ctpを作成する
  3. メンテナンス画面を表示するタイミングで 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には様々な設定が記述されています。
その中から、 regionaccessKeyIdsecretAccessKey を追記・修正します。

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! が表示されれば成功です。

次回へ続く

CakePHP3でのキャッシュの消し方

キャッシュを消してくれるコマンド出来てた。

CakePHP 3.3.0かららしい。知らなかった。
findコマンド使って削除してたので地味に便利!
使っていこう。

php bin/cake.php cache clear_all

Cache シェル

今さらすっごい便利なtigをインストールした

tigはGitをCUIで扱う場合に便利にしてくれるツールです。
git loggit 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を実行した画面
f:id:sakutarou:20160111221327g:plain

この状態で上下で対象のcommitを選び、エンターでdiffを見ることが出来ます。

ステータスを確認する(git status)

現在のステータスを確認するには tig status を実行します。
※tigの初期画面から S でも移動可能

f:id:sakutarou:20160111221509g:plain

基本的には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を試してみた

前提

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']);

実行結果

f:id:sakutarou:20160103013317p:plain

※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