Как публиковать книги с типом книги в Debian 8

Статья из Sourcefabric

Вступление

Booktype - это специализированная система управления контентом для производства книг, включая настоящие, красивые книги, которые вы можете держать в своих руках.

Вы можете производить вывод Booktype в форматах PDF, EPUB, MOBI, XML и HTML, готовых для книжных магазинов или открытой сети. Авторы могут импортировать существующие рукописи в формате Word в формате .docx или в формате EPUB, которые преобразуются в собственный формат глав HTML в Booktype для редактирования с помощью http://www.alohaeditor.org [Aloha].

Booktype - это также социальная среда, в которой авторы могут общаться и делиться заметками, создавая книги, обращаться за помощью к другим или искать проекты, в которые можно внести свой вклад. Booktype - это приложение Django, написанное на Python и лицензируемое по бесплатному программному обеспечению в соответствии с GNU Affero GPL, что означает, что оно может быть свободно загружено, повторно используется и настроен.

Booktype может быть установлен на любом подходящем сервере GNU / Linux или Apple OS X и, в принципе, может работать и на Windows, но в этом руководстве рассматривается рекомендуемая платформа стабильной версии Debian, версия 8.2 (Jessie). При написании и редактировании книг авторы могут использовать любое устройство с современным веб-браузером, например Mozilla Firefox или Google Chrome.

В этом руководстве мы рассмотрим установку Booktype, которая позволит вам и вашим коллегам создавать книги в формате PDF для печати и на экране, EPUB для цифровых устройств и XHTML для вашего веб-сайта - все из одних рук. Если вы хотите глубже изучить возможности Booktype, это хорошее место для начала. Этот учебник охватывает Booktype 2.0.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • Свежий дроплет Debian 8.2 (будет работать дроплет 512 МБ / 1 ЦП, но для повышения производительности рекомендуется 1 дБ / 1 ЦП)

  • Пользователь root, не являющийся пользователем root, в Droplet, как показано в Initial Server Setup с Debian 8

  • Зарегистрированное доменное имя

  • Точка книжного типа. в свою каплю это до.)

Шаг 1 - Настройка зависимостей

Перед установкой Booktype необходимо сначала установить пакеты разработки: сервер RabbitMQ, сервер Redis, система управления базами данных PostgreSQL, средство проверки синтаксиса и веб-сервер Apache с его модулем 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

Если вы хотите, чтобы Booktype мог отправлять уведомления по электронной почте авторам, вам также потребуется доступный почтовый сервер SMTP. Простейшая настройка сервера исходящей почты показана в учебном руководстве https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on -ubuntu-14-04 [Как установить и настроить Postfix как SMTP-сервер только для отправки в Ubuntu 14.04]. Единственное отличие для Debian 8.2 (вместо Ubuntu 14.04) состоит в том, что в Step 1 вы должны ввести команду:

sudo apt-get install postfix mailutils

скорее, чем:

sudo apt-get install mailutils

В противном случае почтовый сервер Debian по умолчанию, Exim, будет установлен вместо Postfix. Exim более сложен в настройке и не нужен для отправки уведомлений из Booktype.

Шаг 2 - Установка PDF Renderer (необязательно)

Если вы хотите печатать книги, вам понадобится средство рендеринга, чтобы преобразовать HTML-главы Booktype в один файл PDF. Рекомендуется приложение PHP http://www.mpdf1.com [mPDF 6.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 на пользователя веб-сервера Apache + 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

Введите пароль, который вы хотите установить в базе данных при появлении запроса. Вам нужно будет повторно ввести его для подтверждения.

Затем создайте базу данных с именем + booktype-db +, установив в качестве владельца + booktype-user +. Кодировка должна соответствовать международному набору символов UTF-8, как указано опцией + -E +.

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

Убедитесь, что соединения с базой данных + booktype-db + разрешены, проверив файл конфигурации PostgreSQL с помощью редактора + nano +:

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

