-
Alice Poggioli authoredAlice Poggioli authored
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