Ubuntu 14.04 デスクトップ開発環境構築手順 [Unity, Rails, Ramdisk, SSD]
OS:Ubuntu 14.04 LTS 日本語 Remix 64bit
ホームディレクトリ以下の日本語ディレクトリを英語名へ変更する
env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update
インストールするパッケージ
sudo apt-get -y install curl tree libreadline-dev autoconf bison build-essential libssl-dev libyaml-dev zlib1g-dev libncurses5-dev git xclip mysql-server libffi-dev libmysqlclient-dev unrar p7zip-full vim-gtk
特に必須ではないパッケージ
sudo apt-get -y install comix smplayer
標準のエディタを vim へ変更する
sudo update-alternatives --config editor
sudo のパスワード入力を省略
以下コマンドを実行し
sudo visudo
開いたテキスト内に以下を追記します。
username ALL=(ALL) NOPASSWD:ALL
ssh-agent を設定する
~/.ssh ディレクトリ以下に秘密鍵を配置する。
設定した鍵の内容が出力されること。
$ ssh-add -l 2048 xx:xx:xx...
登録された鍵の確認をする
ssh-add ~/.ssh/private_key
使用するフォントをインストールする
プログラミング用フォントの Ricty を使用する。
作成した .ttf ファイルを fonts ディレクトリに配置します。
/usr/share/fonts/truetype/ 以下に ricty ディレクトリを作成します。
fc-cache コマンドは fonts ディレクトリを再スキャンします。
mkdir /usr/share/fonts/truetype/ricty cp ./*.ttf /usr/share/fonts/truetype/ricty sudo fc-cache -fv
Vimの設定
AppArmorを無効化
AppArmorとは以下のようなものです。
AppArmor - openSUSE
Linuxキーワード - AppArmor:ITpro
セキュリティを上げるために存在するものだが
自分環境上非常にハマる要因となるため、無効にして運用する。
grubの設定を開きます。
sudo vi /etc/default/grub
以下の GRUB_CMDLINE_LINUX を変更します。
GRUB_CMDLINE_LINUX="apparmor=0"
編集後、Grubの設定を更新し再起動します。
sudo update-grub sudo reboot
Unity の設定を変更する。
unity-tweak-tool をインストールし、各設定を変更する。
sudo apt-get install unity-tweak-tool unity-tweak-tool
基本的には演出をすべて切る。
特に Window snapping は嫌なので切る。
スクロールバーの表示を変更
スクロールバーの仕様がオンマウスして表示されるようなもので
使いづらいので以前のようなスタイルに以下のコマンドで変更する。
gsettings set com.canonical.desktop.interface scrollbar-mode normal
その他の設定
Ubuntu 上で MySQL の tmpdir, datadir を別ストレージ(SSD)、 Ramdisk へ変更する。
Ubuntu 14.04 LTS を使用しています。
SSDにOSが入っており、
HDD及びRamdiskにアクセスを逃がす意味で設定を行います。
以下のようなディレクトリに各デバイスをマウントします。
HDD = /storage (注:/mnt/XXX に対するシンボリックリンク)
SSD = /ramdisk
各設定とディレクトリは以下のようにつながります。
tmpdir: /ramdisk
datadir: /storage/mysql
tmpdir の変更
my.cnf を開き
sudo vi /etc/mysql/my.cnf
tmpdir 項目を変更する。
tmpdir = /ramdisk
注意すべきはこの設定を適用した場合に
MySQL を起動すると /ramdisk のパーミッションが
777 の場合だとしても権限がないと以下のように怒られてしまう。
/usr/sbin/mysqld: Can't create/write to file '/ramdisk/ib4pRsqd' (Errcode: 13)
結論としては AppArmor がアクセス制御している為で、
今回は MySQL を AppArmor の制御外とすることで対処します。
sudo apt-get install apparmor-utils
aa-disable /usr/sbin/mysqld
これで tmpdir の変更が出来たと思います。
datadir の変更
HDDのマウント
fstab を開き
sudo vi /etc/fstab
以下のような内容を書き込みます。
今回は権限が 777 となるよう umask=000 を指定しています。
/dev/disk/by-uuid/XXXX-ZZZZ /mnt/XXXX-ZZZZ auto nosuid,nodev,nofail,users,rw,umask=000 0 0
my.cnf の設定
my.cnf を開き
sudo vi /etc/mysql/my.cnf
user, datadir 項目を変更する。
今回は user を root に変えているのは
storage を root にてマウントしているためです。
user = root datadir = /storage/mysql
上記を設定したら以下コマンドを実行しデータベースを作成します。
今回は初期状態として扱っていますが、既存のデータがある場合には
対象のディレクトリに元のデータをコピーしておけば良いと思います。
mysql_install_db
ここまでやった後に、通常通り MySQL が起動をします。
起動しない場合、 /var/log/mysql/error.log などを確認ください。
# service mysql start mysql start/running, process 6298 # mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu) ... ..
Ubuntu で Ramdisk を作成し、キャッシュをそこに移動する。
Ubuntuの場合それほどメモリを消費しないので
余剰分のメモリで Ramdisk を作成してキャッシュファイルをそこへ移動する。
(SSDへの書き込みを減らす意味も含めている。)
Ramdiskという性質上、その場合のキャッシュファイルについては
再起動等で消去されてしまうことになる。
また、環境としては Ubuntu 14.10 64bit(β) を使用しているが
あまり関与しない情報だと思う。
Ramdisk の作成
マウント先を作成する。
sudo mkdir /ramdisk sudo chmod 777 /ramdisk
fstab を編集し、1.5Gの容量の Ramdisk を作成する。
sudo vi /etc/fstab
以下を最終行に追記する。
16.04 等 14.04 以降の場合
tmpfs /ramdisk tmpfs rw,size=2G,x-gvfs-show 0 0
14.04 の場合
/dev/shm /ramdisk tmpfs size=1536m 0 0
使用するファイルシステムは tmpfs と ramfs があるようだが、
tmpfs は確保するメモリ容量を可変で使ってくれるらしい。
■参考
RAM ディスク - ArchWiki
tmpfs は本当に容量が動的なのか - naoyaのはてなダイアリー
マウントする。
(fstabにある設定のものを全てマウント)
sudo mount -a
正しくマウントされているかを確認する。
以下のように設定通りのものが表示されれば大丈夫。
df -h | grep ramdisk /dev/shm 1.5G 32M 1.5G 3% /ramdisk
キャッシュファイルを Ramdisk へ移動する
今回の対象は以下の2ディレクトリ。
乱暴だが一旦削除してしまう。
rm -rf ~/.cache rm -rf /tmp
削除したディレクトリの代わりに
Ramdisk へのシンボリックリンクを作成する。
ln -s /ramdisk ~/.cache sudo ln -s /ramdisk /tmp
Ramdisk とは関係ない余談
.xsession-errors が HOME 直下に日々書かれるのが気になる。
出力先を変える方法が分からなかったので、 /dev/null へリンクする。
以下の内容を .bashrc へ追記する。
# .xsession-errors can grow huge... remove it if [ ! -h $HOME/.xsession-errors ] then /bin/rm $HOME/.xsession-errors ln -s /dev/null $HOME/.xsession-errors fi if [ ! -h $HOME/.xsession-errors.old ] then /bin/rm $HOME/.xsession-errors.old ln -s /dev/null $HOME/.xsession-errors.old fi