virtual environments

This commit is contained in:
Wim Pomp
2025-03-26 16:24:45 +01:00
parent 46ead90ce2
commit fdd80ad956
5 changed files with 53 additions and 35 deletions

View File

@@ -2,21 +2,30 @@
Start proxied matlab instances from a webpage using Nginx.
## Preequisites
## Prerequisites
Linux with Matlab and Python3
## Installation
make matlabhub/config.py:
edit matlabhub/config.py:
license_file: 'path_to_license.lic'
port_range: [10000, 65536]
matlab-proxy-app: '/opt/matlabhub/venv/bin/matlab-proxy-app' # path to matlab-proxy-app in venv
edit ExecStart to point to gunicorn in python venv in matlab.service:
ExecStart=/opt/matlabhub/venv/bin/gunicorn --bind unix:/tmp/matlabhub.sock matlabhub.app:app
install:
sudo apt install nginx screen
sudo pip install matlabhub
sudo apt install nginx screen xvfb
curl -LsSf https://astral.sh/uv/install.sh | sh
. .bashrc
uv venv venv --python 3.11
. venv/bin/activate
pip install matlabhub
sudo cp matlab /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/matlab /etc/nginx/sites-enabled/matlab
sudo cp matlab.service /lib/systemd/system/

View File

@@ -6,7 +6,7 @@ Wants=network-online.target
[Service]
User=matlab-user
Type=simple
ExecStart=/usr/local/bin/gunicorn --bind unix:/tmp/matlabhub.sock matlabhub.app:app
ExecStart=/opt/matlabhub/venv/bin/gunicorn --bind unix:/tmp/matlabhub.sock matlabhub.app:app
ExecStop=/bin/kill -s STOP $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0

View File

@@ -1,12 +1,13 @@
import os
import sys
import random
import re
import socket
import subprocess
import random
import sys
from time import sleep
import yaml
from flask import Flask, redirect, render_template, request
from time import sleep
with open(os.path.join(os.path.dirname(__file__), 'config.yml')) as conf_file:
config = yaml.safe_load(conf_file)
@@ -25,7 +26,9 @@ class Matlab:
def start(self):
command = f'screen -S {self.screen_name} -d -m env MWI_BASE_URL="/{self.port}" ' \
f'MWI_APP_PORT={self.port} MLM_LICENSE_FILE={config["license_file"]} matlab-proxy-app'
f'MWI_APP_PORT={self.port} MLM_LICENSE_FILE={config["license_file"]} ' \
'MWI_ENABLE_TOKEN_AUTH="False" ' \
f'{config["matlab-proxy-app"]}'
subprocess.Popen(command, shell=True, start_new_session=True)
def stop(self):

32
pyproject.toml Normal file
View File

@@ -0,0 +1,32 @@
[project]
name = "matlabhub"
version = "2025.3.0"
description = "matlabhub"
authors = [
{ name = "W. Pomp", email = "w.pomp@nki.nl" }
]
license = { text = "GPL-3.0-or-later"}
readme = "README.md"
keywords = ["matlab", "hub", "proxy-app"]
include = ["templates/*", "config.yml"]
requires-python = ">=3.8"
dependencies = [
"flask",
"gunicorn",
"matlab-proxy",
"pyyaml",
]
[project.urls]
repository = "https://github.com/wimpomp/matlabhub"
[project.scripts]
matlabhub = "matlabhub:main"
[tool.isort]
line_length = 119
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

View File

@@ -1,26 +0,0 @@
import setuptools
with open('README.md', 'r') as fh:
long_description = fh.read()
setuptools.setup(
name='matlabhub',
version='2022.7.0',
author='Wim Pomp @ Lenstra lab NKI',
author_email='w.pomp@nki.nl',
description='matlabhub',
long_description=long_description,
long_description_content_type='text/markdown',
url='https://github.com/wimpomp/matlabhub',
packages=['matlabhub'],
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
'Operating System :: OS Independent',
],
python_requires='>=3.8',
install_requires=['matlab-proxy', 'flask', 'gunicorn', 'pyyaml'],
entry_points={'console_scripts': ['matlabhub=matlabhub:main'], },
package_data={'': ['templates/*', 'config.yml']},
include_package_data=True,
)