さくら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