Optimization of District Heating Networks
OTHER License
.. image:: https://img.shields.io/pypi/v/pyodhean-server.svg :target: https://pypi.org/project/pyodhean-server/ :alt: Latest version
.. image:: https://img.shields.io/pypi/pyversions/pyodhean-server.svg :target: https://pypi.org/project/pyodhean-server/ :alt: Python versions
.. image:: https://img.shields.io/pypi/l/pyodhean-server.svg :target: https://github.com/sigopti/pyodhean-server/blob/master/LICENSE :alt: License
.. image:: https://dev.azure.com/sigopti/pyomo/_apis/build/status/sigopti.pyodhean-server?branchName=master :target: https://dev.azure.com/sigopti/pyomo/_build?definitionId=2 :alt: Build status
Optimization of District Heating Networks
This package provides the solver server.
It should be available from the package manager in most Linux distributions.
::
aptitude install redis
Install dependencies::
aptitude install make g++ gfortran pkgconf liblapack-dev
Use coinbrew to fetch and compile Ipopt and dependencies::
# Run as unprivileged user
git clone --depth=1 https://github.com/coin-or/coinbrew
cd coinbrew
./coinbrew Ipopt:releases/3.13.4 fetch
./coinbrew build Ipopt
Copy files to project directory::
cp -r ./coinbrew/dist /path/to/project/ipopt
Use pip::
pip install pyodhean-server
pyodhean-server supports Python >= 3.7.
Add path to ipopt to the PATH (should be added to .bashrc)::
export PATH=$PATH:/path/to/project/ipopt/bin/
Check ipopt is correctly installed::
ldd `which ipopt`
ipopt -v
Launch worker::
celery -A pyodhean_server worker
::
# Set FLASK_ENV variable
export FLASK_ENV=development
# Alternatively, use a .env file
echo "FLASK_ENV=development" > .env
# Run application
flask run
The following lines explain hwo to run pyodhean server with apache. They do not cover creating and using an SSL certificate.
Copy apache2 directory from docs/deployment/etc into /etc.
Create a pyodhean directory to hold the application files.
Create a Pyhton 3 virtual environment in the pyodhean directory::
virtualenv -p /usr/bin/python3 venv-pyodhean
Pull code from pyodhean and pyodhean-server repositories and install them in the virtual environment::
source venv-pyodhean/bin/activate
pip install ./pyodhean
pip install ./pyodhean-server
Copy files from docs/deployment/pyodhean into the pyodhean directory.
Customize them if needed. At least the path to the virtual environment must be specified.
Make sure settings.conf can be read by apache user::
chown root:www-data application/settings.conf
chmod 640 application/settings.conf
The pyodhean directory should look like this:::
pyodhean/
application/
application.wsgi
settings.conf
venv-pyodhean
pyodhean
pyodhean-server
Note: The pyodhean and pyodhean-server repositories can be stored anywhere. They do not have to be in the pyodhean directory.
Edit /etc/apache2/sites-available/pyodhean.conf.
Reload apache2.
The API should be available as https://domain.tld/api/v0/.
Create directories to store log files::
mkdir /var/log/pyodhean
chmod pyodhean:pyodhean /var/log/pyodhean
Create pyodhean user::
adduser --system --no-create-home --group pyodhean
Create log directory::
mkdir -m 755 /var/log/pyodhean-celery
chown pyodhean:pyodhean /var/log/pyodhean-celery
Copy systemd directory from docs/deployment/etc into /etc.
Edit pyodhean-celery configuration file to specify the paths.
/etc/systemd/system/pyodhean-celery.service.d/pyodhean-celery.conf
Start the service and enable it for automatic start on system startup::
systemctrl enable pyodhean-celery
systemctrl start pyodhean-celery
Copy logrotate.d directory from docs/deployment/etc into /etc.
Create a users DB file the apache user can read::
touch /path/to/project/users.db chown root:www-data /path/to/project/users.db chmod 640 /path/to/project/users.db
Add users to the DB file::
source venv-pyodhean/bin/activate
export FLASK_APP=pyodhean_server.app
flask add-user /path/to/project/users.db user password
Edit application configuration to enable authorization and pass users BD file::
AUTH_ENABLED=True AUTH_USERS=/path/to/project/users.db