Рядом с концом файла находится раздел с правилами аутентификации клиента. Это должно выглядеть следующим образом:

/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

Раздел в приведенном выше примере показывает, что на этом сервере разрешены все локальные подключения к PostgreSQL как по IPv4, так и по IPv6, поэтому мы готовы к работе. Выйдите из nano с помощью + Ctrl + X +.

Шаг 4 - Установка Booktype с помощью Git

В то время как пакет + .deb + доступен с сервера Sourcefabric apt, GitHub содержит самую последнюю доступную версию Booktype. Использование Git также облегчает отслеживание ошибок между выпусками или отправку запросов на извлечение в проект Booktype. Загрузите копию Booktype 2.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 - Создание экземпляра типа книги

Один сервер Booktype может содержать несколько инстанций, каждый со своим сообществом авторов, групп и книг. Это позволяет создавать отдельные среды для конкретных интересов, а не объединять несвязанных авторов и книжные проекты на универсальной платформе.

Создайте каталог для экземпляров Booktype, например + / var / www / booktype / +:

sudo mkdir /var/www/booktype/

Убедитесь, что он принадлежит пользователю + www-data, который запускает веб-сервер:

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

По умолчанию Debian 8.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:

Выйдите из nano с помощью + Ctrl + X +, сохранив файл при появлении запроса.

Теперь переключитесь на + www-data, чтобы начать создавать экземпляр типа книги:

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

Есть несколько разделов этого файла, которые необходимо отредактировать в соответствии с вашей установкой. Сначала установите имя и адрес электронной почты системного администратора:

base.py

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

Установите для активного профиля значение + 'dev' + для разработки, на данный момент:

base.py

PROFILE_ACTIVE = 'dev'

Введите имя сайта вашего экземпляра Booktype:

base.py

BOOKTYPE_SITE_NAME = ''

Введите адреса электронной почты, которые будут использоваться при отправке уведомлений и отчетов, а также данные сервера исходящей почты. Если вы установили Postfix на Droplet, вы можете использовать значения по умолчанию + localhost и порт` + 25 + `для почтового сервера:

base.py

DEFAULT_FROM_EMAIL = ''
REPORT_EMAIL_USER = ''

EMAIL_HOST =
EMAIL_PORT =

Если вы решили установить mPDF, введите местоположение установочного каталога:

base.py

MPDF_DIR = ''

Введите имя издателя по умолчанию для использования, если автор не указал ни одного:

base.py

DEFAULT_PUBLISHER = ""

Если вы только что установили Redis и не используете его ни для чего другого, вы можете оставить значения по умолчанию для + REDIS STUFF +, как они есть. Если у вас есть несколько приложений, использующих локальный сервер Redis, вам нужно изменить значение + REDIS_DB + на число, отличное от нуля. Значение по умолчанию для + REDIS_PASSWORD + равно None, но если вашему серверу Redis требуется пароль, он должен быть заключен в одинарные или двойные кавычки.

base.py

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

Установите часовой пояс экземпляра и код языка интерфейса по умолчанию:

base.py

TIME_ZONE = ''

LANGUAGE_CODE = ''

Авторы смогут выбирать свой собственный язык интерфейса из установленных локализаций Booktype, таких как французский или испанский.

Сохраните и выйдите из файла.

Затем, оставаясь в каталоге + / var / www / booktype / instance1 / +, отредактируйте файл + dev.py +, который содержит параметры разработки для экземпляра Booktype:

nano instance1_site/settings/dev.py

Введите доменное имя и URL для вашего сервера разработки Booktype:

dev.py

THIS_BOOKTYPE_SERVER = ''
BOOKTYPE_URL=''

Установите имя, пользователя и пароль для подключения к базе данных. Имя пользователя + booktype-user + и имя базы данных PostgreSQL + booktype-db + должны совпадать с теми, которые вы использовали в Step 3 - Настройка базы данных.

