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