Friday, 7 April 2017

Indico : The effortless open source tool for event organization, archival and collaboration

Status : Draft


Instalasi 

Melalui pip 

Install dengan pip masih gagal.

Melalui Git Repository

clone repo indico seperti di dokumentasi. 


#untuk postgrsql-9.6-dev, sesuaikan dengan versi yang digunakan
sudo apt-get install libpq-dev postgresql-9.6-dev
sudo apt-get install python-dev
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev
sudo apt-get install zlib1g-dev
sudo apt-get install npm
sudo -H pip install -r requirements.dev.txt
sudo -H pip install -r requirements.txt
sudo -H pip install -r requirements.zodb.txt
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install grunt
sudo apt install node-grunt-cli
sudo npm install findup-sync -g





Ketika install requirement muncul error : 

...
Found existing installation: blinker 1.3                                                                                             [38/439]
    DEPRECATION: Uninstalling a distutils installed project (blinker) has been deprecated and will be removed in a future version. This is due 
to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling blinker-1.3:
      Successfully uninstalled blinker-1.3
...
  Found existing installation: PyYAML 3.11
    DEPRECATION: Uninstalling a distutils installed project (PyYAML) has been deprecated and will be removed in a future version. This is due t
o the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling PyYAML-3.11:
      Successfully uninstalled PyYAML-3.11
...
Successfully installed Flask-0.11.1 Flask-BabelEx-0.9.3 Flask-Migrate-1.2.0 Flask-Multipass-0.0.dev0 Flask-OAuthlib-0.9.1 Flask-PluginEngine-0.
2.2.dev0 Flask-SQLAlchemy-2.1 Flask-Script-2.0.5 Flask-WTF-0.13 Jinja2-2.8 Pillow-2.7.0 PyYAML-3.12 SQLAlchemy-1.1.4 WTForms-2.1 WTForms-Compon
ents-0.10.0 alembic-0.6.7 amqp-1.4.9 bcrypt-3.1.0 beautifulsoup4-4.5.1 billiard-3.3.0.23 blinker-1.4 celery-3.1.23 certifi-2017.1.23 click-6.6 
colorclass-2.2.0 contextlib2-0.5.4 decorator-4.0.11 flask-marshmallow-0.7.0 functools32-3.2.3.post2 hiredis-0.2.0 html2text-2016.5.29 infinity-
1.4 intervals-0.8.0 jsonschema-2.5.1 kombu-3.0.37 marshmallow-2.10.3 marshmallow-enum-1.0 marshmallow-sqlalchemy-0.12.0 pathlib-1.0.1 psycopg2-
2.6.2 pyScss-1.3.5 pytest-3.0.1 pytest-catchlog-1.2.2 pytest-cov-2.3.1 pytest-localserver-0.3.6 pytest-mock-0.11.0 redis-2.10.5 reportlab-3.2.0
 requests-2.12.1 requests-oauthlib-0.8.0 speaklater-1.3 terminaltables-3.0.0 translitcodec-0.4.0 validators-0.11.3 xlsxwriter-0.9.3 zope.sqlalc
hemy-0.7.7
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 9, in <module>
    load_entry_point('pip==9.0.1', 'console_scripts', 'pip')()
  File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 233, in main
    return command.main(cmd_args)
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 252, in main
    pip_version_check(session)
 File "/usr/local/lib/python2.7/dist-packages/pip/utils/outdated.py", line 102, in pip_version_check
    installed_version = get_installed_version("pip")
  File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 838, in get_installed_version
    working_set = pkg_resources.WorkingSet()
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 644, in __init__
    self.add_entry(entry)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 700, in add_entry
    for dist in find_distributions(entry, True):
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1949, in find_eggs_in_zip
    if metadata.has_metadata('PKG-INFO'):
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1463, in has_metadata
    return self.egg_info and self._has(self._fn(self.egg_info, name))
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1823, in _has
    return zip_path in self.zipinfo or zip_path in self._index()
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1703, in zipinfo
    return self._zip_manifests.load(self.loader.archive)
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 1643, in load
    mtime = os.stat(path).st_mtime
OSError: [Errno 2] No such file or directory: '/usr/local/lib/python2.7/dist-packages/hiredis-0.1.3-py2.7-linux-x86_64.egg'

Solusi, uninstall kemudian install kembali redis dan hiredis :

sudo -H  pip uninstall redis
sudo -H  pip uninstall hiredis
sudo -H  pip install redis
sudo -H  pip install hiredis

Jalankan perintah :

fab setup_deps

Jika muncul error :

Error: Cannot find module 'findup-sync'

indico>>sudo rm node_modules/findup-sync
indico>>sudo npm install -g grunt-cli


Muncul error :

