How to install a SIB server¶
What is behind SiB server ?¶
Our solution is based on Django and named DjangoLDP, adapted to be compatible with Linked Datas convention.
Go to Server Architecture to know more about it.
Initiate the server¶
Note
If you’re working on many project in Python, we advice you to use a virtual environement.
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.
now your architecture should look like :
sibserver/
server/
__init__.py
settings.py
urls.py
wsgi.py
manage.py
packages.yml
For more detail, go to the official Django project documentation.
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.
Here you have :
If the description of the available packages is unclear, open an issue to ask for more description.
ldppackages:
djangoldp_account: djangoldp_account
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
registration_open: True
xmpp_url: 'https://jabber.localhost'
jabber_host: 'jabber.localhost'
default_client: 'http://localhost:3000'
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'
Make your migration¶
python manage.py migrate
Create your super user¶
python manage.py createsuperuser
Follow the instructions you get in your terminal.
Launch the server¶
Run the server in development:
python manage.py runserver
Then go to http://127.0.0.1:8000/admin/ to acces to your Django administration.
Enter the identifier you’ve just created and you shoud see the Django admin.
Warning
In some case, you could get this kind of error : no such table: djangoldp_xyz_abc. Enter this command to solve it : python3 manage.py migrate - -run-syncdb
You should be able to get you api at http://localhost:8000/abc/ where abc is the model of data you want to get.
To update the installation¶
Install/update the project:
sib install sibserver
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/.
If you have any problem, tell us reporting it in an issue. Thanks!
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