Comment publier des livres avec le type de livre sur Debian 8

Un article de Sourcefabric

introduction

Booktype est un système de gestion de contenu spécialisé pour la production de livres, y compris de vrais livres attrayants que vous pouvez tenir entre vos mains.

Vous pouvez produire une sortie de type de livre aux formats PDF, EPUB, MOBI, XML et HTML, prête pour les librairies ou le Web ouvert. Les auteurs peuvent importer des manuscrits existants au format .docx de Word ou en tant que fichiers EPUB, qui sont convertis au format de chapitre HTML natif de Booktype pour être modifiés avec http://www.alohaeditor.org [Aloha].

Booktype est également un environnement social dans lequel les auteurs peuvent discuter et partager des notes tout en produisant des livres, demander l’aide d’autres personnes ou rechercher des projets auxquels contribuer. Booktype est une application Django écrite en Python et sous laquelle le logiciel libre est sous licence GNU Affero GPL, ce qui signifie qu’elle peut être téléchargée librement utilisé et personnalisé.

Booktype peut être installé sur tout serveur GNU / Linux ou Apple OS X approprié et peut en principe fonctionner également sur Windows, mais ce tutoriel se concentre sur la plate-forme recommandée de Debian stable, version 8.2 (Jessie). Lors de la rédaction et de l’édition de livres, les auteurs peuvent utiliser n’importe quel appareil doté d’un navigateur Web moderne, tel que Mozilla Firefox ou Google Chrome.

Dans ce didacticiel, nous allons effectuer une installation de Booktype qui vous permettra, à vous et à vos collègues, de produire des livres PDF pour impression et écran, des EPUB pour appareils numériques et du XHTML pour votre site Web, le tout à partir d’une source unique. Si vous souhaitez approfondir les possibilités de Booktype, c’est un bon point de départ. Ce tutoriel couvre Booktype 2.0.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Configuration des dépendances

Avant d’installer Booktype, vous devez d’abord installer les packages de développement: le serveur RabbitMQ, le serveur Redis, le système de gestion de base de données PostgreSQL, le vérificateur de syntaxe Tidy et le serveur Web Apache avec son module WSGI:

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

Si vous souhaitez que Booktype puisse envoyer des notifications par courrier électronique aux auteurs, vous devez également disposer d’un serveur de messagerie SMTP. La configuration la plus simple du serveur de courrier sortant est présentée dans le didacticiel https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on. -ubuntu-14-04 [Comment installer et configurer Postfix en tant que serveur SMTP d’envoi uniquement sur Ubuntu 14.04]. La seule différence pour Debian 8.2 (au lieu de Ubuntu 14.04) est que, dans Etape 1, vous devriez entrer la commande:

sudo apt-get install postfix mailutils

plutôt que:

sudo apt-get install mailutils

Sinon, le serveur de messagerie par défaut de Debian, Exim, sera installé à la place de Postfix. Exim est plus compliqué à configurer et n’est pas nécessaire pour envoyer des notifications à partir de Booktype.

Étape 2 - Installation d’un moteur de rendu PDF (facultatif)

Si vous souhaitez produire des livres imprimés, vous aurez besoin d’un moteur de rendu pour convertir les chapitres HTML de Booktype en un seul fichier PDF. L’application PHP http://www.mpdf1.com [mPDF 6.0] est recommandée en raison de la prise en charge étendue des fonctionnalités de prépresse. Avant d’installer mPDF, vous devez installer l’interpréteur de ligne de commande pour PHP et l’utilitaire de décompression à l’aide de la commande suivante:

sudo apt-get install php5-cli unzip

Ensuite, téléchargez mPDF, extrayez-le dans le répertoire + / var / www / +:

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

Le fichier étant assez volumineux, son téléchargement peut prendre un certain temps.

Enfin, remplacez le propriétaire des répertoires temporaires de mPDF par l’utilisateur du serveur Web Apache + www-data +:

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

Étape 3 - Configuration de la base de données

La prochaine chose dont vous avez besoin est une base de données disponible. Entrez la commande suivante pour créer l’utilisateur PostgreSQL + booktype-user +:

sudo -u postgres createuser -SDRP booktype-user

Entrez le mot de passe que vous souhaitez définir dans la base de données lorsque vous y êtes invité. Vous devrez le ressaisir pour confirmation.

Créez ensuite une base de données nommée + booktype-db +, en définissant + booktype-user + en tant que propriétaire. Le codage doit correspondre au jeu de caractères international UTF-8, comme indiqué par l’option + -E +.

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

Vérifiez que les connexions à la base de données + booktype-db + sont autorisées en vérifiant le fichier de configuration PostgreSQL avec l’éditeur + nano +:

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

Près de la fin du fichier se trouve une section avec les règles d’authentification du client. Cela devrait ressembler à ceci:

/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

