Python astra linux special edition

Запуск Django-приложений через mod_python в Astra Linux SE

Статья не завершена. Окончательный вид она примет только после проверки работоспособности предложенного метода авторизации в реальных условиях.

Запуск Python-Web-приложений в Astra Linux

В Astra Linux до версии 1.6 не было иного способа нормального запуска Web-приложений, написанных на Python, кроме mod_python . В настоящее время самый популярный способ — WSGI , однако, в сертифицированных версиях Astra Linux SE (1.4, 1.5) есть только указанный выше модуль для Apache. Безусловно, есть и третий способ — запуск приложения в отладочном режиме через вот эту команду:

python manage.py runserver

Надо ли объяснять, что делать так не нужно?

Итак, задачи, решение которых я предлагаю в этой статье:

  • Настройка Apache для работы в рамках ALD (Astra Linux Domain)
  • Настройка виртуального хоста для Django-приложения
  • Авторизация в приложении Django через ALD/Kerberos

Настройка ALD и Apache

Если кому-то покажется, что далее идёт пересказ официальной инструкции для администратора, то вам не кажется — взято отсюда.

Установка необходимых модулей Apache.

Устанавливаем два модуля Apache (считаем, что Apache уже установлен на сервере).

apt-get install libapache2-auth-mod-kerb libapache2-mod-python

Включаем эти модули и перезапускаем WEB-сервер:

a2dismod auth_pam a2enmod python a2enmod auth_kerb

Настройка ALD.

Теперь нужно настроить сервер таким образом, чтобы клиенты, подключающиеся в рамках сессии ALD, прозрачно авторизовались на сервере. В инструкции всё описано, лишь немного постараюсь прояснить моменты, которые у меня вызвали вопросы.

Создадим принципала в ALD и добавим его в группу mac

ald-admin service-add HTTP/server.domain.lan ald-admin sgroup-svc-add HTTP/server.domain.lan --sgroup=mac

Теперь создадим файл ключа Kerberos и дадим права на него пользователю www-data .

KEYTAB="/etc/apache2/keytab" ald-client update-svc-keytab HTTP/server.domain.lan --ktfile=$KEYTAB chown www:data $KEYTAB chmod 644 $KEYTAB

Теперь можно перезапустить WEB-сервер:

Создание виртуального хоста Apache.

