たけまるの日記

たけまるの日記です。web関係の技術ネタが多いですが、好きなことを適当に書いています。

sshを繋ぎっぱなしにするautossh for mac

sshって結構切れます。 特に一定時間何もコマンドを打っていなかったり、画面に変化がないようなアイドル時間が一定以上続くと切れます。 sshをトンネリングで使っていると切れると困るので、切れても自動で再接続してくれるようにしましょう。

まずはHomebrewでautosshをインストール。

$ brew install autossh

あとは以下のコマンドを打つだけ。

$ autossh -f -M 0 -N -D 1080 -o "ServerAliveInterval 45" -o "ServerAliveCountMax 2" user@host

簡単にオプションについて

  • -f バックグラウンドで動かす

  • -M 0 よくわからんのでおまじない的

autosshの他、以下のように透過的にsshのオプションを指定できる

  • -N シェルを使わない

  • -D 指定ポートでSocks5として振る舞う autosshを使う最大の目的

  • -o sshのパラメータを指定 詳細は以下

  • ServerAliveInterval 45 切断防止のため、指定秒数間隔で応答確認をする

  • ServerAliveCountMax 2 指定回数応答がない場合は切断する(その場合autosshが再接続する)

autosshの終了

$ killall autossh

macにhomebrewでPHP5.6環境をインストールしてみる

してみました。

環境はYosemite(10.10)なのですが、OS標準だとPHP5.5のようです。 Homebrewを使い、PHP5.6を使えるようにします。

なお、Homebrewは入っている前提とします。

事前にXCode(現時点で最新6.1)をインストールし、以下コマンドを実行しておきます。

$ xcode-select --install

brewを最新の状態にします

$ brew update
$ brew upgrade

必要なレポジトリを追加します

$ brew tap homebrew/php
$ brew tap homebrew/dupes

以下コマンドでPHP5.6をインストールします 尚、apacheはOS標準のものを使いました

$ brew install php56 --with-apxs2=/usr/sbin/apxs

これでコマンド上からPHP5.6が使えるはずです

$ php -v
PHP 5.6.3 (cli) (built: Nov 27 2014 22:30:22) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies

ApacheからPHP5.6を使うように書き換えます(/etc/httpd/conf/httpd.conf)

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Apache経由でphpinfo()を表示させると、PHP5.6が動いているのが確認できました

f:id:takemaru123:20141127224025p:plain

参考

postfixのメールキューを書き換える

注:最終的には諦めてますので有用な情報はそれほどありません

最近のメールサーバーは大体、senderにちゃんと正引きできるドメインが設定されていないと受信拒否されてしまいます。 こちらからメール送信する際、hostnameの設定をしないでメール送信をしてしまい、senderが「xxx@localhost.localdomain」という状態になってしまい、相手のメールサーバーに受取拒否され、「/var/spool/postfix/deferred」にたまっている状態となっておりました。

これをなんとか送信しようというお話。

postfixのメールキューの形式は完全に独自形式のようで、人間が読めるように変換して出力するpostcatというコマンドが用意されています。

$ mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
F2180160222      549 Thu Nov 13 20:13:20  xxx@localhost.localdomain

まずこんな感じでキューIDを調べます この場合「F2180160222」ですね

postcat -q F2180160222
*** ENVELOPE RECORDS deferred/F/F2180160222 ***
message_size:             549             179               1               0             549
message_arrival_time: Thu Nov 13 20:13:20 2014
create_time: Thu Nov 13 20:13:20 2014
named_attribute: rewrite_context=local
sender_fullname: 
sender: xxx@localhost.localdomain
*** MESSAGE CONTENTS deferred/F/F2180160222 ***
Received: by localhost.localdomain (Postfix, from userid 501)
    id F2180160222; Thu, 13 Nov 2014 20:13:20 +0900 (JST)
To: hogehoge@gmail.com
Subject: test
From: xxx@localhost.localdomain
Date: Thu, 13 Nov 2014 20:13:20 +0900
Message-ID: <54649250690447cea26330707f000101@localhost>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

message


*** HEADER EXTRACTED deferred/F/F2180160222 ***
original_recipient: xxx@localhost.localdomain
recipient: xxx@localhost.localdomain
*** MESSAGE FILE END deferred/F/F2180160222 ***