La section dans l’exemple ci-dessus indique que toutes les connexions locales à PostgreSQL via IPv4 et IPv6 sont autorisées sur ce serveur. Nous sommes donc prêts à continuer. Quittez nano avec + Ctrl + X +.

Étape 4 - Installation du type de livre avec Git

Bien qu’un package + .deb + soit disponible à partir du Sourcefabric apt server, GitHub contient la version la plus récente de Booktype disponible. L’utilisation de Git facilite également le suivi des corrections de bogues entre les versions ou des demandes d’extraction de contribution au projet Booktype. Téléchargez une copie du type de livre 2.0 à partir du référentiel git dans le répertoire + / 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/

Ensuite, installez la configuration requise pour les installations de développement et de production afin que vous puissiez utiliser:

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

Étape 5 - Création d’une instance de type de livre

Un seul serveur Booktype peut héberger plusieurs instances, chacune avec sa propre communauté d’auteurs, de groupes et de livres. Cela vous permet de créer des environnements distincts pour des intérêts spécifiques plutôt que de regrouper des auteurs et des projets de livre indépendants sur une plateforme à usage général.

Créez un répertoire pour les instances Booktype tel que + / var / www / booktype / +:

sudo mkdir /var/www/booktype/

Assurez-vous qu’il appartient à l’utilisateur + www-data qui exécute le serveur Web:

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

Par défaut, Debian 8.2 n’autorise pas l’utilisateur + www-data + à entrer des commandes. Vous devrez éditer la ligne pour + www-data dans le fichier` + / etc / passwd` pour continuer:

sudo nano /etc/passwd

Remplacez + / usr / sbin / nologin + par + / bin / bash + pour l’utilisateur + www-data + comme suit:

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

Quittez nano avec + Ctrl + X +, en enregistrant le fichier à l’invite.

Passez maintenant au + www-data pour commencer à créer une instance de type de livre:

sudo su www-data

Créez la première instance Booktype avec le profil + dev + et une base de données + postgresql + dans le répertoire + / var / www / booktype / instance1 +:

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

Accédez au répertoire d’instance que vous venez de créer et modifiez le fichier + base.py + qui contient les paramètres de base de l’instance:

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

Plusieurs sections de ce fichier doivent être modifiées en fonction de votre installation. Commencez par définir le nom et l’adresse électronique de l’administrateur système:

base.py

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

Définissez le profil actif sur + 'dev' + pour le développement, pour le moment:

base.py

PROFILE_ACTIVE = 'dev'

Entrez le nom du site de votre instance Booktype:

base.py

BOOKTYPE_SITE_NAME = ''

Entrez les adresses électroniques à utiliser lors de l’envoi de notifications et de rapports, ainsi que les détails du serveur de courrier sortant. Si vous avez installé Postfix sur le droplet, vous pouvez utiliser les valeurs par défaut de + localhost + et du port + 25 + pour le serveur de messagerie:

base.py

DEFAULT_FROM_EMAIL = ''
REPORT_EMAIL_USER = ''

EMAIL_HOST =
EMAIL_PORT =

Si vous avez choisi d’installer mPDF, entrez l’emplacement du répertoire d’installation:

base.py

MPDF_DIR = ''

Entrez le nom de l’éditeur par défaut à utiliser si aucun n’est spécifié par l’auteur:

base.py

DEFAULT_PUBLISHER = ""

Si vous venez juste d’installer Redis et que vous ne l’utilisez pas pour autre chose, vous pouvez laisser les valeurs par défaut pour + REDIS STUFF + telles quelles. Si plusieurs applications utilisent le serveur Redis local, vous devez remplacer la valeur + REDIS_DB + par un nombre autre que zéro. La valeur par défaut de + REDIS_PASSWORD + est Aucune, mais si votre serveur Redis requiert un mot de passe, il doit être entouré de guillemets simples ou doubles.

base.py

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

Définissez le fuseau horaire de l’instance et le code de langue d’interface par défaut:

base.py

TIME_ZONE = ''

LANGUAGE_CODE = ''

Les auteurs pourront sélectionner leur propre langue d’interface dans les localisations de type de livre installées, telles que le français ou l’espagnol.

Enregistrez et quittez le fichier.

Ensuite, tout en restant dans le répertoire + / var / www / booktype / instance1 / +, éditez le fichier + dev.py + qui contient les paramètres de développement de l’instance Booktype:

nano instance1_site/settings/dev.py

Entrez le nom de domaine et l’URL de votre serveur de développement Booktype:

dev.py

THIS_BOOKTYPE_SERVER = ''
BOOKTYPE_URL=''

Définissez le nom, l’utilisateur et le mot de passe pour la connexion à la base de données. Le nom d’utilisateur + booktype-user + et le nom de la base de données PostgreSQL + booktype-db + doivent être identiques à ceux que vous avez utilisés dans Etape 3 - Configuration de la base de données.

Il devrait ressembler à l’exemple suivant:

dev.py

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