...
 SOLINK_MODULE(target) Release/obj.target/encode.node
  COPY Release/encode.node
make: Leaving directory '/home/wildan/jobstuff/openthinklabs/investor/UNHAS/software/indico/ext_modules/fullcalendar/node_modules/grunt-contrib-compress/node_modules/iltorb/build'
npm ERR! Linux 4.4.0-67-generic
npm ERR! argv "/home/wildan/jobstuff/openthinklabs/investor/UNHAS/software/indico/ext_modules/node_env/bin/node" "/home/wildan/jobstuff/openthinklabs/investor/UNHAS/software/indico/ext_modules/node_env/bin/npm" "install"
npm ERR! node v4.2.2
npm ERR! npm  v2.14.7
npm ERR! code ELIFECYCLE

npm ERR! phantomjs-prebuilt@2.1.14 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the phantomjs-prebuilt@2.1.14 install script 'node install.js'.
npm ERR! This is most likely a problem with the phantomjs-prebuilt package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls phantomjs-prebuilt
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/wildan/jobstuff/openthinklabs/investor/UNHAS/software/indico/ext_modules/fullcalendar/npm-debug.log

Fatal error: local() encountered an error (return code 1) while executing 'npm install'

Aborting.

Error ini sepertinya akibat tidak menggunakan phantojs terbaru, setelah menginstall phantomjs terbaru (2.1.1) error ini tidak terjadi. 

sudo apt-get remove --purge  phantomjs
sudo apt-get install  phantomjs

Lalu jalankan :

sudo python setup.py install

Jika ingin setup development environtment untuk indico, bisa menjalankan juga :

sudo python setup.py develop_config

Lalu :

sudo indico_initial_setup

Setelah selesai, akan ada informasi :

Congratulations!
Indico has been installed correctly.

    indico.conf:      /opt/indico/etc/indico.conf

    BinDir:           /opt/indico/bin
    DocumentationDir: /opt/indico/doc
    ConfigurationDir: /opt/indico/etc
    HtdocsDir:        /opt/indico/htdocs

For information on how to configure Apache HTTPD, take a look at:

http://indico.readthedocs.org/en/latest/installation/#configuring-the-web-server


Please do not forget to start the Celery worker in order to use background tasks
such as event reminders and periodic cleanups. You can run it using this command:
$ indico celery worker -B

If you are running ZODB on this host:
 - Review /opt/indico/etc/zodb.conf and /opt/indico/etc/zdctl.conf to make sure everything is ok.
 - To start the database run: zdaemon -C /opt/indico/etc/zdctl.conf start

Sesudah mensetup virtual host, dan merestart apache muncul error : 

[Sat Apr 08 07:22:28.208705 2017] [core:error] [pid 23613] [client 127.0.0.1:53164] AH00037: Symbolic link not allowed or link target not accessible: /opt/indico/htdocs/indico.wsgi

Ketika diperiksa ternyata symlink nya salah. Setelah diperbaiki, Alhamdulillah, bisa, berikut adalah konfigurasi virtual host yang digunakan untuk development : 

#/etc/apache2/sites-available/indico.conf 

AddDefaultCharset UTF-8

<VirtualHost *:8080>
    ServerName indico.np
    ErrorLog /var/log/apache2/indico_error.log
    LogLevel warn

    Alias /indico/images "/opt/indico/htdocs/images"
    Alias /indico/css "/opt/indico/htdocs/css"
    Alias /indico/js "/opt/indico/htdocs/js"
    Alias /indico/ihelp "/opt/indico/htdocs/ihelp"

    WSGIDaemonProcess WSGIDAEMON processes=8 threads=1 inactivity-timeout=3600 maximum-requests=10000 \
            python-eggs=/opt/indico/tmp/egg-cache

    WSGIScriptAlias /indico "/opt/indico/htdocs/indico.wsgi"

    <Directory "/opt/indico">
        WSGIProcessGroup WSGIDAEMON
        WSGIApplicationGroup %{GLOBAL}
        AllowOverride None
        Options Indexes FollowSymLinks MultiViews
        Order deny,allow
        Allow from all
Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerName indico.np
    ErrorLog /var/log/apache2/indico_error.log
    LogLevel warn

    Alias /indico/images "/opt/indico/htdocs/images"
    Alias /indico/css "/opt/indico/htdocs/css"
    Alias /indico/js "/opt/indico/htdocs/js"
    Alias /indico/ihelp "/opt/indico/htdocs/ihelp"

    WSGIScriptAlias /indico "/opt/indico/htdocs/indico.wsgi"

    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

Setelah restart Apache, masih muncul error : 

