超速でCentOS6.6(さくらのVPS)をセットアップする俺史上最強のFabricスクリプトをさらす
先日公開したはじめてでも爆速で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
以上だ。
場合によっては数倍ぐらい早くなるので、遅いなぁと思う人は試してみてほしい。
はじめてでも爆速でCentOS6.6(さくらのVPS)をセキュアにセットアップする方法まとめ
爆速でセットアップを完了するため、極力コピペで設定できるようにしてみたよ(・∀・)
動作検証は、さくらの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スクリプトをさらす
続きを読むIntelliJでファイル保存時にコードフォマット&import文の整理を自動実行する
IntelliJのコードフォーマット
IntelliJを使っていると、リアルタイムに大体いい感じにフォーマットしてくれるけど、括弧類の前後に空白を入れるかどうかとか細かいところまでは面倒見てくれない。
かといって、手動でいちいちコードフォーマットするのも面倒だよね。
というわけで、ファイル保存時にコードフォーマットしてくれるように設定してみたのでそのメモを共有するよ。
設定方法
1.マクロの記録を開始する
Edit -> Macros -> Start Macro Recording
2.コードフォーマットの設定をする
Code -> Reformat Code
全てのチェックボックスにチェックを入れて、「Run」ボタンを押す
- 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」ボタンを押す
6.IntelliJの設定画面を開く
IntelliJ IDEA -> Preferences
7.キーボードショートカットへの割り当て設定を開始
Keymap -> Macros -> formatted save(手順5で入力した名前)を選択して右クリック
8.キーボードショートカットへの割り当て設定を実行
「add keyboard shorcut」 を選択し、First Strokeで「Command + s」(実際のキーボード操作が反映される)
「Assigned to [Main menu | File | Save All]」と赤文字で表示されるが無視して「OK」ボタンを押す
9.Warningダイアログが出るが、気にせず「Remove」ボタンを押す
設定結果を確認する
設定が終わったら、早速試してみよう!
コードフォーマットだけでなく、import文などもいい感じにしてくれて、とってもナイスだ。
チーム開発している人は、ぜひチーム全員で設定して、快適なIntelliJライフを送ろう!!
MacのRubyをアップデートして、knife-solo入れたった
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が起動しない場合の対処法
発生した現象
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 ]
問題なく起動した。