So veröffentlichen Sie Bücher mit Booktype unter Debian 8

Ein Artikel von Sourcefabric

Einführung

Booktype ist ein spezialisiertes Content-Management-System für die Produktion von Büchern, einschließlich echter, gut aussehender Bücher, die Sie in Ihren Händen halten können.

Sie können Booktype-Ausgaben in den Formaten PDF, EPUB, MOBI, XML und HTML erstellen, die für Buchhandlungen oder das offene Web bereitstehen. Autoren können vorhandene Manuskripte im .docx-Format von Word oder als EPUBs importieren, die zur Bearbeitung mit http://www.alohaeditor.org [Aloha] in das native HTML-Kapitelformat von Booktype konvertiert werden.

Booktype ist auch eine soziale Umgebung, in der Autoren chatten und Notizen austauschen können, während sie Bücher produzieren, Hilfe von anderen einholen oder nach Projekten suchen, zu denen sie beitragen können. Booktype ist eine in Python geschriebene Django-Anwendung, die unter der Lizenz GNU Affero GPL kostenlos heruntergeladen werden kann. verwendet und angepasst.

Booktype kann auf jedem geeigneten GNU / Linux- oder Apple OS X-Server installiert werden und grundsätzlich auch unter Windows ausgeführt werden. Dieses Tutorial konzentriert sich jedoch auf die empfohlene Plattform von Debian stable, Version 8.2 (Jessie). Autoren können beim Schreiben und Bearbeiten von Büchern jedes Gerät mit einem modernen Webbrowser wie Mozilla Firefox oder Google Chrome verwenden.

In diesem Lernprogramm wird eine Installation von Booktype beschrieben, mit der Sie und Ihre Kollegen PDF-Bücher für Druck und Bildschirm, EPUBs für digitale Geräte und XHTML für Ihre Website aus einer Hand erstellen können. Wenn Sie tiefer in die Möglichkeiten von Booktype eintauchen möchten, ist dies ein guter Anfang. Dieses Tutorial behandelt Booktype 2.0.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Schritt 1 - Einrichten der Abhängigkeiten

Vor der Installation von Booktype müssen Sie zunächst die Entwicklungspakete installieren: den RabbitMQ-Server, den Redis-Server, das PostgreSQL-Datenbankverwaltungssystem, den aufgeräumten Syntaxprüfer und den Apache-Webserver mit seinem WSGI-Modul:

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

Wenn Booktype E-Mail-Benachrichtigungen an Autoren senden soll, benötigen Sie außerdem einen SMTP-Mailserver. Das einfachste Setup für den Postausgangsserver wird im Tutorial https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on gezeigt -ubuntu-14-04 [Installieren und Konfigurieren von Postfix als Nur-Senden-SMTP-Server unter Ubuntu 14.04]. Der einzige Unterschied für Debian 8.2 (anstelle von Ubuntu 14.04) besteht darin, dass Sie in Schritt 1 den folgenden Befehl eingeben sollten:

sudo apt-get install postfix mailutils

eher, als:

sudo apt-get install mailutils

Andernfalls wird der Standard-Mail-Server von Debian, Exim, anstelle von Postfix installiert. Exim ist komplizierter zu konfigurieren und für das Senden von Benachrichtigungen von Booktype nicht erforderlich.

Schritt 2 - Installieren eines PDF-Renderers (optional)

Wenn Sie Druckbücher erstellen möchten, benötigen Sie einen Renderer, um die HTML-Kapitel von Booktype in eine einzige PDF-Datei zu konvertieren. Die PHP-Anwendung http://www.mpdf1.com [mPDF 6.0] wird aufgrund der umfassenden Unterstützung der Pre-Press-Funktionen empfohlen. Vor der Installation von mPDF müssen Sie den Befehlszeileninterpreter für PHP und das Dienstprogramm zum Entpacken mit folgendem Befehl installieren:

sudo apt-get install php5-cli unzip

Laden Sie anschließend mPDF herunter und extrahieren Sie es in das Verzeichnis "+ / var / www / +":

sudo wget http://mpdf1.com/repos/MPDF60.zip
sudo unzip MPDF60.zip -d /var/www/

Die Datei ist ziemlich groß, daher kann das Herunterladen einige Zeit in Anspruch nehmen.

Ändern Sie abschließend den Eigentümer der temporären Verzeichnisse von mPDF in den Apache-Webserver-Benutzer "+ www-data +":

cd /var/www/mpdf60/
sudo chown www-data.www-data graph_cache/ tmp/ ttfontdata/

Schritt 3 - Einrichten der Datenbank

Als nächstes benötigen Sie eine Datenbank, um verfügbar zu sein. Geben Sie den folgenden Befehl ein, um den PostgreSQL-Benutzer + booktype-user + zu erstellen:

