超速でCentOS6.6(さくらのVPS)をセットアップする俺史上最強のFabricスクリプトをさらす

f:id:tmknom:20150117151657g:plain

先日公開したはじめてでも爆速でCentOS6.6(さくらのVPS)をセキュアにセットアップする方法まとめの事実上の後編だ。本記事ではセットアップ手順をFabricのスクリプトにして公開する。

続きを読む

さくらのVPS(CentOS)のネットワーク通信が遅いよヽ(`Д´)ノウワァァン!! って場合の対処法

さくらのVPSをセットアップしていると、エラくモジュールのダウンロードに時間がかかることに気づいた。

VPSだし、こんなもんなのかなとも思ったが、対処法があったのでメモ。

VPSにログインして、suしてrootになった前提での手順だよ。

# ethtool -K eth0 tso off
# echo "ACTION==\"add\", SUBSYSTEM==\"net\", KERNEL==\"eth0\", RUN+=\"/sbin/ethtool -K eth0 tso off\"" > /etc/udev/rules.d/50-eth_tso.rules

以上だ。

場合によっては数倍ぐらい早くなるので、遅いなぁと思う人は試してみてほしい。

ちなみに、CentOS以外の場合についても、さくら公式ヘルプに情報があるのでこちらもどうぞ。

はじめてでも爆速でCentOS6.6(さくらのVPS)をセキュアにセットアップする方法まとめ

f:id:tmknom:20150116000843p:plain

爆速でセットアップを完了するため、極力コピペで設定できるようにしてみたよ(・∀・)

動作検証は、さくらのVPSで標準OSをインストールして行った。記事執筆時点ではCentOS6.6がインストールされたぞ。

# cat /etc/issue
CentOS release 6.6 (Final)
# uname -rs
Linux 2.6.32-504.3.3.el6.x86_64

お知らせ

本記事の内容をFabric化したスクリプトを公開!ぜひ試してみてね。

超速でCentOS6.6(さくらのVPS)をセットアップする俺史上最強のFabricスクリプトをさらす

続きを読む

Macをセットアップしたら最初にやっておきたいオススメの設定

OS X Yosemiteを対象にしています。他のバージョンだと、多少設定方法が異なるかもしれないので、その点はご承知をm(._.)m

f:id:tmknom:20150108171247j:plain

続きを読む

IntelliJでファイル保存時にコードフォマット&import文の整理を自動実行する

f:id:tmknom:20141012113732p:plain

IntelliJのコードフォーマット

IntelliJを使っていると、リアルタイムに大体いい感じにフォーマットしてくれるけど、括弧類の前後に空白を入れるかどうかとか細かいところまでは面倒見てくれない。

かといって、手動でいちいちコードフォーマットするのも面倒だよね。

というわけで、ファイル保存時にコードフォーマットしてくれるように設定してみたのでそのメモを共有するよ。

設定方法

1.マクロの記録を開始する

Edit -> Macros -> Start Macro Recording

2.コードフォーマットの設定をする

Code -> Reformat Code

全てのチェックボックスにチェックを入れて、「Run」ボタンを押す

f:id:tmknom:20140911002503p:plain

  • Optimize imports
    • import文をいい感じに並べてくれる
  • Rearrange entries
    • メソッドの定義順序などをいい感じにしてくれる
  • Only VCS changed text
    • 未コミットの編集箇所のみフォーマット適応する
  • Do not show this dialog in the future
    • いちいちダイアログで確認されるとウザいので消しとく

3.全てのファイルを保存

File -> Save all

4.マクロの記録を終了する

Edit -> Macros -> Stop Macro Recording

5.記録したマクロを名前をつけて保存

「Enter Macro Name」 ダイアログに適当に名前を入力して(例:formatted save)、「OK」ボタンを押す

f:id:tmknom:20140911002510p:plain

6.IntelliJの設定画面を開く

IntelliJ IDEA -> Preferences

7.キーボードショートカットへの割り当て設定を開始

Keymap -> Macros -> formatted save(手順5で入力した名前)を選択して右クリック

f:id:tmknom:20140911002550p:plain

8.キーボードショートカットへの割り当て設定を実行

「add keyboard shorcut」 を選択し、First Strokeで「Command + s」(実際のキーボード操作が反映される)

「Assigned to [Main menu | File | Save All]」と赤文字で表示されるが無視して「OK」ボタンを押す

f:id:tmknom:20140911002559p:plain

9.Warningダイアログが出るが、気にせず「Remove」ボタンを押す

f:id:tmknom:20140911002604p:plain

設定結果を確認する

設定が終わったら、早速試してみよう!

コードフォーマットだけでなく、import文などもいい感じにしてくれて、とってもナイスだ。

チーム開発している人は、ぜひチーム全員で設定して、快適なIntelliJライフを送ろう!!

MacのRubyをアップデートして、knife-solo入れたった

f:id:tmknom:20140322170825p:plain

Chef-Soloをやるにあたって、とりあえずknife-soloを入れとけって、「入門Chef Solo」に書いてあったので、入れてみることにしたよ。

knife-soloのインストールを試みる

$ sudo gem install knife-solo
ERROR:  Error installing knife-solo:
    mime-types requires Ruby version >= 1.9.2.

いきなり玉砕(笑)

Rubyのバージョンを1.9.2以上にしろって怒られた。

バージョンを確認してみる。

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

うむ、確かに古い。

rbenvのインストール

rbenvを入れると、Rubyのバージョンを切り替えて使えるようになるので、まずコイツからインストールする。

$ brew install rbenv
$ brew install ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

で、rbenvでインストール可能なRubyのバージョンを調べてみる。

$ rbenv install -l
...
  2.0.0-rc2
  2.1.0
  2.1.0-dev

ずらずら出てくるけど、2.1.0を入れることにした。

knife-soloが目的なら1.9.2以上なら、どれでも大丈夫だと思う。

Ruby本体のインストール

インストールするバージョンを決めたので早速入れてみる。

$ rbenv install 2.1.0
$ rbenv rehash
$ rbenv global 2.1.0

では、確認。

$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]

OK、ちゃんと入ったようだ。

ついでにgemをupdateしておく。

$ sudo gem update

knife-soloをインストール

準備が整ったのでお目当てのknife-soloをインストールする。

$ sudo gem install knife-solo
$ rbenv rehash

今度はちゃんと入った。

動作確認をしてみよう。

$ knife solo init chef-repo
WARNING: No knife configuration file found
Creating kitchen...
Creating knife.rb in kitchen...
Creating cupboards...

なんかWarningが表示されたが、とりあえず動いてはいそうだ。

$ tree
.
└── chef-repo
    ├── cookbooks
    ├── data_bags
    ├── environments
    ├── nodes
    ├── roles
    └── site-cookbooks

tree コマンドで確認してみると、ちゃんとディレクトリが作成されている。

ちゃんと動いていることが確認できた。これでインストール完了だ。

ちなみに、さっきのWarningは

$ knife configure

とすることで、解消できる。

設定は全てデフォルトでOKなので、色々聞かれるがひたすらEnterを押せばOKだ。

Vagrant+VirtualBox+CentOS環境でMySQL5.6が起動しない場合の対処法

f:id:tmknom:20140322105543p:plain

発生した現象

Vagrant+VirtualBox+CentOSって環境にMySQL5.6をインストールして起動しようとしたところ

$ sudo service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                 [FAILED]

とこんな感じで起動できなかったので調べてみたよ。

まず、ログの場所を確認。

$ cat /etc/my.cnf
...
[mysqld_safe]
log-error=/var/log/mysqld.log

/var/log/mysqld.logにログがあるようだ。

エラーメッセージ確認

というわけで、ログからエラーメッセージを探してみる。

$ sudo cat /var/log/mysqld.log
...
2014-03-21 15:21:46 2492 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2014-03-21 15:21:46 2492 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2014-03-21 15:21:46 2492 [ERROR] Plugin 'InnoDB' init function returned error.
2014-03-21 15:21:46 2492 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2014-03-21 15:21:46 2492 [ERROR] Unknown/unsupported storage engine: InnoDB
2014-03-21 15:21:46 2492 [ERROR] Aborting
...

原因っぽいメッセージ発見→ InnoDB: Cannot allocate memory for the buffer pool

どうもメモリの確保に失敗しているらしい。

メモリの状況を確認。

$ free
             total       used       free     shared    buffers     cached
Mem:        603580     140024     463556          0       5484      83680
-/+ buffers/cache:      50860     552720
Swap:            0          0          0

結構空きがあるように見えるが、まだ足りないらしい。

解決法1:仮想OSのメモリサイズを増やす

一番簡単なのは、仮想OSのメモリサイズを増やすことだ。

Vagrantfileにこれを記述する。

config.vm.provider :virtualbox do |v|
  v.customize ["modifyvm", :id, "--memory", 1024]
end

ここでは、仮想OSのメモリを1024MBに設定した。

これでもう一度仮想OSを立ち上げて確認してみると

$ sudo service mysqld start
Starting mysqld:                                 [  OK  ]

正常にMySQLを起動できた。

解決法2:スワップ領域の確保

解決法1が採用できるならそうすべきだが、それが無理な場合は、スワップ領域を確保することで解決できる。

まずは、現状スワップ領域がどうなっているか見てよう。

$ swapon -s
Filename    Type  Size Used Priority

スワップ領域は存在しないらしい。

というわけでスワップ用のファイルを作成する。

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

とりあえず、サイズは1024MBとした。

次に作成したファイルをスワップ領域として初期化する。

$ sudo mkswap /swapfile

それではスワップ領域を有効にしよう。

$ sudo swapon /swapfile

では、確認。

$ swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        1048568 0   -1

正常にスワップ領域が有効になった。

最後に、再起動時にもスワップ領域が使えるように /etc/fstab に設定しておけばOK。

$ sudo sh -c "echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"

では、MySQLを起動してみよう。

$ sudo service mysqld start
Starting mysqld:                                 [  OK  ]

問題なく起動した。