windowsでASP.NET5の開発
debian + ASP.net
目的
debian8(jessie) で coreclr を使ってasp.net mvc を動かす
導入手順
- monoインストール
- dnvmインストール
- dnxインストール
- libuvインストール
- coreclrインストール
1. mono インストール
coreclrで実行するためにmonoは必要ないが今後のことを考えてインストールしておく
2. dnvm インストール
dnxバージョンマネージャー
$ sudo apt-get install unzip curl $ curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh $ dnvm upgrade
3. dnx インストール
アプリ向けの実行環境
$ sudo apt-get install -y libunwind8 gettext libssl-dev libcurl4-openssl-dev zlib1g libicu-dev uuid-dev
4. libuv インストール
非同期I/Oライブラリ
Node.jsで使用されている
$ sudo apt-get -y install automake libtool curl $ curl -sSL https://github.com/libuv/libuv/archive/v1.4.2.tar.gz | sudo tar zxfv - -C /usr/local/src $ cd /usr/local/src/libuv-1.4.2 $ sh autogen.sh $ ./configure $ make $ make install $ rm -rf /usr/local/src/libuv-1.4.2 && cd ~/ $ sudo ldconfig
5. coreclr インストール
.Net Core ランタイム
最新バージョンのdnx(coreclr)をインストールする
$ dnvm install -u -r coreclr
mono版を入れたい場合はこちら
$ dnvm install -u
指定バージョンのdnxをインストールする
* 下記のコマンドの場合は 1.0.0-beta8 をインストールする
$ dnvm install -r coreclr 1.0.0-beta8
動作確認
動作確認用のサンプルソースの取得
$ git clone https://github.com/aspnet/Home.git
実際のプロジェクトはsamplesディレクトリ配下にある。
ここにあるディレクトリ名とインストールする coreclr のバージョンを合わせる必要がある。
1.0.0-beta8 を実行する場合は以下の手順です
dnxのインストールされている/現在使用しているバージョンの確認
$ dnvm list
表示されたものでActiveの部分に*がついているものが現在選択されているバージョンです。
- 該当のバージョンのcoreclrがインストールされていない場合
$ dnvm install -r coreclr 1.0.0-beta8
- 該当のバージョンのcoreclrがインストールされているがActiveになってない場合
$ dnvm use -r coreclr 1.0.0-beta8
プロジェクトがあるディレクトリへ移動
$ cd samples/1.0.0-beta8/HelloMvc
プロジェクトのリストアで必要な情報の取得
$ dnu restore
プロジェクトの実行
$ dnx web
dnx web の部分は project.json のcommandsによって変わる
"commands": { "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://*:5004" },
上のソースは1.0.0-beta8のproject.jsの一部を抜粋したものだが、この場合 dnx web で実行可能です。
また、アクセスurlも記載されている。
上記の場合は
http://localhost:5004
debianへのmonoインストール
debianへのmonoをインストールする方法
インストールシェル
setup_mono.sh
#!/bin/bash DOWNLOAD_PATH=/usr/local/src MONO_VERSION=4.2.1.124 MONO_PATH=4.2.1 PREFIX=$@ if [ -z $PREFIX ]; then PREFIX="/usr/local/mono/$MONO_VERSION" fi # Ensure you have write permissions to PREFIX mkdir -p $PREFIX apt-get -y install git autoconf libtool libtool-bin automake build-essential mono-devel gettext bison cd $DOWNLOAD_PATH wget http://download.mono-project.com/sources/mono/mono-$MONO_VERSION.tar.bz2 tar xvf mono-$MONO_VERSION.tar.bz2 cd mono-$MONO_PATH ./configure --prefix=$PREFIX make make install
以下に、シェルを実行してのmonoインストール方法を示す。
1. シェル実行
$ sudo setup_mono.sh
2. パスを通す
- bashの場合
$ echo 'export PATH="$PREFIX/mono/bin:$PATH"' >> ~/.bashrc
- zshの場合
$ echo 'export PATH="$PREFIX/mono/bin:$PATH"' >> ~/.zshrc
grapeを活用したapi設計
ruby on rails を活用してapiサーバーを作成した際の忘備録
grapeについてはgithubの情報が一番詳しいと思います。
目的
構成
構成としては
v1のapiは全てroot.rbに集約する。
endpoint.rbは各バージョン(今回だとv1ディレクトリ以下)のroot.rbファイルを集約する。
検索用のapiを1つ作成する。
今後、apiをアップデートした場合はディレクトリv2を作成することでapiのバージョンが管理できます。
中身
それぞれのファイルの中身
Endpoint.rb
全apiを管理する
module Endpoint class API < Grape::API # APIアクセスに接頭辞を付加 # ex) http://localhost:3000/api prefix "api" # 出力フォーマットをjsonにする format :json mount Root::V1 end end
api/v1/root.rb
バージョン情報とバージョン配下のapiを管理する
module Root class V1 < Grape::API # ex) http://localhost:3000/api/v1 version 'v1', :using => :path mount Search::V1 end end
api/v1/search.rb
apiの動作を記述する
今回はSeriesというDBテーブルがあってそこから検索するという想定で作っています。
module Search class V1 < Grape::API # ex) http://localhost:3000/api/v1/search resource "search" do # apiの説明 desc "return a series" # URLにパラメータを付加しない場合の記述 # この例ではシリーズを全件返す get do Series.all end # apiの説明 desc "return a series" # 引数の型を指定する # URLの指定の部分を string型で取得する params do requires :search_word, type: String end # :search_word で引数を取るようにする # http://localhost:3000/api/v1/search/kensaku_mozi # でアクセスすると # params[:search_word] == kensaku_mozi # となる get ':search_word' do Series.find(params[:search_word]) end end end end
ここまで記述できれば最後に config/routes.rb に作成した api を mount してアクセスできるようになる
config/routes.rb
Rails.application.routes.draw do mount Endpoint::API => "/" end
確認
rails server
で起動して
http://localhost:3000/api/v1/search
にアクセスすれば、jsonが取得できるようになる。
MySQLのパスワード有効期限
MySQL5.7.4から標準でパスワードに有効期限がつくようになってました。
パスワード有効期限が切れると、ログイン以外の作業ができなくなるそうなので注意が必要です。
MySQLにおけるパスワード有効期限の設定方法
パスワードの有効期限は、設定ファイル my.cnf に記述することで変えられるようです。
従来のMySQLと同様にしたい場合は
default_password_lifetime=0
default_password_lifetime には 0 ~ 65535日までの値を設定できます。
まとめ
# 365日で使えなくなる default_password_lifetime=365 # パスワード有効期限をつけない default_password_lifetime=0 # 設定可能な最大日数(65535日) default_password_lifetime=65535