sudo -u postgres createuser -SDRP booktype-user

Geben Sie das Kennwort ein, das Sie in der Datenbank festlegen möchten, wenn Sie dazu aufgefordert werden. Sie müssen es zur Bestätigung erneut eingeben.

Erstellen Sie dann eine Datenbank mit dem Namen "+ booktype-db " und legen Sie " booktype-user " als Eigentümer fest. Die Codierung sollte der internationale UTF-8-Zeichensatz sein, wie mit der Option " -E +" angegeben.

sudo -u postgres createdb -E utf8 -O booktype-user booktype-db

Stellen Sie sicher, dass Verbindungen zur Datenbank "+ booktype-db " zulässig sind, indem Sie die PostgreSQL-Konfigurationsdatei mit dem Editor " nano +" überprüfen:

sudo nano /etc/postgresql/9.4/main/pg_hba.conf

Am Ende der Datei befindet sich ein Abschnitt mit Clientauthentifizierungsregeln. Es sollte wie folgt aussehen:

/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

Der Abschnitt im obigen Beispiel zeigt, dass alle lokalen Verbindungen zu PostgreSQL über IPv4 und IPv6 auf diesem Server zulässig sind. Beenden Sie Nano mit + Ctrl + X +.

Schritt 4 - Installieren von Booktype mit Git

Während ein + .deb + Paket auf dem Sourcefabric apt server verfügbar ist, enthält GitHub die aktuellste Version von Booktype. Die Verwendung von Git erleichtert außerdem das Verfolgen von Fehlerkorrekturen zwischen Releases oder das Bereitstellen von Pull-Anforderungen für das Booktype-Projekt. Laden Sie eine Kopie von Booktype 2.0 aus dem Git-Repository in das Verzeichnis + / usr / local / src / booktype / + herunter:

sudo mkdir /usr/local/src/booktype/
sudo git clone https://github.com/sourcefabric/Booktype.git --branch 2.0 --depth 1 /usr/local/src/booktype/

Installieren Sie als Nächstes die Anforderungen sowohl für die Entwicklungs- als auch für die Produktionsinstallation, damit Sie Folgendes verwenden können:

sudo pip install -r /usr/local/src/booktype/requirements/dev.txt
sudo pip install -r /usr/local/src/booktype/requirements/prod.txt

Schritt 5 - Erstellen einer Booktype-Instanz

Ein einzelner Booktype-Server kann mehrere Instanzen mit jeweils einer eigenen Community von Autoren, Gruppen und Büchern hosten. Auf diese Weise können Sie separate Umgebungen für bestimmte Interessen erstellen, anstatt unabhängige Autoren und Buchprojekte auf einer Allzweckplattform zusammenzufassen.

Erstellen Sie ein Verzeichnis für die Booktype-Instanzen wie "+ / var / www / booktype / +":

sudo mkdir /var/www/booktype/

Stellen Sie sicher, dass es dem Benutzer "+ www-data" gehört, der den Webserver ausführt:

sudo chown www-data:www-data /var/www/booktype/

Standardmäßig erlaubt Debian 8.2 dem Benutzer "+ www-data" nicht, Befehle einzugeben. Sie müssen die Zeile für "+ www-data" in der Datei "+ / etc / passwd" bearbeiten, um fortzufahren:

sudo nano /etc/passwd

Ersetzen Sie "+ / usr / sbin / nologin " durch " / bin / bash " für den Benutzer " www-data +" wie folgt:

www-data:x:33:33:www-data:/var/www:

Beenden Sie nano mit + Ctrl + X + und speichern Sie die Datei, wenn Sie dazu aufgefordert werden.

Wechseln Sie nun zu "+ www-data", um eine Book Type-Instanz zu erstellen:

sudo su www-data

Erstellen Sie die erste Booktype-Instanz mit dem Profil "+ dev " und einer Datenbank " postgresql " im Verzeichnis " / var / www / booktype / instance1 +":

cd /usr/local/src/booktype/scripts/
./createbooktype -p dev --check-versions --database postgresql /var/www/booktype/instance1

Wechseln Sie in das soeben erstellte Instanzverzeichnis und bearbeiten Sie die Datei + base.py +, die die Grundeinstellungen für die Instanz enthält:

cd /var/www/booktype/instance1/
nano instance1_site/settings/base.py

Es gibt einige Abschnitte dieser Datei, die bearbeitet werden müssen, um zu Ihrer Installation zu passen. Stellen Sie zunächst den Namen und die E-Mail-Adresse des Systemadministrators ein:

base.py

ADMINS = (
   # ('', ''),
)

Setzen Sie das aktive Profil für die Entwicklung vorerst auf "" dev "":

base.py

PROFILE_ACTIVE = 'dev'