Appuyez sur les touches + Ctrl + O + pour enregistrer le fichier et + Ctrl + X + pour quitter l’éditeur + nano +.

Chargez les variables d’environnement:

. ./booktype.env

Initialiser la base de données:

./manage.py syncdb

À la fin du processus, vous verrez ce qui suit. Répondez pour créer un superutilisateur:

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

Entrez les informations requises à l’invite:

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

Collectez les fichiers statiques des applications de composant Booktype dans un seul répertoire.

./manage.py collectstatic

Le serveur répondra:

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:

Après avoir tapé + yes + et appuyé sur la touche + ENTER +, entrez les commandes suivantes pour extraire toutes les applications Django installées et mettre à jour leurs autorisations, puis mettez à jour les rôles par défaut pour les utilisateurs enregistrés et anonymes:

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

L’installation est maintenant terminée. Revenez à votre invite d’utilisateur sudo non-root normale dans le terminal à l’aide de la commande suivante:

exit

Vous n’entrez plus de commandes en tant qu’utilisateur + www-data.

Étape 6 - Configuration d’Apache

Copiez le fichier + wsgi.apache + généré lors de la création de l’instance dans le répertoire de configuration Apache pour les hôtes virtuels:

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

Editez le fichier de configuration de l’hôte virtuel pour l’instance:

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

Vous devez au moins remplacer les valeurs + NomServeur + et + SetEnv HTTP_HOST + par le nom de domaine configuré pour le serveur et + ServerAdmin + par l’adresse de messagerie de l’administrateur:

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

<VirtualHost *:80>

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

Comme Debian 8.2 comporte Apache 2.4, vous devrez supprimer le commentaire + Exiger tous les + accordés pour toutes les strophes + Emplacement + et + Répertoire + `. Pour décommenter les lignes `+ Require toutes les + + accordées, supprimez le caractère au début de chacune des lignes:

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

Appuyez sur les touches + Ctrl + O + pour enregistrer le fichier et + Ctrl + X + pour quitter l’éditeur + nano +.

Désactivez ensuite la configuration Apache par défaut et activez l’hôte virtuel Booktype pour l’instance à l’aide des commandes:

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

Redémarrez le serveur Web Apache pour activer les modifications à l’aide de la commande suivante:

sudo service apache2 restart

Vous devriez maintenant pouvoir parcourir votre instance Booktype, à l’URL du + NomServeur + défini dans la configuration de VirtualHost, tel que. Cliquez sur le haut de la barre d’outils de débogage de Django pour le masquer (cette barre d’outils ne sera pas présente lors de l’utilisation du profil + prod +).

image: https: //assets.digitalocean.com/articles/booktype/booktype-debug-toolbar.png [La barre d’outils de débogage de Django peut être masquée en cliquant dessus]

Connectez-vous à Booktype en utilisant les informations du compte superutilisateur que vous avez créées précédemment (+ admin + dans notre exemple).

image: https: //assets.digitalocean.com/articles/booktype/booktype-login.png [Dialogue de connexion du type de livre]

Une fois connecté, le gravatar associé à l’adresse électronique du superutilisateur, le cas échéant, sera affiché dans les zones People et My Profile.

image: https: //assets.digitalocean.com/articles/booktype/booktype-homepage.png [page d’accueil Booktype]

Étape 7 - Faire fonctionner le céleri avec un superviseur

Celery est la file d’attente utilisée par les serveurs Booktype. Une fois que vous avez installé Booktype, vous aurez probablement besoin d’un moniteur de processus pour que les travailleurs du céleri restent actifs en cas de crash ou de redémarrage. Vous pouvez installer + supervisord + avec la commande:

sudo apt-get install supervisor

Le programme + supervisord + démarre automatiquement après l’installation et est configuré pour démarrer automatiquement au prochain redémarrage du serveur.

Maintenant, nous devons créer un fichier de configuration à utiliser avec Booktype et Celery avec la commande:

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

Pour la première instance Booktype dans + / var / www / booktype / instance1 + avec dix ouvriers, le contenu du fichier + booktype-instance1.conf + devrait être similaire à:

/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

Après avoir enregistré le fichier + booktype-instance1.conf + avec + Ctrl + O + et avoir quitté + nano + avec + Ctrl + X +, activez les mises à jour de la configuration + supervisord + avec les commandes:

sudo supervisorctl reread
sudo supervisorctl update

Le programme + supervisorctl + peut également être utilisé pour vérifier que + supervisord + est en cours d’exécution + celeryd +:

sudo supervisorctl

Le résultat de cette commande devrait être similaire à:

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

Vous devriez également voir l’invite suivante:

supervisor>

Tapez la commande suivante pour quitter + supervisorctl +:

quit

Conclusion

Maintenant, vous et votre équipe avez tout ce dont vous avez besoin pour commencer à écrire et à publier des livres ensemble! Veuillez lire le official Booktype manual pour plus de détails sur l’utilisation.