Thứ năm, 10/12/2015 | 00:00 GMT+7

Cách xuất bản sách bằng Booktype trên Debian 8

Booktype là một hệ thống quản lý nội dung chuyên biệt để production sách, bao gồm những cuốn sách thật, đẹp mà bạn có thể cầm trên tay.

Một bài báo từ nguồn

Bạn có thể tạo kết quả Booktype ở các định dạng PDF, EPUB, MOBI, XML và HTML sẵn sàng cho các cửa hàng sách hoặc web mở. Tác giả có thể nhập các bản thảo hiện có ở định dạng .docx của Word hoặc dưới dạng EPUB, được chuyển đổi sang định dạng chương HTML root của Booktype để chỉnh sửa với Aloha .

Booktype cũng là một môi trường xã hội, trong đó các tác giả có thể trò chuyện và chia sẻ ghi chú trong khi production sách, tìm kiếm sự hỗ trợ từ những người khác hoặc tìm kiếm các dự án để đóng góp. Booktype là một ứng dụng Django được viết bằng Python và là Phần mềm Miễn phí được cấp phép theo GNU Affero GPL , nghĩa là nó có thể được download , sử dụng lại và tùy chỉnh miễn phí.

Booktype có thể được cài đặt trên bất kỳ server GNU / Linux hoặc Apple OS X phù hợp nào và về nguyên tắc cũng có thể chạy trên Windows, nhưng hướng dẫn này tập trung vào nền tảng được khuyến khích của Debian ổn định, version 8.2 (Jessie). Trong khi viết và chỉnh sửa sách, tác giả có thể sử dụng bất kỳ thiết bị nào có trình duyệt web hiện đại như Mozilla Firefox hoặc Google Chrome.

Trong hướng dẫn này, ta sẽ xem xét cài đặt Booktype cho phép bạn và đồng nghiệp của bạn production sách PDF để in và trình chiếu, EPUB cho thiết bị kỹ thuật số và XHTML cho trang web - tất cả đều từ một nguồn duy nhất. Nếu bạn muốn tìm hiểu sâu hơn về các khả năng của Booktype, đây là một nơi tốt để tham khảo . Hướng dẫn này bao gồm Booktype 2.0.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Bước 1 - Cài đặt dependencies

Trước khi cài đặt Booktype, trước tiên bạn cần cài đặt các gói phát triển: server RabbitMQ, server Redis, hệ thống quản lý database PostgreSQL, trình kiểm tra cú pháp gọn gàng và web server Apache với module WSGI của nó:

  • 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

Nếu bạn muốn Booktype có thể gửi thông báo qua email cho các tác giả, bạn cũng cần một server thư SMTP có sẵn. Cách cài đặt server thư đi đơn giản nhất được hiển thị trong hướng dẫn Cách cài đặt và cấu hình Postfix làm Server SMTP Chỉ gửi trên Ubuntu 14.04 . Sự khác biệt duy nhất đối với Debian 8.2 (thay vì Ubuntu 14.04) là ở Bước 1, bạn nên nhập lệnh:

  • sudo apt-get install postfix mailutils

hơn là:

  • sudo apt-get install mailutils

Nếu không, server thư mặc định của Debian, Exim, sẽ được cài đặt thay cho Postfix. Exim phức tạp hơn để cấu hình và không cần thiết để gửi thông báo từ Booktype.

Bước 2 - Cài đặt Trình kết xuất PDF (Tùy chọn)

Nếu bạn muốn production sách in, bạn cần trình kết xuất để chuyển đổi các chương HTML của Booktype thành một file PDF duy nhất. Ứng dụng PHP mPDF 6.0 được khuyến khích do hỗ trợ rộng rãi cho các tính năng báo trước. Trước khi cài đặt mPDF, bạn cần cài đặt trình thông dịch dòng lệnh cho PHP và tiện ích extract bằng lệnh:

  • sudo apt-get install php5-cli unzip

Tiếp theo, download mPDF, extract nó trong folder /var/www/ :

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

Tệp khá lớn nên có thể mất một chút thời gian để download .

Cuối cùng, thay đổi chủ sở hữu của các folder tạm thời của mPDF thành www-data user web server Apache:

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