Geben Sie den Site-Namen Ihrer Booktype-Instanz ein:

base.py

BOOKTYPE_SITE_NAME = ''

Geben Sie die E-Mail-Adressen ein, die beim Senden von Benachrichtigungen und Berichten verwendet werden sollen, sowie die Details zum Postausgangsserver. Wenn Sie Postfix auf dem Droplet installiert haben, können Sie die Standardwerte + localhost + und port + 25 + für den E-Mail-Server verwenden:

base.py

DEFAULT_FROM_EMAIL = ''
REPORT_EMAIL_USER = ''

EMAIL_HOST =
EMAIL_PORT =

Wenn Sie mPDF installieren möchten, geben Sie den Speicherort des Installationsverzeichnisses ein:

base.py

MPDF_DIR = ''

Geben Sie den Namen des zu verwendenden Standardherausgebers ein, wenn vom Autor keiner angegeben wurde:

base.py

DEFAULT_PUBLISHER = ""

Wenn Sie nur Redis installiert haben und es für nichts anderes verwenden, können Sie die Standardeinstellungen für "+ REDIS STUFF " unverändert lassen. Wenn Sie mehr als eine Anwendung auf dem lokalen Redis-Server haben, müssen Sie den Wert von " REDIS_DB " in eine andere Zahl als Null ändern. Die Standardeinstellung für " REDIS_PASSWORD +" ist "Keine". Wenn Ihr Redis-Server jedoch ein Kennwort benötigt, muss dieses in einfache oder doppelte Anführungszeichen gesetzt werden.

base.py

# REDIS STUFF
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB =
REDIS_PASSWORD =

Legen Sie die Zeitzone der Instanz und den Standardcode für die Sprache der Benutzeroberfläche fest:

base.py

TIME_ZONE = ''

LANGUAGE_CODE = ''

Autoren können aus den installierten Booktype-Lokalisierungen wie Französisch oder Spanisch ihre eigene Sprache für die Benutzeroberfläche auswählen.

Speichern und schließen Sie die Datei.

Bearbeiten Sie als Nächstes, während Sie sich noch im Verzeichnis "+ / var / www / booktype / instance1 / " befinden, die Datei " dev.py +", die Entwicklungseinstellungen für die Instanz "Booktype" enthält:

nano instance1_site/settings/dev.py

Geben Sie den Domainnamen und die URL Ihres Booktype-Entwicklungsservers ein:

dev.py

THIS_BOOKTYPE_SERVER = ''
BOOKTYPE_URL=''

Legen Sie den Namen, den Benutzer und das Kennwort für die Datenbankverbindung fest. Der Benutzername "+ booktype-user " und der PostgreSQL-Datenbankname " booktype-db +" sollten die gleichen sein, die Sie in Schritt 3 - Einrichten der Datenbank verwendet haben.

Es sollte dem folgenden Beispiel ähnlich sein:

dev.py

DATABASES = {'default':
                  {'ENGINE': 'django.db.backends.postgresql_psycopg2',
                   'NAME': '',
                   'USER': '',
                   'PASSWORD': '',
                   'HOST': 'localhost',
                   'PORT': ''
                  }
           }

Drücken Sie "+ Strg + O ", um die Datei zu speichern, und " Strg + X ", um den " nano +" - Editor zu beenden.

Laden Sie die Umgebungsvariablen:

. ./booktype.env

Initialisieren Sie die Datenbank:

./manage.py syncdb

Am Ende des Vorgangs sehen Sie Folgendes. Antwort, um einen Superuser zu erstellen:

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no):

Geben Sie die erforderlichen Informationen ein, wenn Sie dazu aufgefordert werden:

Username (leave blank to use 'www-data'):
E-mail address: ``
Password:
Password (again):
Superuser created successfully.

Sammeln Sie statische Dateien aus den Booktype-Komponentenanwendungen in einem einzigen Verzeichnis.

./manage.py collectstatic

Der Server antwortet:

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:

Nachdem Sie "+ yes " eingegeben und die " ENTER +" - Taste gedrückt haben, geben Sie die folgenden Befehle ein, um alle installierten Django-Anwendungen abzurufen und ihre Berechtigungen zu aktualisieren. Aktualisieren Sie dann die Standardrollen für registrierte und anonyme Benutzer:

./manage.py update_permissions
./manage.py update_default_roles

Die Installation ist jetzt abgeschlossen. Kehren Sie mit dem folgenden Befehl zur normalen Eingabeaufforderung des sudo-Benutzers ohne Rootberechtigung im Terminal zurück:

exit

Sie geben keine Befehle mehr als Benutzer "+ www-data" ein.

Schritt 6 - Apache konfigurieren

Kopieren Sie die während der Erstellung der Instanz generierte Datei + wsgi.apache + in das Apache-Konfigurationsverzeichnis für virtuelle Hosts:

sudo cp /var/www/booktype/instance1/conf/wsgi.apache /etc/apache2/sites-available/booktype-instance1.conf

Bearbeiten Sie die Konfigurationsdatei des virtuellen Hosts für die Instanz:

sudo nano /etc/apache2/sites-available/booktype-instance1.conf

Sie sollten mindestens die Werte für "+ ServerName " und " SetEnv HTTP_HOST " in den für den Server konfigurierten Domänennamen und " ServerAdmin +" in die Administrator-E-Mail-Adresse ändern:

/etc/apache2/sites-available/booktype-instance1.conf

<VirtualHost *:80>

    # Change the following three lines for your server
    ServerName
    SetEnv HTTP_HOST ""
    ServerAdmin

Da Debian 8.2 Apache 2.4 unterstützt, müssen Sie für alle Strophen + Location + und + Directory + das Kommentarzeichen + Require all approved + entfernen. Entfernen Sie das Zeichen am Anfang jeder Zeile, um das Kommentarzeichen "+ erfordert alle gewährten +" zu entfernen:

/etc/apache2/sites-available/booktype-instance1.conf

    <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>

Drücken Sie "+ Strg + O ", um die Datei zu speichern, und " Strg + X ", um den " nano +" - Editor zu beenden.

Deaktivieren Sie dann die Standard-Apache-Konfiguration und aktivieren Sie den virtuellen Booktype-Host für die Instanz mit den folgenden Befehlen:

sudo a2dissite 000-default.conf
sudo a2ensite booktype-instance1.conf

Starten Sie den Apache-Webserver neu, um die Änderungen mit dem Befehl zu aktivieren:

sudo service apache2 restart

Sie sollten nun in der Lage sein, Ihre Booktype-Instanz unter der URL des in der VirtualHost-Konfiguration definierten "+ ServerName " zu durchsuchen, z. Klicken Sie oben auf die Django Debug-Symbolleiste, um sie auszublenden (diese Symbolleiste ist bei Verwendung des Profils " prod +" nicht vorhanden).

image: https://assets.digitalocean.com/articles/booktype/booktype-debug-toolbar.png [Die Django-Debug-Symbolleiste kann durch Anklicken ausgeblendet werden.]

Melden Sie sich bei Booktype mit den Superuser-Kontodetails an, die Sie zuvor erstellt haben (in unserem Beispiel "+ admin +").

Nach der Anmeldung wird das mit der Superuser-E-Mail-Adresse verknüpfte Gravatar (sofern vorhanden) in den Feldern Personen und Mein Profil angezeigt.

Schritt 7 - Sellerie mit Supervisor ausführen

Sellerie ist die von Booktype-Servern verwendete Task-Warteschlange. Sobald Sie Booktype installiert haben, benötigen Sie wahrscheinlich einen Prozessmonitor, um die Celery-Mitarbeiter im Falle von Abstürzen oder Neustarts am Laufen zu halten. Sie können + supervisord + mit dem folgenden Befehl installieren:

sudo apt-get install supervisor

Das Programm "+ supervisord +" wird nach der Installation automatisch gestartet und so konfiguriert, dass es beim nächsten Neustart des Servers automatisch gestartet wird.

Jetzt müssen wir eine Konfigurationsdatei für Booktype und Sellerie mit dem folgenden Befehl erstellen:

sudo nano /etc/supervisor/conf.d/booktype-instance1.conf

Für die erste Booktype-Instanz in "+ / var / www / booktype / instance1 " mit zehn Arbeitern sollte der Inhalt der Datei " booktype-instance1.conf +" etwa so aussehen:

/etc/supervisor/conf.d/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

Nachdem Sie die Datei "+ booktype-instance1.conf " mit " Ctrl + O " gespeichert und " nano " mit " Ctrl + X " beendet haben, aktivieren Sie die Aktualisierungen der " supervisord +" - Konfiguration mit den folgenden Befehlen:

sudo supervisorctl reread
sudo supervisorctl update

Das Programm "+ supervisorctl " kann auch verwendet werden, um zu überprüfen, ob " supervisord " läuft " celeryd +":

sudo supervisorctl

Die Ausgabe dieses Befehls sollte ungefähr so ​​aussehen:

Output of sudo supervisorctlceleryd                          RUNNING    pid 24182, uptime 0:13:19

Sie sollten auch die folgende Eingabeaufforderung sehen:

supervisor>

Geben Sie den folgenden Befehl ein, um "+ supervisorctl +" zu beenden:

quit

Fazit

Jetzt haben Sie und Ihr Team alles, was Sie brauchen, um gemeinsam Bücher zu schreiben und zu veröffentlichen! Weitere Informationen zur Verwendung finden Sie im official Booktype manual.