From 9ad5201ae6a6c368bdccf6ff08cfb76898a3f6f5 Mon Sep 17 00:00:00 2001 From: Rolf Niepraschk <Rolf.Niepraschk@ptb.de> Date: Wed, 13 Jan 2021 08:15:48 +0100 Subject: [PATCH] Better installation --- README.md | 6 ++ install | 12 ++- requirements.in | 3 + server | 1 - setup.py | 212 ------------------------------------------------ 5 files changed, 18 insertions(+), 216 deletions(-) create mode 100644 requirements.in delete mode 100644 setup.py diff --git a/README.md b/README.md index 4c78389..06d9b44 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ # Webapps Deliverer +## preliminary + +``` +sudo apt install python3-pip # openSUSE: sudo zypper in python3-pip +``` + Flask based web server for delivering file contents of the vaclab web applications. A proxy is also offered: diff --git a/install b/install index 1632d29..9559720 100755 --- a/install +++ b/install @@ -1,5 +1,5 @@ #! /bin/bash -# Rolf Niepraschk (Rolf.Niepraschk@ptb.de), 2020-11-11 +# Rolf Niepraschk (Rolf.Niepraschk@ptb.de), 2021-01-13 # Verteilt webapps-deliverer-Dateien zum Ziel-Rechnern per "rsync" und # aktiviert den webapps-deliverer-Prozess dort. @@ -19,7 +19,7 @@ FILE_LIST="./files.dat" DEST_USER=nobody DEST_GROUP=nobody -FILES="README.md server server.py setup.py webapps-deliverer.service" +FILES="README.md server server.py requirements.in webapps-deliverer.service" rm -rf ${FILE_LIST} for f in ${FILES} ; do @@ -30,8 +30,14 @@ rsync --info=STATS1 -azvL --delete --keep-dirlinks \ --files-from=${FILE_LIST} ../ root@${TARGET_HOST}:${DEST_PATH} ssh root@${TARGET_HOST} /bin/bash -l <<EOF -chown -R ${DEST_USER}.${DEST_GROUP} ${TARGET_PATH} cd ${TARGET_PATH} +python3 -m venv ./ +source bin/activate +pip3 install pip-tools +pip-compile --output-file=requirements.txt requirements.in +pip3 install -r requirements.txt +deactivate +chown -R ${DEST_USER}.${DEST_GROUP} ${TARGET_PATH} systemctl link \$PWD/webapps-deliverer.service systemctl enable webapps-deliverer.service systemctl daemon-reload diff --git a/requirements.in b/requirements.in new file mode 100644 index 0000000..0f975b9 --- /dev/null +++ b/requirements.in @@ -0,0 +1,3 @@ +flask +flask_cors +requests diff --git a/server b/server index c624d37..d54ff7d 100755 --- a/server +++ b/server @@ -17,6 +17,5 @@ FLASK_DEBUG=${4:-1} python3 -m venv ./ source bin/activate -pip3 install -e ./ python3 server.py "$1" "$2" "$3" "$4" diff --git a/setup.py b/setup.py deleted file mode 100644 index 40b2b1e..0000000 --- a/setup.py +++ /dev/null @@ -1,212 +0,0 @@ -"""A setuptools based setup module. - -See: -https://packaging.python.org/guides/distributing-packages-using-setuptools/ -https://github.com/pypa/sampleproject -""" - -# Always prefer setuptools over distutils -from setuptools import setup, find_packages -import pathlib - -here = pathlib.Path(__file__).parent.resolve() - -# Get the long description from the README file -long_description = (here / 'README.md').read_text(encoding='utf-8') - -# Arguments marked as "Required" below must be included for upload to PyPI. -# Fields marked as "Optional" may be commented out. - -setup( - # This is the name of your project. The first time you publish this - # package, this name will be registered for you. It will determine how - # users can install this project, e.g.: - # - # $ pip install sampleproject - # - # And where it will live on PyPI: https://pypi.org/project/sampleproject/ - # - # There are some restrictions on what makes a valid project name - # specification here: - # https://packaging.python.org/specifications/core-metadata/#name - name='webapps-deliverer', # Required - - # Versions should comply with PEP 440: - # https://www.python.org/dev/peps/pep-0440/ - # - # For a discussion on single-sourcing the version across setup.py and the - # project code, see - # https://packaging.python.org/en/latest/single_source_version.html - version='0.0.0', # Required - - # This is a one-line description or tagline of what your project does. This - # corresponds to the "Summary" metadata field: - # https://packaging.python.org/specifications/core-metadata/#summary - description='Webapps server and proxy', # Optional - - # This is an optional longer description of your project that represents - # the body of text which users will see when they visit PyPI. - # - # Often, this is the same as your README, so you can just read it in from - # that file directly (as we have already done above) - # - # This field corresponds to the "Description" metadata field: - # https://packaging.python.org/specifications/core-metadata/#description-optional - long_description=long_description, # Optional - - # Denotes that our long_description is in Markdown; valid values are - # text/plain, text/x-rst, and text/markdown - # - # Optional if long_description is written in reStructuredText (rst) but - # required for plain-text or Markdown; if unspecified, "applications should - # attempt to render [the long_description] as text/x-rst; charset=UTF-8 and - # fall back to text/plain if it is not valid rst" (see link below) - # - # This field corresponds to the "Description-Content-Type" metadata field: - # https://packaging.python.org/specifications/core-metadata/#description-content-type-optional - long_description_content_type='text/markdown', # Optional (see note above) - - # This should be a valid link to your project's main homepage. - # - # This field corresponds to the "Home-Page" metadata field: - # https://packaging.python.org/specifications/core-metadata/#home-page-optional - url='https://a75436.berlin.ptb.de/vaclab/webapps-deliverer', # Optional - - # This should be your name or the name of the organization which owns the - # project. - author='Rolf Niepraschk', # Optional - - # This should be a valid email address corresponding to the author listed - # above. - author_email='Rolf.Niepraschk@ptb.de', # Optional - - # Classifiers help users find your project by categorizing it. - # - # For a list of valid classifiers, see https://pypi.org/classifiers/ - classifiers=[ # Optional - # How mature is this project? Common values are - # 3 - Alpha - # 4 - Beta - # 5 - Production/Stable - 'Development Status :: 3 - Alpha', - - # Indicate who your project is intended for - 'Intended Audience :: Developers', - 'Topic :: Software Development :: Build Tools', - - # Pick your license as you wish - 'License :: OSI Approved :: MIT License', - - # Specify the Python versions you support here. In particular, ensure - # that you indicate you support Python 3. These classifiers are *not* - # checked by 'pip install'. See instead 'python_requires' below. - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3 :: Only', - ], - - # This field adds keywords for your project which will appear on the - # project page. What does your project relate to? - # - # Note that this is a list of additional keywords, separated - # by commas, to be used to assist searching for the distribution in a - # larger catalog. - keywords='xml, xsd, dcc', # Optional - - # When your source code is in a subdirectory under the project root, e.g. - # `src/`, it is necessary to specify the `package_dir` argument. - ### package_dir={'': 'src'}, # Optional - - # You can just specify package directories manually here if your project is - # simple. Or you can use find_packages(). - # - # Alternatively, if you just want to distribute a single Python file, use - # the `py_modules` argument instead as follows, which will expect a file - # called `my_module.py` to exist: - # - # py_modules=["my_module"], - # - packages=find_packages(exclude=['bin', - 'examples', - 'include', - 'Kritik', - 'templates', - 'tmp' - ]), - - # Specify which Python versions you support. In contrast to the - # 'Programming Language' classifiers above, 'pip install' will check this - # and refuse to install the project if the version does not match. See - # https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires - python_requires='>=3.5, <4', - - # This field lists other packages that your project depends on to run. - # Any package you put here will be installed by pip when your project is - # installed, so they must be valid existing projects. - # - # For an analysis of "install_requires" vs pip's requirements files see: - # https://packaging.python.org/en/latest/requirements.html - ### install_requires=['peppercorn'], # Optional - - install_requires=[ - 'requests', - 'flask', - 'flask-cors' - ], - - # List additional groups of dependencies here (e.g. development - # dependencies). Users will be able to install these using the "extras" - # syntax, for example: - # - # $ pip install sampleproject[dev] - # - # Similar to `install_requires` above, these must be valid existing - # projects. - #extras_require={ # Optional - # 'dev': ['check-manifest'], - # 'test': ['coverage'], - #}, - - # If there are data files included in your packages that need to be - # installed, specify them here. - #package_data={ # Optional - # 'sample': ['package_data.dat'], - #}, - - # Although 'package_data' is the preferred approach, in some case you may - # need to place data files outside of your packages. See: - # http://docs.python.org/distutils/setupscript.html#installing-additional-files - # - # In this case, 'data_file' will be installed into '<sys.prefix>/my_data' - #data_files=[('my_data', ['data/data_file'])], # Optional - - # To provide executable scripts, use entry points in preference to the - # "scripts" keyword. Entry points provide cross-platform support and allow - # `pip` to create the appropriate form of executable for the target - # platform. - # - # For example, the following would provide a command called `sample` which - # executes the function `main` from this package when invoked: - #entry_points={ # Optional - # 'console_scripts': [ - # 'sample=sample:main', - # ], - #}, - - # List additional URLs that are relevant to your project as a dict. - # - # This field corresponds to the "Project-URL" metadata fields: - # https://packaging.python.org/specifications/core-metadata/#project-url-multiple-use - # - # Examples listed include a pattern for specifying where the package tracks - # issues, where the source is hosted, where to say thanks to the package - # maintainers, and where to support the project financially. The key is - # what's used to render the link text on PyPI. - project_urls={ # Optional - 'Bug Reports': 'https://a75436.berlin.ptb.de/vaclab/webapps-deliverer/-/issues', - 'Source': 'https://a75436.berlin.ptb.de/vaclab/webapps-deliverer' - }, -) -- GitLab