[Sat Apr 08 07:41:09.459898 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393] mod_wsgi (pid=8875): Target WSGI script '/opt/indico/htdocs/indico.wsgi' cannot be loaded as Python module.
[Sat Apr 08 07:41:09.460172 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393] mod_wsgi (pid=8875): Exception occurred processing WSGI script '/opt/indico/htdocs/indico.wsgi'.
[Sat Apr 08 07:41:09.460382 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393] Traceback (most recent call last):
[Sat Apr 08 07:41:09.460569 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393]   File "/opt/indico/htdocs/indico.wsgi", line 18, in <module>
[Sat Apr 08 07:41:09.461446 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393]     application = make_app()
[Sat Apr 08 07:41:09.461581 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393]   File "/usr/local/lib/python2.7/dist-packages/indico-1.9.9-py2.7.egg/indico/web/flask/app.py", line 353, in make_app
[Sat Apr 08 07:41:09.462408 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393]     configure_app(app, set_path)
[Sat Apr 08 07:41:09.462516 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393]   File "/usr/local/lib/python2.7/dist-packages/indico-1.9.9-py2.7.egg/indico/web/flask/app.py", line 88, in configure_app
[Sat Apr 08 07:41:09.462703 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393]     raise ValueError('SecretKey must be set to a random secret of at least 16 characters. '
[Sat Apr 08 07:41:09.462831 2017] [wsgi:error] [pid 8875] [remote 127.0.0.1:26393] ValueError: SecretKey must be set to a random secret of at least 16 characters. You can generate one using os.urandom(32) in Python shell.

Sepertinya, konfigurasinya belum diisi semua.

Lengkapi dulu konfigurasinya : /opt/indico/etc/indico.conf 

Populate Database Indico 

Populate database indico [2].
 wildan@openthinklabs002:/tmp⟫ sudo -E indico  db prepare
Setting the alembic version to HEAD
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running stamp_revision  -> bc4e7682e7df
Required Postgres extensions missing: pg_trgm, unaccent
Create them using these SQL commands (as a Postgres superuser):
  CREATE EXTENSION pg_trgm;
  CREATE EXTENSION unaccent;


Studi Kasus


  1. Indico di CERN, https://indico.cern.ch/
  2. Fermi National Accelerator Laboratory, https://indico.fnal.gov/index.py

Referensi


  1. Indico Documentation, http://indico.readthedocs.io/en/latest/
  2. Tips for developers, https://github.com/indico/indico/blob/master/DEVELOPMENT.md
  3. Indico’s documentation, http://conf.istu.edu/ihelp/html/index.html#

3 comments:

  1. Assalamu Alaikum wwb,
    Gimana lanjutannya Mas Wildan?

    ReplyDelete
  2. Saya coba instalasi di Fedora 25, dimana konfigurasi httpd ada pada /etc/httpd/conf.d/

    Mas Wildan boleh kasih saran pengesetan indico.conf?
    Kurang lebih msalahnya ada pada bagian akhir sepertidibawah ini. Ada clue?


    [tasrief@localhost conf.d]$ ls -l
    total 56
    -rw-r--r--. 1 root root 2893 Dec 22 10:22 autoindex.conf
    lrwxrwxrwx. 1 root root 27 Apr 7 16:54 indico.conf -> /opt/indico/etc/indico.conf
    -rw-r--r--. 1 root root 1279 Apr 7 11:23 indico.conf.BAK
    -rw-r--r--. 1 root root 344 Dec 22 10:19 manual.conf
    -rw-r--r--. 1 root root 1752 Jan 4 06:51 perl.conf
    -rw-r--r--. 1 root root 1426 Mar 15 03:32 php.conf
    -rw-r--r--. 1 nobody nobody 573 Feb 4 2016 postgresql-pgpoolAdmin.conf
    -rw-r--r--. 1 root root 366 Dec 22 10:38 README
    -rw-r--r--. 1 root root 298 Dec 20 05:21 squid.conf
    -rw-r--r--. 1 root root 9369 Dec 22 10:19 ssl.conf
    -rw-r--r--. 1 root root 1252 Dec 22 10:19 userdir.conf
    -rw-r--r--. 1 root root 302 Feb 5 2016 webalizer.conf
    -rw-r--r--. 1 root root 516 Dec 22 10:19 welcome.conf
    [tasrief@localhost conf.d]$ su
    Password:
    [root@localhost conf.d]# /sbin/service httpd restart

    Redirecting to /bin/systemctl restart httpd.service
    Job for httpd.service failed because the control process exited with error code.
    See "systemctl status httpd.service" and "journalctl -xe" for details.

    ReplyDelete
  3. Coba jalankan :

    systemctl status httpd.service

    dan atau/journalctl -xe

    Setelah proses restart httpd, nanti akan terlihat errornya.

    ReplyDelete