Думаю, что каждый из нас разрабатывал приложение «Hello World» сначала для консоли, потом для десктопа приложения, потом для веб приложения или мобильного приложения и подключал любимую для себя базу данных.
И если на старте от разработчика требовалась знания только С++, например, то уже на выходе мы должны знать SQL, С++/Java/C#/Phyton …, JavaScript/HTML/CSS, да еще и настройка окружений разработчика/тест/прод.
И каждый второй бекэнд разработчик после 2 лет разработки скажет, что у него профессиональное выгорание после постоянной переупаковки одного JSON в другой JSON.
Когда мы начали делать XSQUARE, то во главе угла было:
· Low Code на PostgreSQL и точка!
· Через день на XSQUARE должен программировать даже студент
· XSQUARE должен работать на любом железе, любой UNIX-based ОС
· И конечно же, куда же без него, горизонтальное масштабирование
Про архитектуру можно посмотреть тут.
https://lcdp.xsquare.ru/docs/rad/5_0/docs/architecturesystem.html
Много слов, приступим к делу!
Инсталляция
на сайте xsquare.ru в разделе документация можно найти подробное описание, в разделе скачать найдем дистрибутивы.
Но что мы может быть понятнее 40 строчек bash скрипта? Только готовый bash скрипт.
https://lcdp.xsquare.ru/edu/files/pghs_xrad/5.1.2.3.2.3/
Итак, предположим, что мы уже:
- скачали свою любимый Debian GNU/Linux 12 (bookworm) и установили в минимал
- настроили сеть и отключили файрволы
Для старта нам достаточно
· CPU - 1 Core
· RAM 1GB
· HDD - 10GB
Приступим!
Подключаемся по ssh к нашему тестовому серверу:
ssh root@my_ip -p 22
Устанавливаем необходимые пакеты:
apt -y install unzip vim wget curl open-vm-tools zip
И первым делаем скачиваем все необходимое ПО
mkdir /root/xsquare
cd /root/xsquare
## Download XSQUARE
wget https://lcdp.xsquare.ru/edu/files/pghs_xrad/5.1.2.3.2.3/xsquare.lcdp.5.1.2.3.2.3_release.zip
wget https://lcdp.xsquare.ru/edu/files/xdac/3.4.1.13/xsquare.xdac_3.4.1.13.deb
wget https://lcdp.xsquare.ru/edu/files/xreports/5.0.0.5/xsquare.xreports_5.0.0.5.deb
## Download pgsql-http client
wget https://lcdp.xsquare.ru/files/pgsql-http/v1.5.0.tar.gz
## LibreOffice
wget https://lcdp.xsquare.ru/files/libreoffice/LibreOffice_24.8.4_Linux_x86-64_deb.tar.gz
Т.к. будущее приложение должно работать с русским языком, то нам необходимо установить русскую локаль по умолчанию вручную
dpkg-reconfigure locales
Или автоматически
echo "Europe/Moscow" > /etc/timezone && \
dpkg-reconfigure -f noninteractive tzdata && \
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \
echo 'LANG="ru_RU.UTF-8"'>/etc/default/locale && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=ru_RU.UTF-8
export LANG=ru_RU.UTF-8
env | grep LANG
Ставим PostgreSQL, что может быть проще.
apt -y install postgresql
И создаем пользователей и базы данные
su - postgres -c "psql -U postgres -d postgres -c \"create user xrad_user with encrypted password 'xrad_user';\""
su - postgres -c "psql -U postgres -d postgres -c \"create user app_user with encrypted password 'app_user';\""
su - postgres -c "psql -U postgres -d postgres -c \"CREATE DATABASE \"appdb\" WITH OWNER \"app_user\" ENCODING 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';\""
su - postgres -c "psql -U postgres -d postgres -c \"CREATE DATABASE \"xraddb\" WITH OWNER \"xrad_user\" ENCODING 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';\""
su - postgres -c "psql -U postgres -d postgres -c \"ALTER USER xrad_user WITH SUPERUSER;\""
su - postgres -c "psql -U postgres -d postgres -c \"ALTER USER app_user WITH SUPERUSER;\""
Пришло время и NGINX, можно выбрать и Apache, но мы перешли в 2024 г. на NGINX, хотя 20 лет были на Apache, т.к. устали от разных конфигов/сборок Apache на rpm/deb-baseОС.
apt -y install nginx
Установка XSQUARE – PGHS/XRAD
Это 4 шага.
- импорт дампом БД
- размещенеи js/css файлов в /var/www PGHS и XRAD
- размещение в /etc/systemd/system файлов, отвечающих за запуск сервисов.
- размещение /etc/nginx/conf.d/ конфигурационных файлов сайтов XRAD и PGHS для запуска приложений на 8080 и 80 портах
- размещение /usr/local/ дистрибутивов XRAD и PGHS
unzip xsquare.lcdp.5.1.2.3.2.3_release.zip
cd xsquare.lcdp.5.1.2.3.2.3_release
export PGPASSWORD='xrad_user';
psql -U xrad_user -h 127.0.0.1 xraddb < db/xraddb.xsquare.pgsql
export PGPASSWORD='app_user';
psql -U app_user -h 127.0.0.1 appdb < db/appdb.xsquare.pgsql
apt -y install nginx
cp -R ./var /
cp -R ./etc /
cp -R ./usr /
Очищаем после установки и перезапускаем/включаем сервисы и смотрим на статусы.
## REMOVE LINK to defaul config
rm -f /etc/nginx/sites-enabled/default
systemctl restart nginx
systemctl --no-pager status nginx
systemctl start xsquare.pghs.service
systemctl start xsquare.xrad.service
systemctl enable xsquare.xrad.service
systemctl enable xsquare.pghs.service
systemctl --no-pager status xsquare.pghs.service
systemctl --no-pager status xsquare.xrad.service
Установка XSQUARE – XDAC и XSQUARE – REPORTS, скучна
dpkg -i xsquare.xdac_3.4.1.13.deb
dpkg -i xsquare.xreports_5.0.0.5.deb
Вы спросите, а почему не сделали так же для XSQUARE – PGHS? Ответ прост: мы не знаем как вы хотите распределять компоненты PGHS/XRAD/Postgre/NGINX. В нашем случае мы ставим все на одну виртуальному машину, в общем случае можно установить и на шесть машин.
УСТАНОВКА ЗАКОНЧЕНА!
40 строк!
Дополнения. HTTP клиент
Для осуществления http запросов их базы мы рекомендуем, но не настаиваем использовать
pgsql-http client https://github.com/pramsey/pgsql-http/archive/refs/tags/v1.5.0.tar.gz
apt -y install gcc dpkg-dev libcurl4-openssl-dev postgresql-server-dev-15
cd /root/xsquare
tar -xzf v1.5.0.tar.gz
export PATH=$PATH:/usr/lib/postgresql/15/bin/
cd pgsql-http-1.5.0
make
make install
export PGPASSWORD='app_user';
psql -U app_user -h 127.0.0.1 -d appdb -c "CREATE EXTENSION http;"
Конвертация
Мы горды тем, XSQUARE – REPORTS полностью независим от Open Source в ключе нативной генерации DOCX/XLSX/PDF. Да-да, мы зависим только от компилятора и все.
Но если Вам нужно конвертировать DOCX в PDF, то придётся установить LibreOffice
apt -y install libxinerama1 libcairo2 libcups2 default-jre
dpkg -i ./LibreOffice_24.8.4.2_Linux_x86-64_deb/DEBS/*.deb
И не забыть прописать в /usr/local/xsquare.xreports/config.json путь к soffice.
Теперь уже точно, финиш!
Приложения доступны по адресу:
· XSQUARE - PGHS http://your_ip:80"
· XSQUARE - XRAD http://your_ip:8080"
· XSQUARE - XREPORTS http://your_ip:8886"
· XSQUARE - XDAC http://your_ip:8887"
Самая сложная часть пройдена. Теперь установка приложение
Подробнее можно посмотреть на Rutube https://rutube.ru/video/c75ac1fa5dd214c33b85c382f1ec3f58/
Разрабатывай как ты хочешь - быстро и просто на PostgreSQL
Телеграмм канал: https://t.me/xsquare365
Rutube: https://rutube.ru/channel/29913911/
Мое первое приложение: https://rutube.ru/video/c75ac1fa5dd214c33b85c382f1ec3f58/