How to install a SIB server
===========================

Requirements
------------

The SIB server requires:

-  python 3.6
-  postgresql database (for production)

Initiate the server
-------------------

From a fresh environment, get the last version of the ``sib-manager``:

::

   $ python -m pip install -U sib-manager

Create a project structure from a production template:

::

   $ sib startproject sibserver --production
   $ cd sibserver

For a development server remove the ``--production`` flag.

Configure your LDP packages
---------------------------

The configuration of the packages goes in ``packages.yml`` file in the
``ldppackages`` section. Those following ones are given as an example.
Yours depend on what your app does.

::

   ldppackages:
     djangoldp_circle: djangoldp_circle
     djangoldp_account: djangoldp_account
     djangoldp_profile: djangoldp_profile
     oidc_provider: 'git+https://github.com/jblemee/django-oidc-provider.git@develop'

Details about ``packages.yml`` format are given in the template file.

Configure your server parameters
--------------------------------

The ``packages.yml`` files is also use to provide parameters to the
server itself.

Configure the server parameters in the ``packages.yml``:

::

   server:
     site_url: 'http://localhost:8000'
     admin_email: admin@example.org
     admin_name: admin
     admin_pass: admin

This configuration works for a local development server but for a
production instance you need to setup a postgresql database and
configure dependent services:

::

   server:
     site_url: 'https://api.batman.happy-dev.fr'
     allowed_hosts:
       - api.batman.happy-dev.fr
     db_host: postgresql-batman.happy-dev.fr
     db_name: batman_db
     db_user: batman
     db_pass: changeit
     smtp_host: smtp-batman.happy-dev.fr
     smtp_user: batman
     smtp_pass: changeit
     admin_email: admin@example.org
     admin_name: admin
     admin_pass: changeit
     xmpp_url: 'https://jabber.happy-dev.fr'
     jabber_host: 'happy-dev.fr'

Launch the installation
-----------------------

Install/update the project:

::

   $ sib install server

Launch the server
-----------------

Run the server in development:

::

   $ python manage.py runserver 0.0.0.0:8000

To *launch the server in production*:

-  you have to install the static files with
   ``python manage.py collectstatic``
-  and you have to configure your python server to server the script:
   ``wsgi.py`` on the URL ``api.batman.happy-dev.fr/``.

Tips & tricks
-------------

Activate debug mode
^^^^^^^^^^^^^^^^^^^

To activate the debug mode (default in development) you can override
manually the ``DEBUG`` variable in the ``settings.py``

Install the server as a subfolder URL
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This method isn’t officially supported and requires to change values in
the core configuration.

To setup the SIB server on a subfolder
``https://batman.happy-dev.fr/api`` you have to manually override the
configuration in the ``settings.py``:

::

   BASE_URL = 'https://batman.happy-dev.fr'
   SITE_URL = 'https://batman.happy-dev.fr/api'
   STATIC_URL = '/api/static/'

and URLs in ``urls.py``:

::

   urlpatterns = [
       url(r'^api/', include('djangoldp.urls')),
       url(r'^api/admin/', admin.site.urls),
   ]

Note: Alwaysdata static config ``/api/static/=/static/``