私のレンタルサーバはさくらサーバ。sshでログインして色々できちゃう!
というわけでSubversionを使ったページ更新をしてみたくてsshでログインしてみたところ、デフォルトのシェルやviの使いにくさに号泣。
これじゃいかん。さくらサーバをオレ色に染めてやる!
ちなみに、インストールし終わったソースファイルはどんどん削除しないと結構サーバ容量を圧迫しますよ。
デフォルトのログインシェルはcsh。bashしか使ったことのない私には敷居が高い!
というわけで次のコマンドでデフォルトのログインシェルをbashに変更。
chsh -s /usr/local/bin/bash
んでもって.bashrcと.bash_profileを作る。
デフォルトのviがあまりに使い辛かったので、ローカルで作ってFTPでアップロードした。
# .bashrc
# set umask
umask 022
# set prompt
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}"; echo -ne "\007"'
export PS1="[\w]\\$ "
# set paths
export PATH=$HOME/usr/bin:$PATH
export LD_LIBRARY_PATH=$HOME/usr/lib:$LD_LIBRARY_PATH
# set aliases
alias ls='ls -G'
alias ll='ls -l'
alias la='ls -a'
alias lla='ll -a'
# set LS_COLORS
export LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'
# vim:ts=4:sw=4
# .bash_profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
やっぱviは使いやすくないと!
というわけで最新のviを入れる。
まずインストール先ディレクトリ~/usrと作業用ディレクトリ~/workを作成。
cd mkdir usr mkdir work
んでworkに入ってソース群をダウンロード。
cd work wget ftp://ftp.vim.org/pub/vim/unix/vim-7.1.tar.bz2 wget ftp://ftp.vim.org/pub/vim/extra/vim-7.1-extra.tar.gz wget ftp://ftp.vim.org/pub/vim/extra/vim-7.1-lang.tar.gz
展開する。全部vim71というディレクトリに展開される。
tar jxfv vim-7.1.tar.bz2 tar zxfv vim-7.1-extra.tar.gz tar zxfv vim-7.1-lang.tar.gz
ソースにパッチを適用する。作業時点で293まで出てた。
mkdir vim71/patches
cd vim71/patches
zsh -c "wget ftp://ftp.vim.org/pub/vim/patches/7.1/7.1.{001..293}"
cd ../
cat patches/7.1.* | patch -p0
おなじみのコンパイル作業。--prefixオプションでインストール先を変えるのを忘れずに。
./configure --prefix=$HOME/usr \ --enable-multibyte \ --enable-xim \ --enable-fontset \ --with-features=big make make install
パスは.bashrcで設定済み。vimへのシンボリックリンクviを作る。
cd ~/usr/bin ln -s vim vi
これでインストール完了。ついでに~/.vimrcも作っておく。
といってもよく知らんのでずんWikiさんからパクってくるだけだけど。
" vim: set ts=4 sw=4 sts=0:
"-----------------------------------------------------------------------------
" 文字コード関連
"
if &encoding !=# 'utf-8'
set encoding=japan
set fileencoding=japan
endif
if has('iconv')
let s:enc_euc = 'euc-jp'
let s:enc_jis = 'iso-2022-jp'
" iconvがeucJP-msに対応しているかをチェック
if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'eucjp-ms'
let s:enc_jis = 'iso-2022-jp-3'
" iconvがJISX0213に対応しているかをチェック
elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'euc-jisx0213'
let s:enc_jis = 'iso-2022-jp-3'
endif
" fileencodingsを構築
if &encoding ==# 'utf-8'
let s:fileencodings_default = &fileencodings
let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
let &fileencodings = &fileencodings .','. s:fileencodings_default
unlet s:fileencodings_default
else
let &fileencodings = &fileencodings .','. s:enc_jis
set fileencodings+=utf-8,ucs-2le,ucs-2
if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
set fileencodings+=cp932
set fileencodings-=euc-jp
set fileencodings-=euc-jisx0213
set fileencodings-=eucjp-ms
let &encoding = s:enc_euc
let &fileencoding = s:enc_euc
else
let &fileencodings = &fileencodings .','. s:enc_euc
endif
endif
" 定数を処分
unlet s:enc_euc
unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
function! AU_ReCheck_FENC()
if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
let &fileencoding=&encoding
endif
endfunction
autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif
"-----------------------------------------------------------------------------
" 編集関連
"
"オートインデントする
set autoindent
"バイナリ編集(xxd)モード(vim -b での起動、もしくは *.bin で発動します)
augroup BinaryXXD
autocmd!
autocmd BufReadPre *.bin let &binary =1
autocmd BufReadPost * if &binary | silent %!xxd -g 1
autocmd BufReadPost * set ft=xxd | endif
autocmd BufWritePre * if &binary | %!xxd -r | endif
autocmd BufWritePost * if &binary | silent %!xxd -g 1
autocmd BufWritePost * set nomod | endif
augroup END
"-----------------------------------------------------------------------------
" 検索関連
"
"検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase
"検索文字列に大文字が含まれている場合は区別して検索する
set smartcase
"検索時に最後まで行ったら最初に戻る
set wrapscan
"検索文字列入力時に順次対象文字列にヒットさせない
set noincsearch
"-----------------------------------------------------------------------------
" 装飾関連
"
"シンタックスハイライトを有効にする
if exists("syntax")
syntax on
endif
"行番号を表示しない
set nonumber
"タブの左側にカーソル表示
set listchars=tab:\ \
set list
"タブ幅を設定する
set tabstop=4
set shiftwidth=4
"入力中のコマンドをステータスに表示する
set showcmd
"括弧入力時の対応する括弧を表示
set showmatch
"検索結果文字列のハイライトを有効にする
set hlsearch
"ステータスラインを常に表示
set laststatus=2
"ステータスラインに文字コードと改行文字を表示する
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P
"-----------------------------------------------------------------------------
" マップ定義
"
"バッファ移動用キーマップ
" F2: 前のバッファ
" F3: 次のバッファ
" F4: バッファ削除
map <F2> <ESC>:bp<CR>
map <F3> <ESC>:bn<CR>
map <F4> <ESC>:bw<CR>
"表示行単位で行移動する
nnoremap j gj
nnoremap k gk
"フレームサイズを怠惰に変更する
map <kPlus> <C-W>+
map <kMinus> <C-W>-
Subversion(SVN)の説明…は省略。ググれ。
ファイルのバージョン管理を容易にするものです(CVSみたいなもの)。
今回はtalk to oneself 2さん等を参考に、Web上で情報が見られるようにもする。
要はSubversion+Trac。
とりあえず必要なソース一式をダウンロード。やたらと必要。
cd ~/work wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.29.tar.gz wget http://www.webdav.org/neon/neon-0.26.4.tar.gz wget http://ftp.riken.jp/net/apache/apr/apr-0.9.17.tar.gz wget http://ftp.riken.jp/net/apache/apr/apr-util-0.9.15.tar.gz wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2 wget http://initd.org/pub/software/pysqlite/releases/2.4/2.4.1/pysqlite-2.4.1.tar.gz wget http://www.clearsilver.net/downloads/clearsilver-0.9.14.tar.gz wget http://jaist.dl.sourceforge.net/sourceforge/docutils/docutils-0.4.tar.gz wget http://www.i-act.co.jp/project/products/downloads/trac-0.10.4-ja-1.zip
SWIGを展開&コンパイル&インストール。
tar zxvf swig-1.3.29.tar.gz cd swig-1.3.29 ./configure --prefix=$HOME/usr make make install cd .. rm -rf swig-1.3.29*
Neonを展開&コンパイル&インストール。
tar zxvf neon-0.26.4.tar.gz cd neon-0.26.4 ./configure --prefix=$HOME/usr \ --with-ssl \ --with-libs=/usr/local \ --enable-shared make clean make make install cd .. rm -rf neon-0.26.4*
Subversionを展開し、APR、APR-utilを展開したものをその中に置く。
tar jxvf subversion-1.4.6.tar.bz2 tar zxvf apr-0.9.17.tar.gz tar zxvf apr-util-0.9.15.tar.gz cp -rf apr-0.9.17 subversion-1.4.6/apr cp -rf apr-util-0.9.15 subversion-1.4.6/apr-util rm -rf apr-*
Subversionをコンパイル&インストール。Pythonはさくらサーバに入っているものを使わせてもらう。
cd subversion-1.4.6 ./configure --prefix=$HOME/usr \ --without-berkeley-db \ --with-python=/usr/local/lib/python2.4 \ --enable-swig-bindings=python \ --with-swig=$HOME/usr/bin/swig \ --with-neon=$HOME/usr \ --with-ssl \ --with-libs=$HOME/usr \ --disable-static make clean make make install make swig-py make install-swig-py cd .. rm -rf subversion-1.4.6*
ここまででSubversionのインストールは完了。
以降はTrac関連。
pysqliteを展開&ビルド&インストール。sqliteはさくらサーバに入っているものを使わせてもらう。
tar zxvf pysqlite-2.4.1.tar.gz cd pysqlite-2.4.1 cp -f setup.cfg setup.cfg.bak cat setup.cfg.bak | sed -e "s/#//g" >setup.cfg python setup.py build python setup.py install --prefix=$HOME/usr cd .. rm -rf pysqlite-2.4.1*
clearsilverを展開&コンパイル&インストール。makeではなくgmakeを使う…らしい。
tar zxvf clearsilver-0.9.14.tar.gz cd clearsilver-0.9.14 ./configure --prefix=$HOME/usr \ --oldincludedir=$HOME/usr/include \ --disable-ruby \ --disable-java \ --disable-perl \ --disable-csharp \ --disable-python \ --disable-static gmake gmake install cd python/ python setup.py build python setup.py install --prefix=$HOME/usr cd ../.. rm -rf clearsilver-0.9.14*
docutilsを展開&インストール。
tar zxvf docutils-0.4.tar.gz cd docutils-0.4 python setup.py install --home=$HOME/usr cd .. rm -rf docutils-0.4*
Tracを展開&インストール。
unzip trac-0.10.4-ja-1.zip cd trac-0.10.4-ja-1 python setup.py install --prefix=$HOME/usr cd .. rm -rf trac-0.10.4-ja-1*
更に、次の1行を~/.bashrcに書き加えて、`source .bashrc`なり再ログインなりで認識させる。
export PYTHONPATH="$HOME/usr/lib/python2.4:$HOME/usr/lib/python2.4/site-packages"
最後に、これをやらないとPythonがSVNを見つけてくれないらしい。
ln -s $HOME/usr/lib/svn-python $HOME/usr/lib/python2.4/site-packages/svn-python ln -s $HOME/usr/lib/svn-python/svn $HOME/usr/lib/python2.4/site-packages/svn ln -s $HOME/usr/lib/svn-python/libsvn $HOME/usr/lib/python2.4/site-packages/libsvn
これでとりあえず一通りインストールは完了。
次は動くようにします。
何かトラブルが起きたら書き換えるかも。
HirobeのHack倉庫さんを参考に。
というかほとんどコピペだなこりゃ。
まずSubversionのリポジトリ作成。
私はプロジェクトごとにリポジトリを作りたい人なので、今回はこのサイト用のリポジトリを作る。
cd mkdir -p var/svn svnadmin create --fs-type=fsfs var/svn/homepage
んでもっておなじみの trunk branches tags をインポートする。
mkdir tmp cd tmp mkdir trunk branches tags cd .. svn import tmp file://$HOME/var/svn/homepage -m "First import." rm -rf tmp
次にTracの環境設定。
trac-adminコマンドのinitenv以降の引数はそれぞれ「プロジェクト名」、「DB接続文字列」、「リポジトリの場所」、「テンプレートの場所」。
プロジェクト名とリポジトリの場所以外は書いてある通りでOK。
cd usr/lib/python2.4/site-packages/ echo "$HOME/usr/lib/python2.4/site-packages/trac" >trac.pth cd trac-admin var/trac/homepage initenv \ "Homepage" \ "sqlite:db/trac.db" \ "$HOME/var/svn/homepage" \ "$HOME/usr/share/trac/templates"
次にTracを呼び出すスクリプトを作成する。
後々複数のリポジトリを参照することを考えて、共通のTrac呼び出し用スクリプトを作っておく。
vi var/trac/trac.inc.sh
#!/bin/sh
## trac.inc.sh
## require variable $REPO
# set home directory
HOME="$DOCUMENT_ROOT/.."
# check variable
if [ "$REPO" = "" ]; then
# error, go to home
echo "Location: http://$SERVER_NAME/"; echo; exit
fi
# set repository path
export TRAC_ENV="$HOME/var/trac/$REPO"
if [ ! -d "$TRAC_ENV" ]; then
# error, go to home
echo "Location: http://$SERVER_NAME/"; echo; exit
fi
# set environments
export LD_LIBRARY_PATH="$HOME/usr/lib"
export PYTHONPATH="$HOME/usr/lib/python2.4:$HOME/usr/lib/python2.4/site-packages"
# call trac script
/usr/local/bin/python2.4 "$HOME/usr/share/trac/cgi-bin/trac.cgi"
次にTrac関連CGI置き場を作成して移動。
cd ~/www mkdir trac cd trac
不正呼び出し用スクリプトを作成。ディレクトリパスを直接指定するとこれが呼ばれてホームへ強制送還。
touch index.cgi chmod 755 index.cgi vi index.cgi
#!/bin/sh
## index.cgi (for invalid call)
REPO=""
. "$DOCUMENT_ROOT/../var/trac/trac.inc.sh"
今回のHomepageプロジェクト用のスクリプトを作成。
touch homepage.cgi chmod 755 homepage.cgi vi homepage.cgi
#!/bin/sh
## homepage.cgi
REPO="homepage"
. "$DOCUMENT_ROOT/../var/trac/trac.inc.sh"
ここまででTracにアクセス可能になっているはず。
/trac/homepage.cgi にブラウザでアクセスしてみる。
まぁリポジトリの中身が見られれば満足なので、Trac周りはここまで。
to be continued...