Bước 3 - Cài đặt database

Điều tiếp theo bạn cần là một database có sẵn. Nhập lệnh sau để tạo booktype-user PostgreSQL booktype-user :

  • sudo -u postgres createuser -SDRP booktype-user

Nhập password bạn muốn đặt trong database khi được yêu cầu . Bạn cần phải nhập lại để xác nhận.

Lưu ý: Ghi lại password ở một nơi an toàn. Bạn cần nó trong Bước 5 - Tạo một version Booktype .

Sau đó tạo database có tên booktype-db , đặt booktype-user làm chủ sở hữu. Mã hóa phải là bộ ký tự UTF-8 quốc tế, như được chỉ ra với tùy chọn -E .

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

Lưu ý: Tùy chọn dòng lệnh để tạo user PostgreSQL là chữ cái O ( -O ), không phải số 0.

Lưu ý: Nếu bạn sử dụng tên hoặc chủ sở hữu database khác, hãy ghi lại. Bạn cần nó sau này trong Bước 5 - Tạo một Phiên bản Booktype khi chỉnh sửa dev.py

Xác nhận các kết nối đến booktype-db database được cho phép bằng cách kiểm tra file cấu hình PostgreSQL bằng editor nano :

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

Gần cuối file là một phần có các luật xác thực client . Nó sẽ giống như sau:

/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 

Phần trong ví dụ trên cho biết tất cả các kết nối local tới PostgreSQL qua cả IPv4 và IPv6 đều được phép trên server này, vì vậy ta nên thực hiện. Thoát nano bằng Ctrl+X

Bước 4 - Cài đặt Booktype với Git

Mặc dù .deb có sẵn từ server apt Sourcefainst , GitHub chứa version Booktype cập nhật nhất hiện có. Việc sử dụng Git cũng giúp bạn dễ dàng theo dõi các bản sửa lỗi giữa các bản phát hành hoặc đóng góp các yêu cầu kéo vào dự án Booktype. Download bản sao của Booktype 2.0 từ repository git vào folder /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/

Tiếp theo, cài đặt các yêu cầu cho cả cài đặt phát triển và cài đặt production để bạn có thể sử dụng:

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

Bước 5 - Tạo một version Booktype

Một server Booktype duy nhất có thể lưu trữ nhiều phiên bản , mỗi version có cộng đồng tác giả, group và sách riêng. Điều này cho phép bạn tạo ra các môi trường riêng biệt cho các sở thích cụ thể thay vì ném các tác giả và dự án sách không liên quan vào nhau trên một nền tảng mục đích chung.

Tạo folder cho các version Booktype như /var/www/booktype/ :

  • sudo mkdir /var/www/booktype/

Đảm bảo nó thuộc sở hữu của user www-data chạy web server :

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

Theo mặc định, Debian 8.2 không cho phép user www-data nhập lệnh. Bạn cần chỉnh sửa dòng cho www-data trong file /etc/passwd để tiếp tục:

  • sudo nano /etc/passwd

Thay thế /usr/sbin/nologin bằng /bin/bash cho user www-data như sau:

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

Thoát nano bằng Ctrl+X , lưu file khi được yêu cầu .

Bây giờ, hãy chuyển sang www-data để bắt đầu tạo version Booktype:

  • sudo su www-data

Tạo dụ Booktype đầu tiên với dev profile và một postgresql database trong /var/www/booktype/instance1 folder :

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

Thay đổi đối với folder đối tượng vừa được tạo và chỉnh sửa file base.py có chứa các cài đặt cơ bản cho đối tượng:

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

Có một số phần của file này cần được chỉnh sửa cho phù hợp với cài đặt của bạn. Đầu tiên, hãy đặt tên và địa chỉ email của administrator hệ thống:

