キモブロ

Please spy check please, Fucking retard

さくらVPS 1G(3v) セットアップ手順メモ

基本

rootのパスワード変更
作業ユーザー作成(ユーザーはusersグループに所属ということにする)

useradd -g users kimoto # 俺専用ユーザー追加
usermod -a -G wheel kimoto #wheelグループに追加
passwd kimoto #パスワードを設定

sudo使用可能ユーザーを設定
/etc/sudoersにてwheelグループのユーザーのsudoを許可

"%wheel  ALL=(ALL) NOPASSWD: ALL" の行を有効化

sshdの設定を変更し、ssh経由のrootでログイン出来ない様にする
/etc/ssh/sshd_config

PermitRootLogin Yes

基本コマンド入れる

sudo yum install w3m zsh screen tmux

快適shell環境構築

このアカウント用の秘密鍵・公開鍵のペアを生成

ssh-keygen -t rsa

github.comでこの公開鍵を登録
オレオレ設定ファイルをgithub.comからもってくる

git clone --recursive git@github.com:kimoto/dotfiles.git

オレオレ環境構築スクリプトを実行

./dotfiles/bin/mkworld.sh

viのプラグイン更新(一応)

vi起動して:BundleInstall

Ruby環境構築

rbenvとrubyのbuildバージョンを指定出来るようになるpluginをインストールします

git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

mkdir -p ~/.rbenv/plugins
cd ~/.rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

rbenvを使ってこの記事執筆時点での最新のRubyをインストールする

sudo yum install -y zlib-devel openssl-devel #Rubyが依存してるライブラリをインストールします

rbenv install 1.9.3-p194
rbenv global 1.9.3-p194 # これ使いますよ宣言

gem自体のアップデート

gem update --system

まぁなんか使いそうなライブラリ入れる。(Railsいれとけば普段使いそうなライブラリなんでも入ってるだろみたいな感じのノリでRailsを入れる)

gem install rails
gem install sinatra
gem install passenger #for nginx

オレオレ設定のnginxを入れます

nginxのコンパイルとインストール

wget http://nginx.org/download/nginx-1.3.2.tar.gz
tar xvfz ./nginx-1.3.2.tar.gz 
cd nginx-1.3.2/

git clone git://gitorious.org/ngx-fancyindex/ngx-fancyindex.git ngx-fancyindex
sudo yum install -y libcurl-devel pcre-devel gd gd-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-cc-opt='-Wno-error -O2' --add-module=/home/kimoto/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.13/ext/nginx --with-http_stub_status_module --with-http_mp4_module --add-module=./ngx-fancyindex/ --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_image_filter_module
make
sudo make install

簡単な起動試験だけ

sudo /usr/local/nginx/sbin/nginx 
curl -I http://localhost/ # 200が返却されることを確認

nginx起動スクリプト(/etc/init.d)の配備
公式にあるのでそれを使う http://wiki.nginx.org/RedHatNginxInitScript

と思ったら公式のは、./configure時に--userって指定をしていないとちゃんと動作しないような実装になっているので修正した版を作った
https://gist.github.com/3046138 (※修正というか、起動時に必須ディレクトリが作成されているか調べる処理の記述を消した。)

これを /etc/init.d/nginxって名前で保存してchmod u+x nginx でもしておく


/etc/init.dからの起動実験

$ sudo service nginx start
$ pgrep -f nginx
28571
28572
$ sudo service nginx stop
$ pgrep -f nginx

OKということで完了

mysqlの設定

インストール

sudo yum install -y mysql-server 

起動テスト

sudo service mysqld start

いろいろ設定しろやと怒られる

passwordの設定
俺の用途だと、mysqldへはlocalhostからしかアクセスしないので
mysqlのrootのパスワードを空にします

/usr/bin/mysqladmin -u root password ''
/usr/bin/mysql -h localhost -u root -e 'show databases;' # ノーパスワードでアクセスできることを確認

Peercastのインストール(視聴用)

Linux向けのソースコードを俺のgitリポジトリから持ってきてコンパイル

mkdir -p ~/projects/
cd projects/

git clone https://github.com/kimoto/peercast
cd peercast/ui/linux/
make

起動実験

./peercast --help
# なんか動いてるっぽいというのがわかる


Peercast.in関係ののインストール
依存関係のモジュールをいろいろ入れます

sudo yum install -y libxml2 libxml2-devel libxslt libxslt-devel mysql-devel ImageMagick ImageMagick-devel

cd ./projects/peercast.in
bundle install

動作テスト
なんかそれぽっく動くことを確認する

rackup

ffmpegインストール(鬼門)

まずyumの取得先にRPMForgeを追加します。ffmpeg関係のモジュールを楽に入れるためです。
そしてRPMForgeのモジュール名と標準のモジュールで名前がかぶってた時に、標準のRPMパッケージを上書きしないように制限してくれるpluginを入れます

sudo yum -y install yum-plugin-priorities

/etc/yum.repos.d/CentOS-Base.repo を編集し、標準のRPMパッケージ取得先に以下のようにpriority=1というのを追加します

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=osbaseurl=http://ftp.sakura.ad.jp/pub/linux/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 #追加

#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://ftp.sakura.ad.jp/pub/linux/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 #追加

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://ftp.sakura.ad.jp/pub/linux/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1 #追加

編集後、rpmforgeのインデックスデータの更新をします

sudo yum -y update rpmforge-release

RPMForgeを利用してyumでffmpegをインストールします

sudo yum -y install ffmpeg

残念ながらRPMForgeのffmpegは古いのでmicrosoftのmmsプロトコルに対応してません。しかしそれにともなって勝手にインストールされた依存モジュールを利用して、ffmpegを自力でコンパイルしてインストールします。

sudo yum -y install lame lame-devel faac faac-devel opencore-amr opencore-amr-devel amrnb amrnb-devel amrwb amrwb-devel yasm yasm-devel x264 x264-devel xvidcore xvidcore-devel libogg libogg-devel libvorbis libvorbis-devel libtheora libtheora-devel gsm gsm-devel openjpeg openjpeg-devel nut nut-devel a52dec a52dec-devel libvpx libvpx-devel 

最新のx264入れます

git clone git://git.videolan.org/x264.git
cd ./x264
./configure --prefix=/usr/local --enable-shared
make
sudo make install

rpmのパッケージのほうのffmpegとx264をアンインストールします

sudo yum remove ffmpeg
sudo yum remove x264 x264-devel

最新のffmpeg入れる

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --prefix=/usr/local --enable-gpl --enable-libmp3lame --enable-libxvid --enable-libfaac --enable-libx264 --enable-shared --enable-nonfree

make -j2 # さくらVPSの一番安いプランは仮想2コアマシンなので、make -j2で最大2つ同時にコンパイルできるようにしています
sudo make install

ffmpegの動作確認をする

ffmpeg -v

# ffmpegでmmshが有効に認識されることを確認する
ffmpeg -i mmsh://URL


ここまででとりあえずpeercast.inとかそのへんがちゃんと動くようになった :D