Установка: различия между версиями

Материал из WiKi - UserSide
Строка 135: Строка 135:
== Резервирование ==
== Резервирование ==


'''Крайне рекомендуется после установки системы установить периодическое ''(лучше - ежедневное)'' создание резервной копии штатными средствами PostgeSQL и её хранение НА ДРУГОМ ХОСТЕ.
'''Крайне рекомендуется после установки системы установить периодическое ''(лучше - ежедневное)'' создание резервной копии штатными средствами PostgeSQL и её хранение НА ДРУГОМ узле.
Например:'''
Например:'''
  sudo -u postgres pg_dump --no-acl --no-owner -Fc userside > /backup/userside.dump
  sudo -u postgres pg_dump --no-acl --no-owner -Fc userside > /backup/userside.dump


Восстановить сделанную таким образом резервную копию следует выполнять следующим образом:
Восстановить сделанную таким образом резервную копию можно различными способами.


1. Очистить кеш Redis ''(только для версии 3.13 и старше)''
Перед восстановлением базы данных необходимо обязательно очистить кеш Redis ''(только для версии 3.13 и старше)''
  php userside cache/flush-all
  php userside cache/flush-all
2. Удалить старую базу данных:
sudo -u postgres dropdb userside
3. Создать новую базу данных:
sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O userside -T template0 userside
4. Активировать расширение PostGis для базы данных:
sudo -u postgres psql -d userside -c "CREATE EXTENSION postgis"
5. Выполнить восстановление из резервной копии в эту базу данных:
sudo -u postgres pg_restore --no-owner --role=userside -d userside /backup/userside.dump


При восстановлении вы получите две ошибки, связанные с доступом к расширению PostGis, так как у вашей роли нет прав на изменение этого расширения. Эти две ошибки можно проигнорировать:
Если необходимо восстановить базу данных из резервной копии '''поверх существующей базы данных''' (все объекты базы данных будут заменены новыми), выполните:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
  sudo -u postgres pg_restore -c --if-exists -d userside /backup/userside.dump
  pg_restore: [archiver (db)] Error from TOC entry 9162; 0 0 COMMENT EXTENSION postgis
В этом случае явно указывается база данных, в которую необходимо восстановить содержимое базы данных.
pg_restore: [archiver (db)] could not execute query: ERROR:  must be owner of extension postgis
    Command was: COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions';
pg_restore: [archiver (db)] Error from TOC entry 6248; 0 79639 TABLE DATA spatial_ref_sys postgres
pg_restore: [archiver (db)] could not execute query: ERROR:  permission denied for table spatial_ref_sys
    Command was: COPY public.spatial_ref_sys (srid, auth_name, auth_srid, srtext, proj4text) FROM stdin;
WARNING: errors ignored on restore: 2


Однако, если помимо этих двух сообщений об ошибках будут какие-то еще - их обязательно следует проанализировать, чтобы избежать потери данных или целых таблиц.
Если необходимо восстановить базу данных из резервной копии '''с автоматическим созданием базы данных''', выполните (обратите внимание, имя базы данных в данном случае указывается postgres):
sudo -u postgres pg_restore -c --if-exists -C -d postgres /backup/userside.dump
База данных будет создана автоматически (вся необходимая информация для этого находится в резервной копии). Если база данных уже существует - она будет сначала удалена, а затем создана автоматически.
 
Если вам необходимо скопировать существующую базу данных для тестирования новых версий или других целей, то используйте для этого команду создания базы данных:
sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O userside -T userside userside_new
В этом случае просто создается новая база данных, в качестве шаблона которой используется существующая база данных. Используйте именно такой способ, если нужно сделать копию базы данных.


'''Рекомендуется ознакомиться с инструкциями на странице: [[С чего начать?]]'''
'''Рекомендуется ознакомиться с инструкциями на странице: [[С чего начать?]]'''

Версия от 09:06, 23 мая 2019

ВНИМАНИЕ: Данная инструкция актуальна для версий ERP "UserSide" 3.11 и выше. Для версии ниже 3.11 - используйте отдельную инструкцию по установке.

Подготовительные работы

  • рекомендуется выполнять установку на любые Unix-системы. Рекомендуем использовать дистрибутивы Linux попроще и понадежнее, вроде Debian, CentOS или Ubuntu Server (FreeBSD тоже подойдет, если вы знаете, с чем имеете дело). Установка на Windows также возможна, но практика показала, что на *nix-системах производительность программы гораздо выше при тех же технических характеристиках сервера. Далее рассматривается пример установки на Linux Debian 9 Stretch с web-сервером nginx
  • установите postgresql, postgis, php, все необходимые расширения и веб-сервер. Для версии USERSIDE 3.13 мы рекомендуем использовать php7.2, для 3.11 - php7.1. Также рекомендуем использовать web-сервер nginx. Пример для Debian 9 (Stretch):
sudo apt update
sudo apt install -y apt-transport-https lsb-release ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
echo "deb http://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.list
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt remove -y nginx-common apache2
sudo apt autoremove -y
sudo apt install -y snmp-mibs-downloader postgresql-11 postgresql-11-postgis-2.5 nginx
sudo apt install -y php7.2-fpm php7.2-cli php7.2-common php7.2-curl php7.2-intl php7.2-json php7.2-mbstring php7.2-opcache php7.2-pgsql php7.2-readline php7.2-xml php7.2-zip php7.2-snmp php7.2-gd php7.2-soap
sudo download-mibs
 
  • выполните настройку PHP: укажите свой часовой пояс, желаемый объем POST-данных (если 50 Мб мало - укажите ваше предпочитаемое значение) и максимальное время выполнения (если в будущем будет мало, сможете изменить); и базовую настройку nginx, выполнив следующие команды:
sudo sed -i "s@^;*date.timezone.*@date.timezone = Europe/Zaporozhye@" "/etc/php/7.2/fpm/php.ini"
sudo sed -i "s@^;*date.timezone.*@date.timezone = Europe/Zaporozhye@" "/etc/php/7.2/cli/php.ini"
sudo sed -i "s@;cgi.fix_pathinfo=1@cgi.fix_pathinfo=0@" "/etc/php/7.2/fpm/php.ini"
sudo sed -i "s@post_max_size = 8M@post_max_size = 50M@" "/etc/php/7.2/fpm/php.ini"
sudo sed -i "s@upload_max_filesize = 2M@upload_max_filesize = 50M@" "/etc/php/7.2/fpm/php.ini"
sudo sed -i "s@^user.*;@user www-data www-data;@" "/etc/nginx/nginx.conf"
sudo sed -i "s@max_execution_time.*@max_execution_time = 120@" "/etc/php/7.2/fpm/php.ini"
sudo sed -i "s@max_input_time.*@max_input_time = 120@" "/etc/php/7.2/fpm/php.ini"
sudo sed -i 's@;*request_terminate_timeout.*@request_terminate_timeout = 120@' /etc/php/7.2/fpm/pool.d/www.conf
  • создайте каталог, который будет является корнем web-сервера (root). При этом обратите внимание на то, что корнем самого приложения будет каталог /var/www/userside.
 sudo mkdir -p /var/www/userside/userside3
  • создайте сайт для nginx (или отредактируйте имеющийся сайт по умолчанию). Для этого создайте файл /etc/nginx/conf.d/userside.conf и поместите в него текст:
server {
    listen               80;
    server_name          userside.mycompany.com;  # ИЗМЕНИТЕ ЭТО ИМЯ
    charset              utf-8;
    client_max_body_size 50M;
    access_log  /var/log/nginx/userside-access.log;
    error_log   /var/log/nginx/userside-error.log;
    root   /var/www/userside/userside3;
    index  index.php;
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location / {
        try_files $uri $uri/ =404;
    }
    location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
        access_log    off;
        log_not_found off;
        expires       max;
        add_header    Pragma public;
        add_header    Cache-Control "public";
    }
    location ~ \.php$ {
        try_files     $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass  unix:/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 600;
        include       fastcgi_params;
    }
    location ~ /\.ht { deny  all; }
    error_page 404 /404.php?type=404;
    error_page 403 /404.php?type=403;
    error_page 500 /404.php?type=500;
    location = /404.php {
        root /var/www/userside/userside3/main/error/;
        internal;
    }
}
  • перезапустите стек
sudo systemctl restart postgresql.service
sudo systemctl restart nginx.service
sudo systemctl restart php7.2-fpm.service

Инсталлятор

См. также: Инсталлятор

1) перейти в каталог системы (/var/www/userside)

2) запустить команду

php -r "copy('https://my.userside.eu/install', 'userside_install.phar');" 

ЛИБО

скачать инсталлятор с личного кабинета https://my.userside.eu и положить его в каталог системы

3) запускаем инсталлятор

sudo -u www-data php userside_install.phar install

В процессе работы он проверяет соответствие техническим требованиям и задаёт сопутствующие установке вопросы

По окончанию работы инсталлятора будет выведено сообщение об успешной установке.

Настройка системы

  • открыть страницу системы http://userside.mydomain.com/oper/ и убедиться в работоспособности системы (имя пользователя: Admin, пароль: 1234)
  • доступ к файлу API "/userside/userside3/api.php" рекомендуется ограничить на уровне веб-сервера для доступа лишь с разрешённых IP-адресов
  • прописать планировщик UserSide в cron.
cat << EOF > /etc/cron.d/userside
* * * * *   www-data   php /var/www/userside/userside cron > /dev/null 2>&1
EOF

Резервирование

Крайне рекомендуется после установки системы установить периодическое (лучше - ежедневное) создание резервной копии штатными средствами PostgeSQL и её хранение НА ДРУГОМ узле. Например:

sudo -u postgres pg_dump --no-acl --no-owner -Fc userside > /backup/userside.dump

Восстановить сделанную таким образом резервную копию можно различными способами.

Перед восстановлением базы данных необходимо обязательно очистить кеш Redis (только для версии 3.13 и старше)

php userside cache/flush-all

Если необходимо восстановить базу данных из резервной копии поверх существующей базы данных (все объекты базы данных будут заменены новыми), выполните:

sudo -u postgres pg_restore -c --if-exists -d userside /backup/userside.dump

В этом случае явно указывается база данных, в которую необходимо восстановить содержимое базы данных.

Если необходимо восстановить базу данных из резервной копии с автоматическим созданием базы данных, выполните (обратите внимание, имя базы данных в данном случае указывается postgres):

sudo -u postgres pg_restore -c --if-exists -C -d postgres /backup/userside.dump

База данных будет создана автоматически (вся необходимая информация для этого находится в резервной копии). Если база данных уже существует - она будет сначала удалена, а затем создана автоматически.

Если вам необходимо скопировать существующую базу данных для тестирования новых версий или других целей, то используйте для этого команду создания базы данных:

sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O userside -T userside userside_new

В этом случае просто создается новая база данных, в качестве шаблона которой используется существующая база данных. Используйте именно такой способ, если нужно сделать копию базы данных.

Рекомендуется ознакомиться с инструкциями на странице: С чего начать?

Частозадаваемые вопросы (FAQ)

Ошибка 404 при проверке URL. Вероятней всего неверно настроен WEB-сервер. root (DocumentRoot) WEB-сервера должен указывать на каталог /var/www/userside/userside3