環境はさくらVPS1GのUbuntu12.04にて。
WebサーバはApacheでも良かったんだろうけど、Nginxで、source部分はGitで管理。
必要なツールのインストール
sudo aptitude install nginx apache2-utils git-core python-sphinx make
ユーザーやディレクトリなどの基本的な環境設定
方針としてsourceをgitで管理し、そのbareリポジトリも同一サーバ上に乗っける感じにします。またmakeして生成したHTMLをまんま公開するんで
www-data ユーザー管理のディレクトリ配下にsphinxのプロジェクトを配置する感じで。
ユーザー作成
※ sphinxユーザーはwww-dataのエイリアスsudo useradd -s /usr/bin/git-shell -m -d /home/git git sudo useradd -s /bin/bash -m -d /home/sphinx -u $(id -u www-data) -o -g www-data sphinx
Sphinx source用Gitリポジトリの作成
cd /home/git sudo -u git git init --bare sphinx-source.githooksやSSH公開鍵の設定なども。
## Pushされた際に自動的にHTML をビルドするようにHooksを仕込む sudo sh -c 'echo "git ALL=(ALL:ALL) NOPASSWD: /usr/bin/git, /usr/bin/make" >> /etc/sudoers' cd sphinx-source.git/hooks sudo cp -ip post-update.sample post-update sudo sh -c ' cat > post-update << EOF #!/bin/sh cd /home/sphinx/project/source && sudo -u sphinx git --git-dir=.git pull cd /home/sphinx/project && sudo -u sphinx make html EOF ' ## SSH公開鍵の設定もやっておく sudo -u git mkdir -m 700 /home/git/.ssh sudo -u git sh -c ' cat >> /home/git/.ssh/authorized_keys << EOF ssh-rsa ****************************************************... ssh-rsa ****************************************************... EOF ' sudo chmod 600 /home/git/.ssh/authorized_keys
Sphinx Projectの作成
sudo su - sphinx mkdir project cd project sphinx-quickstartここで対話画面になりますが、
You have two options for placing the build directory for Sphinx output. Either, you use a directory "_build" within the root path, or you separate "source" and "build" directories within the root path. > Separate source and build directories (y/N) [n]: ysourceとbuildのディレクトリは分けたいんでここだけyと入力しておけば
他はデフォルトで問題ないかと。
(続き)
## sourceのGit管理 cd source git config --global user.name "Sphinx User" git config --global user.email "null@localhost" git init git remote add origin /home/git/sphinx-source.git git add . git commit -am "First Commit" ### 初回Push exit cd /home/sphinx/project/source sudo git push -u origin master sudo chown -R git. /home/git/sphinx-source.git/ sudo chown -R sphinx. /home/sphinx/project/source/.git/
Nginxの設定
静的コンテンツなんで特に突っ込んだことする必要もないんだろうけど、、cd /etc/nginx/ ## Basic認証設定 sudo mkdir auth sudo htpasswd -c auth/sphinx hogehoge sudo htpasswd auth/sphinx hugahuga # 2回目以降は-cオプションは不要、ユーザーごとにパスワード設定 sudo sh -c 'cat >> site-available/sphinx << EOF server { listen 80 server_name sphinx.example.com; root /home/sphinx/project/build/html; index index.html; auth_basic "Basic Auth"; auth_basic_user_file "/etc/nginx/auth/sphinx"; accsess_log "/var/log/nginx/sphinx-accsess.log"; error_log "/var/log/nginx/sphinx-error.log"; } EOF ' sudo ln -s ../site-available/sphinx sites-enabled/sphinx.example.com sudo service nginx configtest sudo service nginx reload
こんな感じでやっておけば、
git clone git@sphinx.example.com:sphinx-source.gitしてsourceの部分だけいじることに専念できて、
Pushすれば自動的に
http://sphinx.example.comのWeb画面も更新って感じで結構使い勝手良いのではないでしょうか。
突っ込んで色々やったほうがいいこともあるかもですが、
クイックスタート的にはこれで十分ではないかと。
ではではお疲れ様でしたー。