Подготовительные операции выполнены, на клиентах Firefox настроен на использование GSS API для авторизации ( about:config , потом в параметр network.negotiate-auth.delegation-uris вписываем http://,https:// ). Самое время создать виртуальный хост для нашего Django-проекта, лежащего в каталоге /var/www/site/ .

 ServerName server.domain.lan ServerAdmin useradmin@domain.lan DocumentRoot /var/www/site AddDefaultCharset utf-8 Options -Indexes FollowSymLinks -MultiViews AllowOverride None AuthType Kerberos KrbAuthRealms DOMAIN.LAN KrbServiceName HTTP/server.domain.lan Krb5Keytab /etc/apache2/keytab KrbMethodNegotiate on KrbMethodK5Passwd off KrbSaveCredentials on require valid-user Order deny,allow Allow from all SetHandler python-program PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE site.settings PythonOption diango.root /var/www/site PythonPath "['/var/www/site/',] + sys.path" PythonAutoReload On SetHandler None SetHandler None SetHandler None ErrorLog /var/www/site/log/error.log LogLevel warn SetEnfIf Request_URI "\.jpg$|\.gif$|\.css$|\.js" is_static CustomLog /var/www/site/log/access.log combined env=!is_static # Убрать лишнее из логов доступа, например, статику 

Не забываем включить наш сайт в список разрешенных:

a2ensite astra-django-project service apache2 reload

Побочные эффекты

Возможно, у меня руки кривые, или я чего-то не знаю, но есть некоторые факты, которым я не нахожу другого объяснения, например, откусывание заголовков HTTP сервером Apache. Допустим, у нас есть вот такой код:

# -*- coding: utf-8 -*- u"""Виды для обработки данных абонентов.""" from django.shortcuts import get_object_or_404 from django.views.generic import View from abonent.models import Abonent from rest.responses import JsonResponse from .serializers import AbonentSimpleSerializer class AbonentRootView(View): def get(self, request): u""" Именно здесь происходит сериализация модели в JSON. Возвращаемый объект - JsonResponse. """ root_abonent = Abonent.objects.filter(parent=None)[0] serializer = AbonentSimpleSerializer() response = JsonResponse(< "items": [ serializer.serialize(root_abonent), ], "total": 1 >) # Тут задаем заголовки, чтобы библиотека dgrid могла с ними работать # Не надо смотреть на цифры, они сейчас не имеют значения (просто пример) response["Content-Range"] = "items: 1-1/1" return response

Не суть важно, как происходит сериализация (сериализатор возвращает словарь), важно то, что происходит в строке, где устанавливается заголовок ответа Content-Range . Если запустить отладочный сервер, то в заголовках ответа мы его увидим. Если выполнять этот же код с помощью Apache, т. е. так, как я выше написал, заголовок будет просто выброшен. Как это лечить в Astra Linux 1.4, я не знаю. Но, например, при использовании библиотеки DStore использовать свойство useRangeHeaders будет нельзя. Т. е. и DGrid тоже работать не будет, нужно помимо свойства items передавать ещё и total . Не такая уж большая проблема, но под определение подводного камня подходит хорошо.

Читайте также:  Get process status linux

Источник

Установка Python 2.7

Есть некоторый софт, который требует питон версии 2.7.

Как понят питона этой версии в репах нет вообще(

Подскажите как поставить питон версии 2.7. И возможно ли это вообще?

azm9s

New member

а в чем проблема завести его на 3 версии? различий там не так много, а библиотек на 3ю версию в астре больше чем на 2.7.

функцию print переделать из print blablabla в print(blablalbla).

azm9s

New member

Montfer

New member

Ustudorin

New member
support@astra:~$ lsb_release -a No LSB modules are available. Distributor ID: AstraLinux Description: Astra Linux 1.6 (Smolensk) Release: 1.6 Codename: smolensk support@astra:~$ python3 python3 python3.5 python3.5m python3m support@astra:~$ python -bash: python: команда не найдена support@astra:~$ python3 --version Python 3.5.3 support@astra:~$

Ок. Думаю, ну может из сорцов собрать

wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz && tar -xvf Python-2.7.13.tar.xz && cd Python-2.7.13 && ./configure && sudo make && sudo make install &&
checking for gcc. no checking for cc. no checking for cl.exe. no configure: error: in `/home/support/Python-2.7.13': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details

Montfer

New member

интересно вы даете инфу:
просил написать про апдейт, а не про систему, и просил дать вывод команды python —version, а не python и python3

azm9s

New member

azm9s

New member

Ustudorin

New member

Если файла /etc/astra_update_version (для ОСAstra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5) — /etc/astra-update-version) нет — значит оперативное обновление не было установлено.

root@astra:/home/support# uname -a Linux astra 4.15.3-1-generic #astra17 SMP Mon Feb 25 18:18:04 UTC 2019 x86_64 GNU/Linux

Ну это в байт коде просто — в .pyc

Читайте также:  Как включить брандмауэр линукс

azm9s

New member

dpkg -i /home/user/python2.7_as*blablabla.deb

и так со всеми либами к 2.7 которые идут не в составе основного установочного пакета.

azm9s

New member

azm9s

New member

azm9s

New member

Montfer

New member

так нету ее там. Есть только python3
Посмотреть вложение 1967

root@astra:/home/support# uname -a Linux astra 4.15.3-1-generic #astra17 SMP Mon Feb 25 18:18:04 UTC 2019 x86_64 GNU/Linux

Ну это в байт коде просто — в .pyc

Можно поподробней пожалуйста

azm9s

New member

Montfer

New member

Ustudorin

New member

Montfer

New member

Вложения

Screenshot_20220117_171211.jpg

oko

New member

to Montfer
Справедливости ради, топикстартер вам лог привел, где видно, что «python —version» (и с любыми иными ключами) отрабатывать не будет по причине отсутствия/замены в его системе на python3. Что явно выше 2.7 версии, нужной топикстартеру.

to Ustudorin
На диске разработчика проверьте наличие python2.7 — в main-релизе (который DVD-диск основной поставки) его может и не быть. И, если найдете, то для начала определитесь с текущим релизом/апдейтом (+1 к тов. azm9s на тему update_version). А далее читайте wiki по установке обновлений main-репозитория и dev-репозитория. Чтобы не поломать зависимости.

Montfer

New member

to Montfer
Справедливости ради, топикстартер вам лог привел, где видно, что «python —version» (и с любыми иными ключами) отрабатывать не будет по причине отсутствия/замены в его системе на python3. Что явно выше 2.7 версии, нужной топикстартеру.

to Ustudorin
На диске разработчика проверьте наличие python2.7 — в main-релизе (который DVD-диск основной поставки) его может и не быть. И, если найдете, то для начала определитесь с текущим релизом/апдейтом (+1 к тов. azm9s на тему update_version). А далее читайте wiki по установке обновлений main-репозитория и dev-репозитория. Чтобы не поломать зависимости.

Источник

Добавление библиотек глубокого обучения для разработки программ на языке Python

Для размещения библиотек требуется примерно 6.5ГБ дискового пространства.

Для установки библиотек требуются привилегии суперпользователя (sudo) (для Astra Linux Special Edition — суперпользователя с высоким уровнем целостности).

Читайте также:  Linux файл настройки сетевой карты

В данной статье описывается установка следующего ПО:

  • Anaconda — дистрибутив языков программирования Python и R, включающий набор популярных свободных библиотек, объединённых проблематиками науки о данных и машинного обучения;
  • TensorFlow — открытая программная библиотека для машинного обучения, разработанная компанией Google для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов;
  • Keras — открытая нейросетевая библиотека, написанная на языке Python. Она представляет собой надстройку над фреймворками Deeplearning4j, TensorFlow и Theano. Нацелена на оперативную работу с сетями глубинного обучения;

Установка выполнялась на виртуальной машине:

  • Под управлением Astra Linux Special Edition (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20191029SE16 (оперативное обновление 4);
  • Имеющей доступ в интернет для скачивания необходимых сценариев;
  • Имеющей настроенный сетевой репозиторий;

Установка библиотеки Anaconda

  1. Рекомендуется создать отдельный каталог для размещения устанавливаемых библиотек. Каталог может быть создан в произвольном месте. Далее предполагается, что:
  • Все действия выполняются из этого каталога;
  • Пользователь, от имени которого выполняются действия является владельцем этого каталога (т.е. пользователю предоставлены права на запись в этот каталог).

Например, используем подкаталог /opt/python:

Для удобства каталог, в котором будут размещены исполнимые файлы можно добавить в путь поиска PATH.

где:
-b — команда установки в «пакетном» режиме без вопросов (подразумевает автоматическое согласие с лицензией);
-p /opt/python/anaconda — подкаталог в ранее созданном каталоге /opt/python/ для размещения устанавливаемых файлов .

Установка библиотек TensorFlow и Keras

  1. Скачать архивы библиотек TensorFlow и Keras. Для удобства эти библиотеки собраны в один архив и доступны для скачивания через WEB-браузер по ссылке. При скачивании архив следует разместить в текущем каталоге.

sudo anaconda/bin/conda install packages/general/*.tar.bz2
sudo anaconda/bin/conda install packages/tensorflow/*.tar.bz2
sudo anaconda/bin/conda install packages/keras/*.tar.bz2
sudo anaconda/bin/pip install packages/keras/*.whl

tensorflow 1.10.0 requires astor>=0.6.0, which is not installed.
tensorflow 1.10.0 requires gast>=0.2.0, which is not installed.
tensorflow 1.10.0 requires grpcio>=1.8.6, which is not installed.
tensorflow 1.10.0 requires tensorboard=1.10.0, which is not installed.
tensorflow 1.10.0 requires termcolor>=1.1.0, which is not installed.
google-cloud-core 0.29.1 requires google-api-core=1.0.0, which is not installed.
google-auth 1.6.2 requires cachetools>=2.0.0, which is not installed.
google-auth 1.6.2 requires pyasn1-modules>=0.2.1, which is not installed.
google-auth 1.6.2 requires rsa>=3.1.4, which is not installed.
distributed 1.21.8 requires msgpack, which is not installed.

Кроме того, при установке будет выдано предупреждение о возможности обновить версию менеджера пакетов pip:

You are using pip version 10.0.1, however version 20.0.2 is available.
You should consider upgrading via the ‘pip install —upgrade pip’ command.

Это обновление делать не обязательно, но можно сделать его указанной в предупреждении командой, выполнив её с учетом каталога, в котором размещены файлы, и от имени суперпользователя:

Проверка результатов установки

Источник

Оцените статью
Adblock
detector