1. Установить виртуальные машины в соответствии со схемой развертывания сети (рекомендуемый вариант по умолчанию - ALT Linux P10.1)
2. Настроить сеть внутри виртуальной машины в соответствии с выбранным сценарием - Development или Production
3. Перенести на виртуальную машину код для развертывания
4. Создать БД для функционирования сервиса (если ее нет) для подключения к программному продукту. Рекомендуется использовать PostgreSQL
5. Подготовить Django-проект к запуску
6. Настроить сервисы (веб-сервер, XMPP-сервер и тп)
Первоначально устанавливается виртуальная машина, разворачивание рекомендуется делать с использованием Proxmox (система виртуализации с открытым исходным кодом, основанная на Debian GNU/Linux).
Необходимо задать параметры (процессор, оперативная память и дисковое пространство).
Рекомендуемые значения параметров ВМ:
При использовании ALT Linux 10.1 во время установки надо в соответствующем меню выбрать, какие пакеты лучше установить вместе с установкой системы. Рекомендуется выбрать минимальный набор и дополнительно только systemd-networkd (сетевая утилита, позволяющая настраивать сеть на самой виртуальной машине).
После установки виртуальной машины, необходимо настроить сеть.
Для этого находясь в директории cd/etc/systemd/network/,
(У каждой программы есть место для хранения настроек. Если не положить файл конфигурации в нужное место, программа не будет работать).
Расширение netdev – это описание интерфейса, по которому система понимает какой выполняет функционал (основной интерфейс в виртуальной машины, по крайней мере в alt linux называется ens19 это реальный физический интерфейс у виртуальной машины, добавления .20 .40 это используют для обозначения, что за что отвечает, это добавляет к нему сеть vlan.
Далее вы даёте ему параметр kind=vlan, и дальше тэг, он обычно совпадает со значением после точки).
[Netdev] Name=ens19.20 Kind=vlan [VLAN] Id=20
cd /путь/к/директории
Показывает содержимое директории
ls -la
Открыть файл для редактирования
vim <имя_файла>
Когда всё настроено, но виртуальная машина пустая, необходимо написать команду для обновления источников пакетов:
apt-get update
После того как источники были обновлены, необходимо запустить команду для обновления пакетов:
apt-get dist-upgrade
Использование команды 'apt-get dist-upgrade' предпочтительнее, чем 'apt-get upgrade'. Такая компанда использует более гибкий подход для разрешения конфликтов взаимозависимых пакетов.
Далее идет команда для обновления ядра:
update-kernel
Затем - установка web-сервера Apache:
apt-get install httpd2
Проверка/установка пакетов Git:
apt-get install git
Примечание: Команды выполняются с правами суперпользователя. Зависимости пакетов подтягиваются из репозиториев автоматически.
Для подключения к репозиториям Git компании, нужно создать файл конфигурации Для перемещения по директориям (подкаталогам) файловой системы используется команда 'cd'. Для перехода в каталог '.ssh/' необходимо использовать следующую команду:
cd .ssh/
ls - список файлов в директории.
ls
В данной папке видим каталог с ключами и конфигурационный файл:
authorized_keys - в этой папке хранятся публичные ключи, для получения доступа к виртуальной машине, без логина и пароля
config – в этот файл, для работы с гитом необходимо прописать настройку
Необходимо настроить пустой конфиг:
vim config
Host - домен гит-сервера (git.sharix-app.org)
Hostname - домен гит-сервера (git.sharix-app.org)
User - имя вашего пользователя, по нему будет доступ к репозиториям, к установке и к скачиванию.
Port - 300 (сейчас используется такое значение, в будущем может быть изменено).
Host git.sharix-app.org Hostname git.sharix-app.org User Denis Port 300
ssh-keygen (покажет директорию, не меняем название ключа, не используем пароль для ключа, ключ должен быть чистейшим и беззащитным ).
ssh-keygen
После генерации ключа (ключи в директории .ssh) смотрим содержимое директории через ls
ls
cat id_rsa.pub
Копируем ключ → заходим в свой аккаунт гита → настройки → параметры SSH ключи → сверху пишем имя, а снизу вставляем скопированный публичный SSH ключ.
SSH нужно пробежаться по всему config’у, полностью найти ключик и установить connect с сервером. Из-за того, что порт нестандартный это нужно сделать вручную, иначе не получится.
После того, как создан и скопирован ключ, нужно зайти в свой аккаунт гит, далее - в настройки, и там найти параметр 'ssh-ключи'.
Ввести в терминале команду:
ssh -vv git.sharix-app.org
Команда выводит все шаги (SSH прочитал файлы, нашел ключ и собирается подключиться - подтверждаем «Yes»).
После того как видим 'publickey' и 'succeeded', прерываем работу терминала
После успешного подключения к репозиторию и проверки работы ключа, можно, используя нашего пользователя, скачивать репозитории, делать в них коммиты на своем ПК (то есть, отредактировать, сделать коммит и отправить изменения на сервер).
Перейти в директорию Apache
cd/etc/httpd2/conf/sites-enabled/
sites-enabled - директория, в которой находятся конфигурации web/доменов, через которые мы получаем доступ к каким либо ресурсам.
Создаем vim guide.conf
vim guide.conf
Вставляем готовый текст конфига или создаем вручную:
Далее - сохраняем конфиг и выходим из редактора (команда 'wq')
<VirtualHost <адрес хоста>:80> ServerAdmin web@webserver.local DocumentRoot /var/www/webapps/<директория с приложением> ErrorLog /home/www/.log/sharix-assist-landing-error_log CustomLog /home/www/.log/sharix-assist-landing-access_log common AddDefaultCharset utf-8 </VirtualHost>
После сохранения посмотрим статус Apache (systemctl status httpd2.service) → inactive → запуск (systemctl start httpd2.service) → еще раз проверить статус → active (если нужно обновить, то reload)
systemctl status httpd2.service
systemctl start httpd2.service
Если нужно изменить конфиг, после сохранения изменений, для перезапуска сервиса не забудьте написать следующую команду:
systemctl reload httpd2.service
Смотрим содержимое директории:
cd /var/www/webapps/
ls (пусто)
ls
В данный момент директория пуста, поэтому клонируем репозиторий:
git clone
Выводим подробное описание прав на файл, его владельца, даты:
ls -la
Так как владелец файлов указан 'root', группа для доступа 'webmaster' (специальный пользователь для взаимодействия с Apache), необходимо поменять владельца файлов на 'apache2':
chown -R apache2:apache2: sharix-open-landing/
Проверяем:
ls -la
Далее переходим внутрь каталога:
cd sharix-open-landing/
Проверяем: git checkout new-master (название ветки) - перемещение между ветками.
git checkout new-master
В гите может быть несколько веток и если просто скопировать репозиторий, то это не значит, что мы будем находиться в нужной ветке. И если написать несуществующую ветку, то гит ее создаст.
Гит ругается, что мы изменили пользователя на apache2 и что этот пользователь не скачивал данную директорию, то есть он хранит информацию о том, у кого пользователя есть доступ.
Поэтому сначала мы скачиваем, делаем изменения, пушим на сервер (при необходимости) и после этого даем права на директорию.
Либо:
cd ..
chown -R root:apache2: sharix-open-landing/
Vim - консольный текстовый редактор для Unix-подобных операционных систем, таких как Linux и macOS. Vim удобен для работы с текстом в консоли, а его управление с помощью клавиатуры обеспечивает более быстрое и эффективное редактирование текста.
Чтобы войти в Vim, вам нужно открыть терминал и ввести команду «vim». Затем вы увидите пустое окно редактора. Начните вводить текст и используйте клавиши управления для перемещения по тексту.
Чтобы внести изменения, просто начните вводить текст в режиме вставки. Чтобы сохранить и выйти, нажмите Esc для выхода из режима вставки, затем введите команду «:wq» и нажмите Enter.
Если вам нужна подробная инструкция по использованию Vim, вы можете посмотреть на сайтhttps://firstvds.ru/technology/tekstovyy-redaktor-vim-kratkoe-rukovodstvo. Там вы найдете инструкцию по установке, основы работы с Vim и многое другое.
Nano - простой текстовый редактор для терминала, который доступен на большинстве Unix-подобных операционных систем, таких как Linux и macOS. Он легкий в использовании и хорошо подходит для начинающих пользователей.
Чтобы войти в Nano, вам нужно открыть терминал и ввести команду «nano». Затем вы увидите пустое окно редактора. Начните вводить текст и используйте клавиши управления для перемещения по тексту. Чтобы внести изменения, просто начните вводить текст. Чтобы сохранить и выйти, нажмите Ctrl+O, затем Y для подтверждения сохранения изменений и Enter.
Если вам нужна более подробная инструкция по использованию Nano, вы можете посмотреть на https://blog.sedicomm.com/2018/11/21/rukovodstvo-po-ispolzovaniyu-tekstovogo-redaktora-nano-v-linux-dlya-nachinayushhih/ или ввести команду «man nano» в терминале для отображения руководства пользователя.
Mcedit - текстовый редактор, доступный на большинстве Unix-подобных операционных систем, таких как Linux или macOS. mcedit представляет собой редактор, который интегрирован в Midnight Commander (mc), что облегчает работу с файлами. Он обладает многими возможностями, такими как подсветка синтаксиса, автодополнение и другие.
Чтобы войти в mcedit, вам нужно открыть терминал и ввести команду «mcedit» после чего вы увидите пустое окно редактора. Начните вводить текст и используйте клавиши управления для перемещения внутри редактора. Чтобы внести изменения нажмите клавишу «Insert» и начните вводить текст. Чтобы сохранить и выйти, нажмите «F2» затем выберите «Salva» и нажмите «Invio» или «Enter».
Если вам нужна более подробная инструкция по использованию mcedit, вы можете посмотреть на https://redos.red-soft.ru/base/manual/utilites/mc-filemanager/ или ввести команду «man mcedit» в терминале для отображения руководства пользователя.
Как узнать ip для информации в конфиге?
ip a
Как положить ключ?
ssh-keygen (покажет директорию, не меняем название ключа, не используем пароль для ключа, ключ должен быть чистейшим и беззащитным ).
ssh-keygen
После генерации ключа (ключи в директории .ssh) смотрим содержимое директории через ls
ls
cat id_rsa.pub
Копируем ключ → заходим свой аккаунт гита → настройки → параметры SSH ключи → сверху пишем имя, а снизу вставляем скопированный публичный SSH ключ.
SSH нужно пробежаться по всему config’у, полностью найти ключик и установить connect с сервером. Из-за того, что порт нестандартный это нужно сделать вручную, иначе не получится.
После того как мы создали и скопировали ключ, нужно зайти на свой аккаунт гит, в настройки и там есть параметр ssh-ключи.
ssh -vv git.sharix-app.org - полностью выводит все шаги SSH (он прочитал все файлы, нашел ключ и теперь собирается подключиться, даем добро YES).
После того как мы видим publickey и succeeded, мы прерываем работу терминала
ssh -vv git.sharix-app.org
Рекомендуемый вариант сети для функционирования сервиса в соответствии с описанной схемой.
Упрощенный вариант сети, удобный для ведения разработки.
Отличается от Production-варианта меньшим количеством виртуальных машин, на которых развернуты компоненты решения.
Можно в домашнюю директорию рута или куда удобно.
Рекомендуется делать под специальным пользователем и по пути за пределами домашней директории, но в которую пользователь имеет права.
Корневой проект - https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base
Так склонируется шаблон сервиса Open. Если уже создается кодовая база под собственный дочерний сервис, необходимо клонировать репозиторий ее корневого элемента. Обратите внимание на возможные лицензионные ограничения и особенности.
'git commit' - сохранение содержимого индекса в новый «слепок», затем сдвигает указатель текущей ветки на этот слепок:
git commit
'git add' - добавление содержимого рабочей директории в индекс для последующего коммита:
git add
'git status' - показывает состояние файлов рабочей директории и индекса (изменения и несоответствия для последующего коммита):
git status
'git diff' - показывает разницу между двумя ветками Git, например, разница между индектом и последним коммитом:
git diff --staged
git diff master branchX
'git reset' - отмена изменений:
git reset
'git clean' - удаление «мусора» из рабочей директории:
git clean
'git branch' - менеджер веток. Вывести список веток:
git branch --list
Создать ветку 'branch1':
git branch branch1
'git checkout' - переключение веток, выгрузка их содержимого в рабочую директорию:
git checkout new-master
open-web-admin – админка для сервиса. Необходимо на её основе создать 'sharix-<имя_сервиса>-web-admin', создаёте репозиторий на гите в организации гит, добавляете туда разработчиков и клонируете этот репозиторий на машину.
sharix-open-payments, sharix-open-webservice-running - идентично.
open-docu-wiki – стили для вики и для ваших сервисов.
Также нужно создать репозиторий sharix-<имя_сервиса>-landing для главной страницы вашего сервиса.
Репозитории mob-client и mob-provider – для взаимодействия с мобильными устройствами.
Все репозитории для Django копируем в корень root (для перехода использовать команду cd), а все что связано с Apache и не будет использоваться Unicorn и Django - отправляем в '/var/www/webapps'.
sharix-open-webapp-base, sharix-open-backend, sharix-open-tickets - клонировать, не переименовывать.
1. Необходимо установить БД на виртуальную машину
apt-get install postgresql14-server
2. Необходимо инициализировать БД, она происходит автоматически
/etc/init.d/postgresql initdb
3. Включить БД как сервис, чтобы он запускался после перезапуска
systemctl enable postgresql --now
4. Создать пользователя - владельца БД в БД. Например, ему можно дать имя сервиса.
su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt ПОЛЬЗОВАТЕЛЬ_ВЛАДЕЮЩИЙ_БД'
5. Создать БД с пользователем, который был только что создан
su - postgres -s /bin/sh -c 'createdb -O ПОЛЬЗОВАТЕЛЬ_ВЛАДЕЮЩИЙ_БД ИМЯ_БД'
6. Данные из пп4-5 необходимо запомнить. Они должны быть достаточно надежными. При необходимости их можно будет поменять. Для разработки можно использовать упрощенные значения, но надо не забыть изменить их перед вводом решения в эксплуатацию на более надежные.
1. Подготовить файл конфигурации (config.py) по инструкции в README, он должен находиться в директории core внутри проекта:
https://git.sharix-app.org/ShariX_Open/sharix-open-webapp-base
Пример:
CSRF_TRUSTED_ORIGINS = ['https://*.sharix-app.org/']
но для production-решений лучше писать что-то более узкое.
В более старых версиях значения параметра должны включать только имя хоста, без звездочки, например:
CSRF_TRUSTED_ORIGINS = ['open.sharix-app.org']
2. Настроить права скрипта развертывания проекта
chmod u+x install_unix.sh
3. Запустить скрипт развертывания проекта
./install_unix.sh
Скрипт настроен для использования директории 'root'.
4. Ввести учетные данные технического администратора сервиса (номер телефона, имя и пароль). Этот администратор сможет получить доступ к технической административной панели, но не будет обладать никакими иными правами внутри сервиса, если они не будут специально назначены. Он может назначить права только основного администратора по функционированию сервиса (ответственное лицо перед платформой).
5. Назначаем права на исполнение на скрипт запуска процесса сервиса (на виртуальной машине - первый раз, или, например, после перезагрузки) и запускаем (например, для проверки)
chmod u+x bin/webuser.sh ./bin/webuser.sh &
6. Сервис необходимо активировать (при создании дочернего решения его лучше переименовать и в целом создать новый репозиторий с конфигами по аналогии):
systemctl enable sharix_open.service
7. Можно перезагрузить компьютер и проверить, что все работает.
Команда lsof -i -P (Данная команда показывает процесс, порт и состояние).
lsof -i -P
Когда там будут проекты Django, веб-сервера, jabberd, то все задействованные порты будут отображаться. Если портов нет, то это либо не запущен сам сервис либо что-то с настройкой.
systemctl status <имя процесса> - проверить статус любого процесса
systemctl status httpd2.service
Состояние active – все работает
Состояние inactive – отображается серым, не запущено
Состояние fault – есть какая-то ошибка, в конфигурации или в процессах
Необходимо следить за пересечение портов и старайтесь их не пересекать, для предотвращения конфликтов процессов.
Необходимо установить минимальные пакеты для работы Django:
Python - apt-get install python3
apt-get install python3
Устанавливаем модуль джанго.
apt-get install python3-module-django
Venv - apt-get install python3-module-virtualenv
apt-get install python3-module-virtualenv
Мы установили минимальные пакеты для работы джанго.
Важное замечание: для каждого сервиса необходимо прописывать свой порт, для корректной работы.
sharix-open-tickets - Система работы с заявками, реализованная в виде приложения Django.
Последовательность установки и настройки:
1. Скачать репозиторий:
git clone -b tickets_module http://git.sharix-app.org/ShariX_Open/sharix-open-tickets.git tickets
2. Важный момент:
git checkout master
3. Выполнить шаги, описанные в инструкции по установке из файла 'README.md'.
4. Сгенерировать виртуальное окружение:
python3 -m venv tickets
Проверить его создание (в директории должен появиться каталог 'tickets'):
ls
5. Добавить в файл '.gitignore' исключения для Git, что не следует отправлять (пароли, логины, что-то еще столь же ценное и важное).
Для создания и редактирования файла использовать любой текстовый редактор, например, vim:
vim .gitignore
Пример содержимого файла:
# Virtualenv env/ venv/ # VSCode .vscode # Python __pycache__/ *.py[cod] *$py.class # Django migrations/
6. После того как скачали репозиторий и все пакеты, перейти в созданное окружение:
source tickets/bin/activate
Теперь вы находитесь внутри созданного окружения. Это нужно для того, чтобы не было проблем с разными версиями в разных проектах на Django, так как для них могут использоваться разные версии пакетов.
7. Установка зависимостей.
Файл 'requirements.txt' содержит перечень зависимостей (пакетов ОС), необходимых для корректной работы приложения.
Устанавливаем пакеты в окружение:
pip3 install -r requirements.txt
Если pip ругается на устаревшую версию - обновить его следующей командой:
pip3 install --upgrade pip
8. Установить в окружение сервер СУБД, инициализировать его, создать пользователя и БД.
Делается это идентично установке СУБД виртуальной машины, как описано выше в разделе Как создать БД?.
Необходимо устанавливать postgreSQL версии 15:
apt-get install postgresql15-server
9. Для того чтобы узнать ip-адреса интерфейсов, выполнить следующую команду:
ip a
10. Разрешить доступ postreSQL по локальной сети:
echo "listen_addresses = 'localhost'" >> var/lib/pgsql/data/posthresql.conf
11. Проверить и (при необходимости) отредактировать права пользователей postreSQL:
vim var/lib/pgsql/data/pg_hba.conf
Для того, чтобы остановить виртуальное окружение, использовать команду:
cd sharix-open-tickets\ deactivate
Как будет работать unicorn:
У вас внутри репозитория будет папочка bin, внутри неё будет 2 файла, один из них нужно перенести, а другой по инструкции Вам возможно нужно будет настраивать. Как только перенесете файл, нужно будет прописать следующую команду (вместо звёздочки у Вас будет своё название)
systeml enable *.service
Это необходимо сделать, для корректной работы скриптов проекта на джанго, после перезагрузки, иначе их вручную нужно будет запускать.
Для проверки нужно будет написать команду reboot и если у вас не запускается проект, значит какой-то сервис не включен.
Команды linux:
1. Move – либо перенести файл, либо изменить его название.
move
2. Copy – копирование (добавляйте -r для копирования всей директории).
copy
Что нужно делать с шаблоном docu wiki?
У Вас шаблонный сайт, которому Вы в апатче даёте путь и домен, потом какую-то часть Вы настраиваете в файле docu wiki.php в конфигах, какую-то часть Вы прописываете docu wiki.php lvan local.
В чём разница? - один файл – это основной, а второй файл — это надстройка над файлом, local преобладает, так как он перезаписывает первый файл.
Эта команда может понадобиться, чтобы дать право на исполнение.
chmod
u - права для user
chmod u+x
g – права для group
a – права для всех
А после + идут права на:
x – исполнение
w – запись
r – чтение
Также права можно отзывать используя -, вместо +
1. Уточнить имя сервиса.
ls /etc/systemd/system/
2. Штатный запуск:
systemctl start sharix_open.service
Проверить статус или остановить - это status или stop.
Чтобы запустить gunicorn «на коленке» для проверки ошибок:
кореньпроекта/bin/webuser.sh
Если не перезапускается - возможно, лишние процессы gunicorn.
Посмотреть:
# ps aux | grep gun
Убить ненужные - команда kill и номер процесса, в нормальном состоянии от 2 процессов на сервис.
Далее запустить сервис штатно.