Статья из 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 для подробностей использования.