Memasang Booktype di CentOS untuk Production Server

BOOKTYPE adalah aplikasi berbasis web yang berfungsi untuk kolaborasi, editing, sampai dengan publikasi buku. Banyak yang merasa cukup sulit melakukan instalasi Booktype, sehingga dibuat cara mudah dengan script Booktype Easy Install v0.1 . Perkaranya adalah, Booktype Easy Install menggunakan platform SQLite dan built in webserver yang sangat tidak direkomendasikan untuk production server. Bagaimana solusinya?

Dalam artikel ini, akan dipaparkan pemasangan Booktype di dalam Linux CentOS menggunakan PostgreSQL, Python, serta mendayagunakan Apache sebagai webserver yang diharapkan lebih stabil pada production environment. Tutorial ini berdasarkan pengalaman riil installasi Booktype sehingga ada beberapa prosedur tambahan yang tidak ada pada manual guide resmi, yang mungkin saja – karena kekuranglengkapan ini – menjadi penyebab banyaknya kegagalan dalam mengikuti petunjuk tersebut.

Langkah-langkah :

1. Siapkan server dengan OS CentOS, dalam artikel ini memakai CentOS 6.4, dan text editor yang diperlukan. Bisa memakai nano (yum install nano). Jika manajemen file dirasa akan cukup kompleks, dapat memakai midnight commander (yum install mc) sebagai bantuan.

2. Pasang paket-paket pendukung :

su -c 'yum -y install python python-devel sqlite git python-virtualenv python-pip'
su -c 'yum -y install redis libxml2-devel libxslt-devel libjpeg libjpeg-devel zlib zlib-devel'
su -c 'yum -y install postgresql-server postgresql-libs postgresql-devel python-psycopg2'

3. Pasang Virtualenv yang berguna untuk memroses Python Virtual Environment

yum install python-setuptools python-setuptools-devel 
easy_install pip
pip install virtualenv

4. Pindah ke folder Home, kemudian buat Python Virtual Environment

virtualenv --distribute mybooktype
cd mybooktype
source bin/activate

5. Ambil source Booktype dari Github

git clone https://github.com/sourcefabric/Booktype.git

6.  Install modul Python pendukung

pip install -r Booktype/requirements/postgresql.txt

7. Buat Booktype project

./Booktype/scripts/createbooki --database postgresql mybook

8. Inisiasi PostgreSQL (ditunggu hingga proses rampung)

chkconfig postgresql on
service postgresql initdb
service postgresql start

9. Masuk sebagai PostgreSQL user

su - postgres

10. Buat PostgreSQL user sekaligus masukkan kata sandi

createuser -SDRP booktype

11. Buat PostgreSQL database, baris -T template0 sebagai solusi untuk error UTF8

createdb -E utf8 -O booktype booktype -T template0

12. Keluar dari PostgreSQL (exit) dan kembali ke root sebelum lanjut pada langkah berikutnya.

13. Edit konfigurasi database

nano mybooktype/mybook/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'booktype',                      
        'USER': 'booktype',
        'PASSWORD': 'isi password disini',
        'HOST': '',
        'PORT': ''
    }
}

14. Tambahkan otentifikasi Booktype pada database

nano /var/lib/pgsql/data/pg_hba.conf 
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local  	 booktype    booktype   	       	       	         md5

Ubah method menjadi trust untuk database lain.

15. Sesudahnya, restart PostgreSQL

service postgresql restart

16. Kembali masuk ke Python virtual environment

cd mybooktype
source bin/activate

17. Melanjutkan instalasi Booktype. Sesuaikan dengan folder yang dipakai (/home/mybooktype)

source mybook/booki.env
django-admin.py syncdb --noinput
django-admin.py migrate
django-admin.py createsuperuser

18. Lanjutkan dengan instalasi Redis untuk CentOS

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
yum install redis -y

19. Sesudah rampung instalasi, jalankan Redis

chkconfig redis on
service redis start

20. Pemasangan Apache beserta paket yang diperlukan

yum install httpd mod_wsgi

21.  Konfigurasi ulang berkas mybook/booki.wsgi, pastikan parameter aktivasi mengarah lengkap ke mybooktype/bin/activate_this.py. Misal dalam kasus ini /home/mybooktype.

nano mybook/booki.wsgi
#tambahkan dibawah baris sys.path.insert 
activate_this = '/home/mybooktype/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

22. Salin file konfigurasi dan chown folder utama Booktype

[root@losangeles ~]# cp /home/mybooktype/mybook/wsgi.apache /etc/httpd/conf.d/booktype.conf
[root@losangeles ~]# cd /home
[root@losangeles home]# chown -R apache:apache mybooktype/

23. Masukkan server name ( misal sub.domain.TLD) ke file konfigurasi web server, sekaligus ubah letak log ke log path to /var/log/httpd/

nano /etc/httpd/conf.d/booktype.conf

24. Akhiri dengan merestart webserver

service httpd restart

Sesudah langkah ini, dan tentunya dengan setting A Record yang benar di domain/DNS manager, maka Booktype akan langsung dapat diakses dengan mengetik nama domain terkait.

Semoga bermanfaat!