Найти в Дзене
XSQUARE

Мое первое приложение на XSQUARE

Думаю, что каждый из нас разрабатывал приложение «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 Много слов, приступим к делу! на сайте xs
Оглавление

Думаю, что каждый из нас разрабатывал приложение «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/