Debian8でBooktypeを使用して本を公開する方法
Sourcefabricからの記事
序章
Booktype は、手に持つことができる本物の見栄えの良い本を含む、本の制作に特化したコンテンツ管理システムです。
書店やオープンウェブですぐに使えるPDF、EPUB、MOBI、XML、HTML形式のBooktype出力を作成できます。 著者は、既存の原稿をWordの.docx形式またはEPUBとしてインポートできます。これらは、Alohaで編集するためにBooktypeのネイティブHTMLチャプター形式に変換されます。
Booktypeは、著者が本を作成しながらチャットしたりメモを共有したり、他の人に支援を求めたり、貢献するプロジェクトを探したりできる社会環境でもあります。 BooktypeはPythonで記述されたDjangoアプリケーションであり、 GNU Affero GPL の下でライセンスされているフリーソフトウェアです。つまり、自由にダウンロード、再利用、カスタマイズできます。
Booktypeは、適切なGNU/LinuxまたはAppleOSXサーバーにインストールでき、原則としてWindowsでも実行できますが、このチュートリアルでは、Debian安定バージョン8.2(Jessie)の推奨プラットフォームに焦点を当てています。 書籍の執筆および編集中、作成者はMozillaFirefoxやGoogleChromeなどの最新のWebブラウザを備えた任意のデバイスを使用できます。
このチュートリアルでは、Booktypeのインストールについて説明します。これにより、あなたと同僚は、印刷と画面用のPDFブック、デジタルデバイス用のEPUB、およびWebサイト用のXHTMLをすべて単一のソースから作成できます。 Booktypeの可能性を深く知りたい場合は、ここから始めるのがよいでしょう。 このチュートリアルでは、Booktype2.0について説明します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 新しいDebian8.2ドロップレット(512 MB / 1 CPUドロップレットは機能しますが、パフォーマンスを向上させるために1 GB / 1 CPUドロップレットをお勧めします)
- Debian 8を使用した初期サーバーセットアップに示されているように、Droplet上のroot以外のsudoユーザー
- 登録ドメイン名
- booktype。yourdomainname.comをドロップレットにポイントします( DigitalOcean でホスト名を設定する方法では、これを設定する方法について説明しています)。
ステップ1—依存関係を設定する
Booktypeをインストールする前に、まず開発パッケージをインストールする必要があります。RabbitMQサーバー、Redisサーバー、PostgreSQLデータベース管理システム、整頓された構文チェッカー、およびWSGIモジュールを備えたApacheWebサーバーです。
- sudo apt-get install git-core python-dev python-pip libjpeg-dev libpq-dev libxml2-dev libxslt-dev rabbitmq-server redis-server postgresql tidy apache2-mpm-prefork libapache2-mod-wsgi
Booktypeが作成者に電子メール通知を送信できるようにする場合は、SMTPメールサーバーも利用可能である必要があります。 最も簡単な送信メールサーバーのセットアップは、チュートリアル Ubuntu14.04でPostfixを送信専用SMTPサーバーとしてインストールおよび構成する方法に示されています。 Debian 8.2(Ubuntu 14.04ではなく)の唯一の違いは、ステップ1で次のコマンドを入力する必要があることです。
- sudo apt-get install postfix mailutils
それよりも:
- sudo apt-get install mailutils
それ以外の場合は、Postfixの代わりにDebianのデフォルトのメールサーバーであるEximがインストールされます。 Eximは構成がより複雑であり、Booktypeから通知を送信するために必要ではありません。
ステップ2— PDFレンダラーのインストール(オプション)
印刷された本を作成する場合は、BooktypeのHTMLチャプターを単一のPDFファイルに変換するレンダラーが必要になります。 プリプレス機能を幅広くサポートしているPHPアプリケーションmPDF6.0をお勧めします。 mPDFをインストールする前に、PHP用のコマンドラインインタープリターとunzipユーティリティを次のコマンドでインストールする必要があります。
- sudo apt-get install php5-cli unzip
次に、mPDFをダウンロードし、ディレクトリに抽出します /var/www/
:
- sudo wget http://mpdf1.com/repos/MPDF60.zip
- sudo unzip MPDF60.zip -d /var/www/
ファイルが非常に大きいため、ダウンロードに時間がかかる場合があります。
最後に、mPDFの一時ディレクトリの所有者をApacheWebサーバーユーザーに変更します www-data
:
- cd /var/www/mpdf60/
- sudo chown www-data.www-data graph_cache/ tmp/ ttfontdata/
ステップ3—データベースのセットアップ
次に必要なのは、利用できるデータベースです。 次のコマンドを入力して、PostgreSQLユーザーを作成します booktype-user
:
- sudo -u postgres createuser -SDRP booktype-user
プロンプトが表示されたら、データベースに設定するパスワードを入力します。 確認のために再入力する必要があります。
注:パスワードを安全な場所に書き留めてください。 ステップ5—ブックタイプインスタンスの作成で再度必要になります。
次に、という名前のデータベースを作成します booktype-db
、設定 booktype-user
所有者として。 エンコーディングは、国際的なUTF-8文字セットである必要があります。 -E
オプション。
- sudo -u postgres createdb -E utf8 -O booktype-user booktype-db
注: PostgreSQLユーザーを作成するためのコマンドラインオプションは文字O(-O
)、数字のゼロではありません。
注:別のデータベース名または所有者を使用している場合は、それを書き留めてください。 後でステップ5—編集時にブックタイプインスタンスを作成するときに必要になります dev.py
.
データベースへの接続を確認します booktype-db
PostgreSQL構成ファイルをチェックすることで許可されます nano
編集者:
- sudo nano /etc/postgresql/9.4/main/pg_hba.conf
ファイルの終わり近くに、クライアント認証ルールのセクションがあります。 次のようになります。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
上記の例のセクションは、IPv4とIPv6の両方を介したPostgreSQLへのすべてのローカル接続がこのサーバーで許可されていることを示しているので、準備は完了です。 nanoを終了します Ctrl+X
.
ステップ4—Gitを使用したBooktypeのインストール
ながら .deb
パッケージはSourcefabricapt server から入手できます。GitHubには、入手可能な最新バージョンのBooktypeが含まれています。 Gitを使用すると、リリース間のバグ修正を追跡したり、Booktypeプロジェクトにプルリクエストを提供したりすることも簡単になります。 Booktype2.0のコピーをgitリポジトリから /usr/local/src/booktype/
ディレクトリ:
- sudo mkdir /usr/local/src/booktype/
- sudo git clone https://github.com/sourcefabric/Booktype.git --branch 2.0 --depth 1 /usr/local/src/booktype/
次に、開発インストールと本番インストールの両方の要件をインストールして、次のいずれかを使用できるようにします。
- sudo pip install -r /usr/local/src/booktype/requirements/dev.txt
- sudo pip install -r /usr/local/src/booktype/requirements/prod.txt
ステップ5—ブックタイプインスタンスを作成する
1つのBooktypeサーバーで、複数のインスタンスをホストできます。各インスタンスには、著者、グループ、および書籍の独自のコミュニティがあります。 これにより、関係のない作成者を投げたり、汎用プラットフォームでプロジェクトをまとめたりするのではなく、特定の関心事のために個別の環境を作成できます。
次のようなBooktypeインスタンスのディレクトリを作成します。 /var/www/booktype/
:
- sudo mkdir /var/www/booktype/
それが所有されていることを確認してください www-data
Webサーバーを実行するユーザー:
- sudo chown www-data:www-data /var/www/booktype/
デフォルトでは、Debian8.2はユーザーを許可しません www-data
コマンドを入力します。 次の行を編集する必要があります www-data
の中に /etc/passwd
続行するためのファイル:
- sudo nano /etc/passwd
交換 /usr/sbin/nologin
と /bin/bash
のために www-data
次のようにユーザー:
www-data:x:33:33:www-data:/var/www:/bin/bash
nanoを終了します Ctrl+X
、プロンプトが表示されたらファイルを保存します。
今すぐに切り替えます www-data
Booktypeインスタンスの作成を開始するには:
- sudo su www-data
を使用して最初のBooktypeインスタンスを作成します dev
プロファイルと postgresql
のデータベース /var/www/booktype/instance1
ディレクトリ:
- cd /usr/local/src/booktype/scripts/
- ./createbooktype -p dev --check-versions --database postgresql /var/www/booktype/instance1
作成したばかりのインスタンスディレクトリに移動し、 base.py
インスタンスの基本設定を含むファイル:
- cd /var/www/booktype/instance1/
- nano instance1_site/settings/base.py
このファイルには、インストールに合わせて編集する必要のあるセクションがいくつかあります。 まず、システム管理者の名前とメールアドレスを設定します。
ADMINS = (
# ('Your Name', '[email protected]'),
)
アクティブなプロファイルをに設定します 'dev'
開発のために、当分の間:
PROFILE_ACTIVE = 'dev'
Booktypeインスタンスのサイト名を入力します。
BOOKTYPE_SITE_NAME = 'Your Booktype Site'
通知とレポートを送信するときに使用する電子メールアドレスと、送信メールサーバーの詳細を入力します。 ドロップレットにPostfixをインストールしている場合は、次のデフォルト値を使用できます。 localhost
とポート 25
メールサーバーの場合:
DEFAULT_FROM_EMAIL = '[email protected]'
REPORT_EMAIL_USER = '[email protected]'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
mPDFのインストールを選択した場合は、インストールディレクトリの場所を入力します。
MPDF_DIR = '/var/www/mpdf60/'
作成者が指定していない場合に使用するデフォルトの発行元の名前を入力します。
DEFAULT_PUBLISHER = "Your Publishing Company"
Redisをインストールしたばかりで、他の用途に使用しない場合は、デフォルトのままにしておくことができます。 REDIS STUFF
彼らはあるとして。 ローカルのRedisサーバーを使用するアプリケーションが複数ある場合は、次の値を変更する必要があります。 REDIS_DB
ゼロ以外の数に。 のデフォルト REDIS_PASSWORD
はNoneですが、Redisサーバーでパスワードが必要な場合は、一重引用符または二重引用符で囲む必要があります。
# REDIS STUFF
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0
REDIS_PASSWORD = None
インスタンスのタイムゾーンとデフォルトのインターフェース言語コードを設定します。
TIME_ZONE = 'Europe/Berlin'
LANGUAGE_CODE = 'en-us'
著者は、フランス語やスペイン語など、インストールされているBooktypeローカリゼーションから独自のインターフェイス言語を選択できます。
ファイルを保存して終了します。
次に、まだ /var/www/booktype/instance1/
ディレクトリ、編集 dev.py
Booktypeインスタンスの開発設定を含むファイル:
- nano instance1_site/settings/dev.py
Booktype開発サーバーのドメイン名とURLを入力します。
THIS_BOOKTYPE_SERVER = 'booktype.example.com'
BOOKTYPE_URL='http://booktype.example.com'
データベース接続の名前、ユーザー、およびパスワードを設定します。 ユーザー名 booktype-user
およびPostgreSQLデータベース名 booktype-db
ステップ3—データベースのセットアップで使用したものと同じである必要があります。
次の例のようになります。
DATABASES = {'default':
{'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'booktype-db',
'USER': 'booktype-user',
'PASSWORD': 'booktype-password',
'HOST': 'localhost',
'PORT': ''
}
}
プレス Ctrl+O
ファイルを保存し、 Ctrl+X
やめるには nano
編集者。
注: Booktypeインスタンスをデプロイする準備ができたら、に切り替えることができます。 prod
開発プロファイルをテストに使用できるようにしながら、異なるドメイン名とデータベースを使用してプロファイルを作成します。
環境変数をロードします。
- . ./booktype.env
データベースを初期化します。
- ./manage.py syncdb
プロセスの最後に、次のように表示されます。 yes と答えて、スーパーユーザーを作成します。
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
プロンプトに従って必要な情報を入力します。
Username (leave blank to use 'www-data'): admin
E-mail address: `[email protected]`
Password:
Password (again):
Superuser created successfully.
Booktypeコンポーネントアプリケーションから静的ファイルを単一のディレクトリに収集します。
- ./manage.py collectstatic
サーバーは次のように応答します。
You have requested to collect static files at the destination
location as specified in your settings:
/var/www/booktype/instance1/static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel:
入力した後 yes
と打つ ENTER
キーを押しながら、次のコマンドを入力して、インストールされているすべてのDjangoアプリケーションを取得し、それらの権限を更新してから、登録済みおよび匿名ユーザーのデフォルトの役割を更新します。
- ./manage.py update_permissions
- ./manage.py update_default_roles
これでインストールは完了です。 次のコマンドを使用して、ターミナルで通常の非rootsudoユーザープロンプトに戻ります。
- exit
としてコマンドを入力しなくなりました www-data
ユーザー。
ステップ6—Apacheの構成
をコピーします wsgi.apache
仮想ホストのApache構成ディレクトリへのインスタンスの作成中に生成されたファイル:
- sudo cp /var/www/booktype/instance1/conf/wsgi.apache /etc/apache2/sites-available/booktype-instance1.conf
インスタンスの仮想ホスト構成ファイルを編集します。
- sudo nano /etc/apache2/sites-available/booktype-instance1.conf
少なくとも次の値を変更する必要があります ServerName
と SetEnv HTTP_HOST
サーバー用に構成されたドメイン名に ServerAdmin
管理者の電子メールアドレスへ:
<VirtualHost *:80>
# Change the following three lines for your server
ServerName booktype.example.com
SetEnv HTTP_HOST "booktype.example.com"
ServerAdmin [email protected]
Debian8.2はApache2.4を備えているため、コメントを外す必要があります Require all granted
すべてのために Location
と Directory
スタンザ。 コメントを外すには Require all granted
行の場合、各行の先頭にある#文字を削除します。
<Location "/">
#Require all granted
Options FollowSymLinks
</Location>
Alias /static/ "/var/www/booktype/instance1/static/"
<Directory "/var/www/booktype/instance1/static/">
#Require all granted
Options -Indexes
</Directory>
Alias /data/ "/var/www/booktype/instance1/data/"
<Directory "/var/www/booktype/instance1/data/">
#Require all granted
Options -Indexes
</Directory>
プレス Ctrl+O
ファイルを保存し、 Ctrl+X
やめるには nano
編集者。
次に、デフォルトのApache構成を無効にし、次のコマンドを使用してインスタンスのBooktype仮想ホストを有効にします。
- sudo a2dissite 000-default.conf
- sudo a2ensite booktype-instance1.conf
次のコマンドで変更を有効にするには、ApacheWebサーバーを再起動します。
- sudo service apache2 restart
これで、Booktypeインスタンスを次のURLで参照できるようになります。 ServerName
booktype.example.comなどのVirtualHost構成で定義されます。 Djangoデバッグツールバーの上部をクリックして非表示にします(このツールバーは、 prod
プロフィール)。
注:ブラウザウィンドウの右上隅にあるドロップダウンメニューからインターフェイス言語を選択できます。
以前に作成したスーパーユーザーアカウントの詳細を使用してBooktypeにサインインします(admin
この例では)。
サインインすると、スーパーユーザーのメールアドレスに関連付けられているGravatarがPeopleボックスとMyProfileボックスに表示されます。
ステップ7—スーパーバイザーと一緒にCeleryを実行する
Celery は、Booktypeサーバーによって使用されるタスクキューです。 Booktypeをインストールしたら、クラッシュや再起動が発生した場合にCeleryワーカーを実行し続けるためのプロセスモニターが必要になる可能性があります。 インストールできます supervisord
コマンドで:
- sudo apt-get install supervisor
The supervisord
プログラムはインストール後に自動的に起動し、サーバーの次回の再起動時に自動的に起動するように構成されています。
次に、次のコマンドを使用してBooktypeとCeleryで使用する構成ファイルを作成する必要があります。
- sudo nano /etc/supervisor/conf.d/booktype-instance1.conf
の最初のBooktypeインスタンスの場合 /var/www/booktype/instance1
10人の労働者で、ファイルの内容 booktype-instance1.conf
次のようになります。
[program:celeryd]
command=/var/www/booktype/instance1/manage.py celery worker --concurrency=10 -l info
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/www/booktype/instance1/logs/booktype-celery.error.log
stdout_logfile=/var/www/booktype/instance1/logs/booktype-celery.output.log
user=www-data
保存後 booktype-instance1.conf
とファイル Ctrl+O
終了します nano
と Ctrl+X
、への更新を有効にします supervisord
コマンドを使用した構成:
- sudo supervisorctl reread
- sudo supervisorctl update
The supervisorctl
プログラムを使用して、それを確認することもできます supervisord
が走っています celeryd
:
- sudo supervisorctl
このコマンドの出力は次のようになります。
Output of sudo supervisorctlceleryd RUNNING pid 24182, uptime 0:13:19
次のプロンプトも表示されます。
supervisor>
次のコマンドを入力して終了します supervisorctl
:
- quit
結論
これで、あなたとあなたのチームは、一緒に本を書き、出版し始めるために必要なすべてを手に入れました! 使用方法の詳細については、公式ブックタイプマニュアルをお読みください。