こんな感じでキューのメールを読むことができます

送信できなかったものについてはsenderのlocalhost.localdomain部分を実在するドメインに無理やりsedで書き換えて送信しました。その場合、アドレス全体の文字数は変えてはいけないようです。フォーマットを解析しようとpostfixのソースもちょっと見たのですが、根が深そうだったので断念しました。

カゴヤのVPSは使うな

ゴヤVPS複数台借りて運用していたのですが、いきなり以下のようなメールが来て大半のインスタンスを停止されました。

カゴヤ・ジャパン サポートセンター (担当者名) です。
平素は当社サービスをご利用いただき誠にありがとうございます。

2014-XX-XX XX:XX 頃、下記Xインスタンスの負荷が著しいために
同ホスト機内にある他のお客様サイトへの影響がございました。

XXXXX インスタンス名 IPアドレス
…(台数分)…

つきましては誠に遺憾ながら上記インスタンスを停止いたしました。
お手数とは存じますが、サイトのお見直しをお願いいたします。

※サイトをお見直しいただきます際には、Apacheを停止しておく、
 アクセス制限を施すなどを行った上でご確認ください。

ご了承のほどよろしくお願いいたします。

ご不明な点がございましたら、いつでもカゴヤ・ジャパン サポートセンターまで
お問い合わせください。

それでは今後ともどうぞよろしくお願いいたします。

普通この手のVPSって、高負荷になったら割り当てるCPU時間とかIO帯域で調整すると思っていたのですが、まさかインスタンス停止とは…。 さくらVPSでずっと高負荷かけても(リソース調整はあるにせよ)何も言われないのに…。 確かに料金を日割りできるなどメリットはありますが、ちょっとケチってコレじゃ割にあわないです。 最初からさくら借りとけばよかった。

金輪際KAGOYAは使わないですし、今カゴヤVPS利用を考えているなら全力で再考をお勧めします。 さくらを借りましょう。(ステマ)

MH4Gがダウンロードできない!? macで3DSのSDカードをフォーマットする方法

皆さん元気に狩ってますか!

いよいよモンスターハンター4Gが発売されましたね!!

早速ダウンロードしようとしたら、SDカードのブロックが足りないと言われDLできず。

