Skip to content
Snippets Groups Projects
Forked from Documentation / General documentation
342 commits behind the upstream repository.
install-sib-server.rst 4.39 KiB

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

Initiate the server with Docker

This is not intended to support production running.

Setup your SIB server

Create your packages.yml according to the documentation. Create the Dockerfile:

FROM python:3.6
ENV PATH="/root/.local/bin:${PATH}"
RUN pip install --user -U sib-manager
WORKDIR /opt
RUN cd /opt/ && sib startproject sib_server
ADD packages.yml /opt/sib_server/packages.yml
RUN cd /opt/sib_server && sib install sib_server
EXPOSE 8000
CMD cd /opt/sib_server && python manage.py runserver 0.0.0.0:8000

Build the image:

docker build -t sibserver .

Run the container:

docker run --rm -p 127.0.0.1:8000:8000 -d sibserver

Serve your client app

Launch a container from within your code folder:

docker run --rm -v $PWD:/code -w /code -u $UID -it -p 127.0.0.1:3000:3000 node npm install && npm run watch