Sphinxで作ったドキュメントのホスティング¶
| 日時: | 2010/09/05 |
|---|---|
| 作者: | 渋川よしき、山口能迪 |
Sphinxでドキュメントを作ったら公開したいですよね?自分のホームページ作成のように、FTPを使って、プロバイダーなどで提供されている所に置くというのも当然できますが、ここではいくつか別の方法を紹介します。
Contents
Bitbucket.orgを使ってドキュメントを公開¶
Bitbukcet上に、 http://ユーザ名.bitbucket.org という名前でドキュメントを公開できます。
Dropboxを使ってドキュメントを公開¶
Dropboxのドキュメント公開昨日を使ってドキュメントを公開します。ローカルの作業だけで公開ができます。
Google App Engineを使ってドキュメントを公開¶
Google App Engine上で静的ファイルを公開する方法を使ってホスティングします。
公開手順¶
Google App Engine (以下GAE)のアプリケーションを作成します。 詳細は 公式サイト を参照してください。 ここでは hoge というアプリケーションを作成します。
GAEプロジェクトディレクトリをローカルに作成し、Sphinxドキュメントのビルドディレクトリにシンボリックリンクを張ります。
$ mkdir hoge $ cd hoge $ ln -s /home/sphinxuser/docs/hoge/_build/html hoge_document
プロジェクトディレクトリ直下に app.yaml を作成します。
application: hoge version: 1 runtime: python api_version: 1 handlers: - url: /hoge_document static_dir: hoge_document
この時点でディレクトリは下記のようになっているはずです。
hoge ├── app.yaml └── hoge -> /home/sphinxuser/docs/hoge/_build/html
appcfg.pyを使ってGAEへデプロイします。この時appcfg.pyに渡すのはディレクトリ名であることに注意してください。
$ appcfg.py update hoge Application: hoge; version: 1. Server: appengine.google.com. Scanning files on local disk. Scanned 500 files. Initiating update. Could not guess mimetype for hoge_document/objects.inv. Using application/octet-stream. Cloning 35 static files. Cloning 403 application files. Cloned 100 files. Cloned 200 files. Cloned 300 files. Cloned 400 files. Uploading 403 files and blobs. Uploaded 403 files and blobs. Deploying new version. Checking if new version is ready to serve. Will check again in 1 seconds. Checking if new version is ready to serve. Will check again in 2 seconds. Checking if new version is ready to serve. Will check again in 4 seconds. Checking if new version is ready to serve. Closing update: new version is ready to start serving. Uploading index definitions.
(おまけ)デプロイの自動化をするには下記のようなスクリプトを作成してcrontabに登録しておくとよいでしょう。パスワードはappcfg.pyに渡せないので、スクリプト化するには expect を使う必要があります。
#!/bin/bash DOCS_HOME=${HOME}/src/docs GAE_SDK_HOME=${HOME}/tool/google_appengine GAE_APP_HOME=${HOME}/gae/ GAE_APP_NAME=hoge GAE_USER=<user mail address> GAE_PASS=<password> PASSWD_MSG="Password for "${GAE_USER} make html sleep 60 cd ${GAE_APP_HOME} expect -c " spawn $GAE_SDK_HOME/appcfg.py update --email=$GAE_USER --passin $GAE_APP_NAME set timeout -1 expect $PASSWD_MSG send $GAE_PASS interact "