Установка Severcart в сочетании с Apache

Иногда необходимо установить Severcart на тот же сервер где уже установлен GLPI, Joomla, PhpMyAdmin, и др. Появляется необходимость подключить программу Severcart к уже имеющейся конфигурации Apache.

Далее предложена инструкция одной из возможных решений данной задачи для Centos Linux. Доступ к приложению осуществляется через путь http://example.com/severcart/.

Устанавливаем PostgreSQL

export LC_ALL="ru_RU.UTF-8"

export LC_ALL="ru_RU.UTF-8" >> ~/.bashrc

yum install -y postgresql-server unzip

Инициализируем базу данных и добавляем её в автозагрузку:

service postgresql initdb

systemctl enable postgresql.service

systemctl start postgresql.service

Создаём владельца БД:

su postgres

psql
CREATE USER scuser WITH PASSWORD '123456';

Создаём базу данных severcart:

CREATE DATABASE severcart WITH ENCODING='UTF8' OWNER=scuser CONNECTION LIMIT=-1 template=template0;

UPDATE pg_database SET datcollate='ru_RU.UTF-8', datctype='ru_RU.UTF-8' WHERE datname='severcart';

Выходим из оболочки psql:

\q

Переключаемся на пользователя root:

su -

Разрешаем доступ пользователю scuser подключаться к postgres. Для этого в файле /var/lib/pgsql/data/pg_hba.conf меняем строку:

host    all             all             127.0.0.1/32            ident

на

host    all             all             127.0.0.1/32            md5

Закрепляем изменения в конфигурации:

systemctl restart postgresql.service

Устанавливаем Python

yum install -y epel-release

yum install -y python36

python3.6 -m venv /var/venv/

mkdir -p /var/venv/severcart/

Скачиваем и распаковываем пакет Severcart

Скачиваем самый свежий файл *.zip архива с официального сайта продукта.

Далее распаковываем архив в каталог /var/venv/severcart

unzip 1_X_X.zip -d /var/venv/severcart

Установка python пакетов

source /var/venv/bin/activate

python3 /var/venv/severcart/tkinstaller/install.py

Далее настроим префикс программы Severcart для Apache в конфигурационном файле /var/venv/severcart/conf/settings.py меняем строку

URL_PREFIX = ''

на

URL_PREFIX = 'severcart/'

Установка web сервиса

Далее установим серверный процесс обрабатывающий динамические запросы.

yum install supervisor -y

systemctl start supervisord

systemctl enable supervisord

Назначаем нужные права доступа к файлам:

chmod 755 -R /var/venv/severcart/
chown nobody:nobody -R /var/venv/severcart/

cd /etc/supervisord.d
touch severcart.ini
[program:severcart]
command=/var/venv/bin/gunicorn conf.wsgi_prod:application -c /var/venv/severcart/conf/gunicorn.conf.py
directory=/var/venv/severcart
user=nobody
autorestart=true
redirect_stderr=true
service supervisord start

supervisorctl reread
supervisorctl update
supervisorctl status severcart
supervisorctl restart severcart

Настройка Apache

Для работы нам понадобится proxy_module Apache для передачи запросов процессу генерации динамических страниц. Как правило, данный модуль устанавливается автоматически с Apache.

yum install httpd -y

systemctl enable httpd

systemctl start httpd

Чтобы настроить proxy_module, нужно создать новый конфигурационный файл. Создайте файл django.conf в каталоге /etc/httpd/conf.d и откройте его:

vi /etc/httpd/conf.d/django.conf

Для начала нужно настроить статические файлы. После этого Apache будет направлять все запросы, начинающиеся с /severcart/static, в каталог static в каталоге проекта.

<VirtualHost 0.0.0.0:80>
    ServerName  severcart.local

    CustomLog   /var/log/httpd/access_log combined
    ErrorLog    /var/log/httpd/error_log


    ProxyPass /severcart/static !
    ProxyPass /severcart/media !

    Alias /severcart/static /var/venv/severcart/static
    <Directory /var/venv/severcart/static>
        Require all granted
    </Directory>


    Alias /severcart/media /var/venv/severcart/media
    <Directory /var/venv/severcart/media>
        Require all granted
    </Directory>


    ProxyPreserveHost On
    ProxyPass "/severcart" "http://127.0.0.1:9000/severcart"
    ProxyPassReverse "/severcart" "http://127.0.0.1:9000/severcart"
</VirtualHost>

Домен severcart.local поменяйте на свой.

Запустим службу Apache:

systemctl restart httpd

Далее проверяем в браузере открытие страницы. Если увидите приглашение ввести логин и пароль, значит установка успешно завершена. Проверка на наличие ошибок в конфигурации Apache:

apachectl configtest