Merge pull request #5014 from normanjaeckel/Development-File
Changed DEVELOPMENT.rst.
This commit is contained in:
commit
d5cfdd24e6
@ -2,8 +2,7 @@
|
|||||||
OpenSlides Development
|
OpenSlides Development
|
||||||
========================
|
========================
|
||||||
|
|
||||||
If you want to contribute to OpenSlides, have a look at `OpenSlides website
|
This instruction helps you to setup a development environment for OpenSlides.
|
||||||
<https://openslides.org/>`_ and write us an email.
|
|
||||||
|
|
||||||
|
|
||||||
Installation and start of the development version
|
Installation and start of the development version
|
||||||
@ -16,9 +15,9 @@ a. Check requirements
|
|||||||
'''''''''''''''''''''
|
'''''''''''''''''''''
|
||||||
|
|
||||||
Make sure that you have installed `Python (>= 3.6) <https://www.python.org/>`_,
|
Make sure that you have installed `Python (>= 3.6) <https://www.python.org/>`_,
|
||||||
`Node.js (>=10.x) <https://nodejs.org/>`_ and
|
`Node.js (>=10.x) <https://nodejs.org/>`_ and `Git <http://git-scm.com/>`_ on
|
||||||
`Git <http://git-scm.com/>`_ on your system. You also need build-essential
|
your system. You also need build-essential packages and header files and a
|
||||||
packages and header files and a static library for Python.
|
static library for Python.
|
||||||
|
|
||||||
For Debian based systems (Ubuntu, etc) run::
|
For Debian based systems (Ubuntu, etc) run::
|
||||||
|
|
||||||
@ -61,8 +60,8 @@ To get help on the command line options run::
|
|||||||
|
|
||||||
Later you might want to restart the server with one of the following commands.
|
Later you might want to restart the server with one of the following commands.
|
||||||
|
|
||||||
To start OpenSlides with Daphne and to avoid opening new browser
|
To start OpenSlides with this command and to avoid opening new browser windows
|
||||||
windows run::
|
run::
|
||||||
|
|
||||||
$ python manage.py start --no-browser
|
$ python manage.py start --no-browser
|
||||||
|
|
||||||
@ -71,25 +70,22 @@ When debugging something email related change the email backend to console::
|
|||||||
$ python manage.py start --debug-email
|
$ python manage.py start --debug-email
|
||||||
|
|
||||||
|
|
||||||
d.a Debugging the Server
|
e. Debugging the server
|
||||||
''''''''''''''''''''''''
|
'''''''''''''''''''''''
|
||||||
|
|
||||||
If you wish to have even further debugging, enable `django-extensions
|
If you wish to have even further debugging, enable `django-extensions
|
||||||
<https://django-extensions.readthedocs.io/>`_,
|
<https://django-extensions.readthedocs.io/>`_ in the ``settings.py`` by adding
|
||||||
in the ``settings.py`` by adding ``django_extensions`` to the list of
|
``django_extensions`` to the list of ``INSTALLED_PLLUGINS``. Make sure, you
|
||||||
``INSTALLED_PLLUGINS``. Make sure, you add the following lines to your
|
install the following packages::
|
||||||
``requirements/development.txt``::
|
|
||||||
|
|
||||||
Werkzeug
|
$ pip install Werkzeug pyparsing pydot django-extensions
|
||||||
pyparsing
|
|
||||||
pydot
|
|
||||||
django-extensions
|
|
||||||
|
|
||||||
and install them via pip. You can start the enhanced debugging-server via::
|
You can start the enhanced debugging-server via::
|
||||||
|
|
||||||
$ python manage.py runserver_plus
|
$ python manage.py runserver_plus
|
||||||
|
|
||||||
e. Setup and start the client
|
|
||||||
|
f. Setup and start the client
|
||||||
'''''''''''''''''''''''''''''
|
'''''''''''''''''''''''''''''
|
||||||
|
|
||||||
Go in the client's directory in a second command-line interface::
|
Go in the client's directory in a second command-line interface::
|
||||||
@ -108,7 +104,7 @@ If you want to provide the client statically, you can build it via::
|
|||||||
$ npm run build
|
$ npm run build
|
||||||
|
|
||||||
The build client files are availible from the root directory in
|
The build client files are availible from the root directory in
|
||||||
``openslides/static`` and can be provided via ``nginx`` (Point 4).
|
``openslides/static`` and can be provided via NGINX.
|
||||||
|
|
||||||
|
|
||||||
2. Installation on Windows
|
2. Installation on Windows
|
||||||
@ -123,10 +119,10 @@ installer is required even on a 64-bit Windows system. If you use the 64-bit
|
|||||||
installer, step d. of the instruction might fail unless you installed some
|
installer, step d. of the instruction might fail unless you installed some
|
||||||
packages manually.
|
packages manually.
|
||||||
|
|
||||||
You have to install `MS Visual C++ 2015 build tools
|
In some cases you have to install `MS Visual C++ 2015 build tools
|
||||||
<https://www.microsoft.com/en-us/download/details.aspx?id=48159>`_ before you
|
<https://www.microsoft.com/en-us/download/details.aspx?id=48159>`_ before you
|
||||||
install the required python packages for OpenSlides (unfortunately Twisted
|
install the required python packages for OpenSlides (unfortunately Twisted
|
||||||
16.6.x needs it).
|
needs it).
|
||||||
|
|
||||||
To setup and activate the virtual environment in step c. use::
|
To setup and activate the virtual environment in step c. use::
|
||||||
|
|
||||||
@ -144,7 +140,8 @@ a. Running server tests
|
|||||||
To run some server tests see `.travis.yml
|
To run some server tests see `.travis.yml
|
||||||
<https://github.com/OpenSlides/OpenSlides/blob/master/.travis.yml>`_.
|
<https://github.com/OpenSlides/OpenSlides/blob/master/.travis.yml>`_.
|
||||||
|
|
||||||
You can generate an class-structure image, when having `django_extensions` enabled (see above)
|
You can generate an class-structure image when having `django_extensions`
|
||||||
|
enabled (see above)::
|
||||||
|
|
||||||
$ python manage.py graph_models -a -g -o my_project_visualized.png
|
$ python manage.py graph_models -a -g -o my_project_visualized.png
|
||||||
|
|
||||||
@ -159,22 +156,24 @@ client tests::
|
|||||||
|
|
||||||
Fix the code format and lint it with::
|
Fix the code format and lint it with::
|
||||||
|
|
||||||
npm run prettify-write
|
$ npm run prettify-write
|
||||||
npm run lint
|
$ npm run lint
|
||||||
|
|
||||||
To extract translations run::
|
To extract translations run::
|
||||||
|
|
||||||
$ npm run extract
|
$ npm run extract
|
||||||
|
|
||||||
When updating, adding or changing used packages from npm, please update the README.md using following command::
|
When updating, adding or changing used packages from npm, please update the
|
||||||
|
README.md using following command::
|
||||||
|
|
||||||
$ npm run licenses
|
$ npm run licenses
|
||||||
|
|
||||||
|
|
||||||
OpenSlides in big mode
|
OpenSlides in big mode
|
||||||
======================
|
======================
|
||||||
|
|
||||||
In the so called big mode you should use OpenSlides with Redis, PostgreSQL and
|
In the so called big mode you should use OpenSlides with Redis, PostgreSQL and
|
||||||
a webserver like Apache HTTP Server or nginx as proxy server in front of your
|
a webserver like Apache HTTP Server or NGINX as proxy server in front of your
|
||||||
OpenSlides interface server.
|
OpenSlides interface server.
|
||||||
|
|
||||||
|
|
||||||
@ -182,20 +181,19 @@ OpenSlides interface server.
|
|||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
Install `PostgreSQL <https://www.postgresql.org/>`_ and `Redis
|
Install `PostgreSQL <https://www.postgresql.org/>`_ and `Redis
|
||||||
<https://redis.io/>`_. For Ubuntu 16.04 e. g. run::
|
<https://redis.io/>`_. For Ubuntu 18.04 e. g. run::
|
||||||
|
|
||||||
$ sudo apt-get install postgresql libpq-dev redis-server
|
$ sudo apt-get install postgresql libpq-dev redis-server
|
||||||
|
|
||||||
Be sure that database and redis server is running. For Ubuntu 16.04 e. g. this
|
Be sure that database and redis server is running. For Ubuntu 18.04 e. g. this
|
||||||
was done automatically if you used the package manager.
|
was done automatically if you used the package manager.
|
||||||
|
|
||||||
Then add database user and database. For Ubuntu 16.04 e. g. run::
|
Then add database user and database. For Ubuntu 18.04 e. g. run::
|
||||||
|
|
||||||
$ sudo -u postgres createuser --pwprompt --createdb openslides
|
$ sudo -u postgres createuser --pwprompt --createdb openslides
|
||||||
$ sudo -u postgres createdb --owner=openslides openslides
|
$ sudo -u postgres createdb --owner=openslides openslides
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2. Change OpenSlides settings
|
2. Change OpenSlides settings
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
@ -215,23 +213,26 @@ Populate your new database::
|
|||||||
3. Run OpenSlides
|
3. Run OpenSlides
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
To start Daphne, run::
|
To start Daphne run::
|
||||||
|
|
||||||
$ export DJANGO_SETTINGS_MODULE=settings
|
$ export DJANGO_SETTINGS_MODULE=settings
|
||||||
$ export PYTHONPATH=personal_data/var/
|
$ export PYTHONPATH=personal_data/var/
|
||||||
$ daphne -b 0.0.0.0 -p 8000 openslides.asgi:application
|
$ daphne -b 0.0.0.0 -p 8000 openslides.asgi:application
|
||||||
|
|
||||||
The last line may be interchangeable with gunicorn and uvicorn as protocol server::
|
The last line may be interchangeable with gunicorn and uvicorn as protocol
|
||||||
|
server::
|
||||||
|
|
||||||
$ gunicorn -w 4 -b 0.0.0.0:8000 -k uvicorn.workers.UvicornWorker openslides.asgi:application
|
$ gunicorn -w 4 -b 0.0.0.0:8000 -k uvicorn.workers.UvicornWorker openslides.asgi:application
|
||||||
|
|
||||||
4. Use Nginx (optional)
|
|
||||||
|
4. Use NGINX (optional)
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
When using Nginx as a proxy for delivering static files the performance of the
|
When using NGINX as a proxy for delivering static files the performance of the
|
||||||
setup will increase.
|
setup will increase.
|
||||||
|
|
||||||
This is an example ``nginx.conf`` configuration for Daphne listing on port 8000::
|
This is an example ``nginx.conf`` configuration for Daphne listing on port
|
||||||
|
8000::
|
||||||
|
|
||||||
worker_processes 1;
|
worker_processes 1;
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ The `settings.py` is just an extension for Django settings. Please visit the
|
|||||||
<https://docs.djangoproject.com/en/2.2/ref/settings/>`_ to get an overview about
|
<https://docs.djangoproject.com/en/2.2/ref/settings/>`_ to get an overview about
|
||||||
all existing settings.
|
all existing settings.
|
||||||
|
|
||||||
|
|
||||||
SECURITY
|
SECURITY
|
||||||
========
|
========
|
||||||
|
|
||||||
@ -32,6 +33,7 @@ validator. See `django auth docs
|
|||||||
<https://docs.djangoproject.com/en/2.2/topics/auth/passwords/#module-django.contrib.auth.password_validation>`_
|
<https://docs.djangoproject.com/en/2.2/topics/auth/passwords/#module-django.contrib.auth.password_validation>`_
|
||||||
for mor information.
|
for mor information.
|
||||||
|
|
||||||
|
|
||||||
Directories
|
Directories
|
||||||
===========
|
===========
|
||||||
|
|
||||||
@ -45,6 +47,7 @@ is not delivered by the server anymore, these settings are obsolete.
|
|||||||
`MEDIA_ROOT`: The location of mediafiles. The default is a `media` folder inside
|
`MEDIA_ROOT`: The location of mediafiles. The default is a `media` folder inside
|
||||||
`OPENSLIDES_USER_DATA_DIR`, but can be altered to another path.
|
`OPENSLIDES_USER_DATA_DIR`, but can be altered to another path.
|
||||||
|
|
||||||
|
|
||||||
Email
|
Email
|
||||||
=====
|
=====
|
||||||
|
|
||||||
@ -87,6 +90,7 @@ default::
|
|||||||
With the environment variable `OPENSLIDES_LOG_LEVEL` the level can be adjusted
|
With the environment variable `OPENSLIDES_LOG_LEVEL` the level can be adjusted
|
||||||
without changing the `settings.py`.
|
without changing the `settings.py`.
|
||||||
|
|
||||||
|
|
||||||
Big mode and caching
|
Big mode and caching
|
||||||
====================
|
====================
|
||||||
|
|
||||||
@ -119,4 +123,3 @@ not affect the client.
|
|||||||
operator is in one of these groups, the client disconnected and reconnects again.
|
operator is in one of these groups, the client disconnected and reconnects again.
|
||||||
All requests urls (including websockets) are now prefixed with `/prioritize`, so
|
All requests urls (including websockets) are now prefixed with `/prioritize`, so
|
||||||
these requests from "prioritized clients" can be routed to different servers.
|
these requests from "prioritized clients" can be routed to different servers.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user