Это должно быть похоже на следующий пример:

dev.py

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

Нажмите + Ctrl + O +, чтобы сохранить файл, и + Ctrl + X +, чтобы выйти из редактора + nano +.

Загрузите переменные среды:

. ./booktype.env

Инициализируйте базу данных:

./manage.py syncdb

В конце процесса вы увидите следующее. Ответ для создания суперпользователя:

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

Введите необходимую информацию в соответствии с запросом:

Username (leave blank to use 'www-data'):
E-mail address: ``
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

Установка завершена. Вернитесь к обычной командной строке пользователя sudo без полномочий root в терминале с помощью команды:

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 + на адрес электронной почты администратора:

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

<VirtualHost *:80>

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

Поскольку Debian 8.2 поддерживает Apache 2.4, вам нужно раскомментировать + Требовать все предоставленные + для всех разделов + Location + и + Directory +. Чтобы раскомментировать строки «+ Require all grant +», удалите символ в начале каждой из строк:

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

Нажмите + Ctrl + O +, чтобы сохранить файл, и + Ctrl + X +, чтобы выйти из редактора + nano +.

Затем отключите конфигурацию Apache по умолчанию и включите виртуальный хост Booktype для экземпляра с помощью команд:

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

Перезапустите веб-сервер Apache, чтобы активировать изменения с помощью команды:

sudo service apache2 restart

Теперь вы сможете просматривать ваш экземпляр Booktype по URL-адресу + ServerName +, определенному в конфигурации VirtualHost, например. Нажмите на верхнюю часть панели инструментов отладки Django, чтобы скрыть ее (эта панель инструментов не будет присутствовать при использовании профиля + prod +).

image: https: //assets.digitalocean.com/articles/booktype/booktype-debug-toolbar.png [Панель инструментов отладки Django можно скрыть, нажав на нее]

Войдите в Booktype, используя данные учетной записи суперпользователя, которые вы создали ранее (+ admin + в нашем примере).

изображение: https: //assets.digitalocean.com/articles/booktype/booktype-login.png [диалог входа в систему Booktype]

После входа в систему поля «People» и «My Profile_» будут отображаться, если граватар, связанный с адресом электронной почты суперпользователя, если он у вас есть, будет отображаться.

изображение: https: //assets.digitalocean.com/articles/booktype/booktype-homepage.png [домашняя страница книжного типа]

Шаг 7 - Запуск сельдерея с супервайзером

Celery - очередь задач, используемая серверами Booktype. После того, как вы установили Booktype, вам, вероятно, понадобится монитор процесса, чтобы работники Celery работали в случае любых сбоев или перезагрузок. Вы можете установить + supervisord + с помощью команды:

sudo apt-get install supervisor

Программа + supervisord + автоматически запускается после установки и настроена на автоматический запуск при следующей перезагрузке сервера.

Теперь нам нужно создать файл конфигурации для использования с Booktype и Celery с помощью команды:

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

Для первого экземпляра Booktype в + / var / www / booktype / instance1 + с десятью рабочими содержимое файла + booktype-instance1.conf + должно быть похоже на:

/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

После сохранения файла + booktype-instance1.conf + с помощью + Ctrl + O + и выхода из + nano + с помощью + Ctrl + X +, включите обновления конфигурации + supervisord + с помощью команд:

sudo supervisorctl reread
sudo supervisorctl update

Программа + supervisorctl + также может быть использована для проверки того, что + supervisord + выполняет + celeryd +:

sudo supervisorctl

Вывод этой команды должен быть похож на:

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

Вы также должны увидеть следующее приглашение:

supervisor>

Введите следующую команду для выхода из + supervisorctl +:

quit

Заключение

Теперь у вас и вашей команды есть все необходимое, чтобы начать писать и публиковать книги вместе! Пожалуйста, прочитайте official Booktype manual для подробностей использования.

Related