よく見たら3DS買った時についてきた4GのSDがそのまま挿さってました(;´Д`)

そんなわけでそのへんに転がっていた32GのSDに載せ替えます。 とりあえずネットで軽く検索したら、PCでSDカードの中身をまるっとコピーすれば移行できそうなのでやってみました。ところが…。

f:id:takemaru123:20141011114013j:plain

「SDカードが認識できないためSDカードに入っているソフトを表示できません。」と表示され認識されず…。

f:id:takemaru123:20141011113558p:plain

何が悪かったかというと、mac3DS用のSDカードをフォーマットするときは「MS-DOS(FAT)」を選択しなければならない事でした。通常SDカードをフォーマットするときは「exFAT」を選びがちなので、注意が必要です。

f:id:takemaru123:20141011115249p:plain

その後、Finderから一度旧SDの中身をmacにコピーして、新しいSDにコピーしなおせば問題なく認識されました!

f:id:takemaru123:20141011114009j:plain

ちなみに今回使ったSDカードはこちら。 こんな値段なのに3DSで使える最大容量で、転送速度も早いのでロードが早くなってとても快適です。 容量不足でお困りの方は是非ご検討ください。

国内のVPSサービスを、主にディスク容量とinode数の面からコスト調査してみた

対象はさくらVPS、カゴヤVPSDTIのServersMan@VPSです

サービス名 プラン 仮想化タイプ 月額(税込,年契約) 容量(kB) inode数 容量単価(円/GB) inode単価(円/1万inode) 容量(kB)/inode
さくらVPS 1G KVM 924 100,893,076 6,414,336 9.60 1.44 15.73
さくらVPS 2G KVM 1,396 204,105,516 12,967,936 7.17 1.08 15.74
ゴヤVPS タイプA OpenVZ 864 209,715,200 3,904,333 4.32 2.21 53.71
ゴヤVPS タイプB OpenVZ 1,728 419,430,400 7,808,667 4.32 2.21 53.71
ゴヤVPS タイプC OpenVZ 3,456 838,860,800 15,493,388 4.32 2.23 54.14
ServersMan@VPS Entry OpenVZ 504 52,428,800 3,000,000 10.09 1.68 17.48
ServersMan@VPS Standard OpenVZ 1,009 104,857,600 6,000,000 10.09 1.68 17.48
ServersMan@VPS Pro OpenVZ 2,037 209,715,200 12,000,000 10.18 1.70 17.48

※2014/10/10時点
※グレーアウト部分は予測値

考察

  • 単純に容量が欲しい場合はカゴヤVPSがGB単価4.32円/月と大変優秀、1ファイルが大きいコンテンツ(画像や動画)を置くには良さげ
  • しかし小さいファイルを沢山置くような必要がある場合、inode単価でみると一番悪い
  • 1ファイルが50kB以下の場合、ディスク容量を使いきる前にinodeを使い切る計算
  • さくらVPSの2Gプランであればinode単価が一番安く、15kB以上であればディスクをフルに使える

VPSのディスクのサイジングを考える場合、容量だけではなくinodeにも注意する必要がある。

さくらVPSの特徴

  • 長所 : 一番直感的に使える普通のLinuxマシン
  • 長所 : 国内3箇所のリージョンから選べる
  • 長所 : 同一リージョン内のVPS同士でローカルネットワークが組める(eth0はグローバルIP、eth1,eth2はローカルNWとして好きに使える)
  • 短所 : 後からのスケールアップが不可能(したけりゃさくらクラウド使えって事なんだろうけど)

kagoya vpsの特徴

  • 長所 : インスタンスのスケールアップ・ダウン(CPUコア数、メモリー容量、ディスク容量)をダウンタイム無しでできる
  • 長所 : 料金が1日単位
  • 短所 : OpenVSなのでちょっと特殊なこと(カーネルモジュール追加等)は何もできない
  • 短所 : ファイルシステム関係も何もいじれない
  • 短所 : fuseやloopマウント等も不可

DTI VPSの特徴

  • 長所 : 1インスタンス単価が最安
  • 短所 : OpenVZなのでkagoyaの短所と基本的に一緒

ちなみにOpenVZなカゴヤVPSで何とかinodeを増やそうと、ファイルをext4でフォーマットしてmount -o loopしようとしましたが、loopデバイスの使用が制限されていて(?)実現できませんでした。 同じ理由でFUSEデバイスも制限されていて、そちらのアプローチもムリでした。

まだ試していませんが、恐らくさくらVPSであれば上記の手法が使えるのではと思っています。 #そのうちやる

結論

結局さくらVPS最強。

macで最新のcoreutlsを使う方法

coreutilsUNIX系OSの基本的なコマンド(lsとかcpとか)を提供するパッケージである。

今回はmaccoreutilsに含まれるsortコマンドの-Rオプションを使いたかったのだが、macosが標準で提供するsortコマンドが古いバージョンのため使用できなかった。 このため、homebrewからcoreutilsをインストールし、使用する方法を実施してみた。

ちなみにsortコマンドの-Rオプションはランダムでソートするオプションであり、バージョン6以降で利用できる。

実施前

$ sort --version
sort (GNU coreutils) 5.93

homebrewによりcoreutilsをインストール

$ brew install coreutils 
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/coreutils-8
######################################################################## 100.0%
==> Pouring coreutils-8.23.mavericks.bottle.tar.gz
==> Caveats
All commands have been installed with the prefix 'g'.

If you really need to use these commands with their normal names, you
can add a "gnubin" directory to your PATH from your bashrc like:

    PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

Additionally, you can access their man pages with normal names if you add
the "gnuman" directory to your MANPATH from your bashrc as well:

    MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

==> Summary
🍺  /usr/local/Cellar/coreutils/8.23: 214 files, 10M

PATHの順序次第では標準のcoreutilsをすべてbrew版に置き換えることもできるが、今回はsortコマンドだけ使えればよかったので

# ~/.bashrc 
alias sort='/usr/local/opt/coreutils/libexec/gnubin/sort'

で逃げることにした。

$ sort --version
sort (GNU coreutils) 8.23

$ echo -e "a\nb\nc" | sort -R
c
b
a

無事、sortコマンドの-Rオプションが使えるようになった。

参考