base.py
ADMINS = (     # ('Your Name', 'sammy@example.com'), ) 

Đặt profile hoạt động thành 'dev' phát triển 'dev' để phát triển, trong lúc này:

base.py
PROFILE_ACTIVE = 'dev' 

Nhập tên trang web của version Booktype của bạn:

base.py
BOOKTYPE_SITE_NAME = 'Your Booktype Site' 

Nhập địa chỉ email để sử dụng khi gửi thông báo và báo cáo cũng như chi tiết server thư đi. Nếu bạn đã cài đặt Postfix trên Server, bạn có thể sử dụng các giá trị mặc định của localhost và cổng 25 cho server email:

base.py
DEFAULT_FROM_EMAIL = 'robot@example.com' REPORT_EMAIL_USER = 'sammy@example.com'  EMAIL_HOST = 'localhost' EMAIL_PORT = 25 

Nếu bạn chọn cài đặt mPDF, hãy nhập vị trí của folder cài đặt:

base.py
MPDF_DIR = '/var/www/mpdf60/' 

Nhập tên của nhà xuất bản mặc định để sử dụng nếu không có tên nào được tác giả chỉ định:

base.py
DEFAULT_PUBLISHER = "Your Publishing Company" 

Nếu bạn chỉ mới cài đặt Redis và không sử dụng nó cho bất kỳ việc gì khác, bạn có thể để nguyên giá trị mặc định cho REDIS STUFF . Nếu bạn có nhiều ứng dụng sử dụng server Redis local , bạn cần thay đổi giá trị của REDIS_DB thành một số khác 0. Mặc định cho REDIS_PASSWORD là Không có, nhưng nếu server Redis của bạn yêu cầu password , password đó phải được bao quanh bởi dấu ngoặc kép hoặc đơn.

base.py
# REDIS STUFF REDIS_HOST = 'localhost' REDIS_PORT = 6379 REDIS_DB = 0 REDIS_PASSWORD = None 

Đặt múi giờ version và mã ngôn ngữ giao diện mặc định:

base.py
TIME_ZONE = 'Europe/Berlin'  LANGUAGE_CODE = 'en-us' 

Các tác giả sẽ có thể chọn ngôn ngữ giao diện của riêng họ từ các bản địa hóa Booktype đã cài đặt như tiếng Pháp hoặc tiếng Tây Ban Nha.

Lưu và thoát khỏi file .

Tiếp theo, khi vẫn ở trong folder /var/www/booktype/instance1/ , hãy chỉnh sửa file dev.py chứa cài đặt phát triển cho cá thể Booktype:

  • nano instance1_site/settings/dev.py

Nhập domain và URL cho server phát triển Booktype của bạn:

dev.py
THIS_BOOKTYPE_SERVER = 'booktype.example.com' BOOKTYPE_URL='http://booktype.example.com' 

Đặt tên, user và password cho kết nối database . Tên user booktype-user và tên database PostgreSQL booktype-db phải giống nhau mà bạn đã sử dụng trong Bước 3 - Cài đặt Database .

Nó phải tương tự như ví dụ sau:

dev.py
DATABASES = {'default':                    {'ENGINE': 'django.db.backends.postgresql_psycopg2',                     'NAME': 'booktype-db',                     'USER': 'booktype-user',                     'PASSWORD': 'booktype-password',                     'HOST': 'localhost',                     'PORT': ''                    }             } 

Nhấn Ctrl+O để lưu file và Ctrl+X để thoát editor nano .

Lưu ý: Khi cá thể Booktype của bạn đã sẵn sàng để triển khai, bạn có thể chuyển sang cấu hình prod với domain và database khác, trong khi vẫn giữ được cấu hình phát triển của bạn để thử nghiệm.

Tải các biến môi trường:

  • . ./booktype.env

Khởi tạo database :

  • ./manage.py syncdb

Vào cuối quá trình, bạn sẽ thấy như sau. Trả lời để tạo siêu user :

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

Nhập thông tin bắt buộc như được yêu cầu :

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

Thu thập các file tĩnh từ các ứng dụng thành phần Booktype vào một folder duy nhất.

  • ./manage.py collectstatic

Server sẽ trả lời:

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: 

Sau khi nhập yes và nhấn ENTER , hãy nhập các lệnh sau để tìm nạp tất cả các ứng dụng Django đã cài đặt và cập nhật quyền của chúng, sau đó cập nhật role mặc định cho user đã đăng ký và ẩn danh:

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

Cài đặt đã hoàn tất. Quay lại dấu nhắc user sudo không phải root bình thường của bạn trong terminal bằng lệnh:

  • exit

Bạn không còn nhập lệnh với quyền là user www-data .

Bước 6 - Cấu hình Apache

Sao chép file wsgi.apache được tạo trong quá trình tạo version vào folder cấu hình Apache cho server ảo:

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

Chỉnh sửa file cấu hình server ảo cho ví dụ:

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

Bạn nên thay đổi ít nhất các giá trị cho ServerNameSetEnv HTTP_HOST thành domain được cấu hình cho server và ServerAdmin thành địa chỉ email quản trị:

/etc/apache2/sites-available/booktype-instance1.conf
<VirtualHost *:80>       # Change the following three lines for your server      ServerName booktype.example.com      SetEnv HTTP_HOST "booktype.example.com"      ServerAdmin sammy@example.com 

Vì Debian 8.2 có Apache 2.4, bạn cần bỏ ghi chú Require all granted cho tất cả các khổ LocationDirectory . Để bỏ ghi chú Require all granted dòng Require all granted , hãy xóa ký tự # ở đầu mỗi dòng:

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

Nhấn Ctrl+O để lưu file và Ctrl+X để thoát editor nano .

Sau đó, vô hiệu hóa cấu hình Apache mặc định và bật server ảo Booktype cho ví dụ bằng các lệnh:

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

Khởi động lại web server Apache để kích hoạt các thay đổi bằng lệnh:

  • sudo service apache2 restart

Đến đây bạn có thể duyệt version Booktype của bạn , tại URL của ServerName được xác định trong cấu hình VirtualHost, chẳng hạn như booktype.example.com . Nhấp vào đầu thanh công cụ gỡ lỗi Django để ẩn nó (thanh công cụ này sẽ không hiển thị khi sử dụng cấu hình prod ).

Thanh công cụ gỡ lỗi Django có thể bị ẩn khỏi chế độ xem bằng cách nhấp vào nó

Lưu ý: Bạn có thể chọn ngôn ngữ giao diện từ menu thả xuống ở góc trên cùng bên phải của cửa sổ trình duyệt.

Đăng nhập vào Booktype bằng chi tiết account superuser mà bạn đã tạo trước đó ( admin trong ví dụ của ta ).

Hộp thoại đăng nhập Booktype

Sau khi đăng nhập, gravatar được liên kết với địa chỉ email siêu user , nếu bạn có, sẽ được hiển thị trong hộp Mọi ngườiHồ sơ của tôi .

Trang chủ Booktype

Bước 7 - Chạy cần tây với người giám sát

Cần tây là hàng đợi tác vụ được sử dụng bởi các server Booktype. Khi bạn đã cài đặt Booktype, bạn có thể cần một trình giám sát quá trình để giữ cho Celery worker hoạt động trong trường hợp có bất kỳ sự cố hoặc khởi động lại nào. Bạn có thể cài đặt supervisord bằng lệnh:

  • sudo apt-get install supervisor

Chương trình supervisord tự động khởi động sau khi cài đặt và được cấu hình để khởi động tự động vào lần khởi động lại server tiếp theo.

Bây giờ, ta phải tạo một file cấu hình để sử dụng với Booktype và Celery bằng lệnh:

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

Đối với cá thể Booktype đầu tiên trong /var/www/booktype/instance1 với mười công nhân, nội dung của file booktype-instance1.conf phải tương tự như:

/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 

Sau khi lưu booktype-instance1.conf bằng Ctrl+O và thoát nano bằng Ctrl+X , hãy bật cập nhật cho cấu hình supervisord bằng các lệnh:

  • sudo supervisorctl reread
  • sudo supervisorctl update

Chương trình supervisorctl cũng được dùng để kiểm tra xem supervisord có đang chạy celeryd :

  • sudo supervisorctl

Đầu ra của lệnh này phải tương tự như:

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

Bạn cũng sẽ thấy dấu nhắc sau:

supervisor> 

Gõ lệnh sau để thoát khỏi supervisorctl :

  • quit

Kết luận

Đến đây bạn và group của bạn có mọi thứ bạn cần để bắt đầu viết và xuất bản sách cùng nhau! Vui lòng đọc hướng dẫn sử dụng Booktype chính thức để biết thêm chi tiết.


Tags:

Các tin liên quan