Инструкция по установке

Система автоматизации учебного процесса «Автор-ВУЗ» является клиент-серверным программным обеспечением. Система устанавливается на сервер, а пользователи получают к ней доступ при помощи браузера.

Системные требования

Для установки необходим веб-сервер с объемом ОЗУ не менее 1ГБ с установленным PHP 5.5 или 5.6 и базой данных MySQL не ниже версии 5.5 (или MariaDB).

Для PHP необходимо установить следующие модули:

  • GD
  • MBString
  • XML
  • MCrypt
  • MySQL
  • Zend Guard Loader
Для работы системы лицензирования необходимо подключение веб-сервера к интернету (можно только исходящее). Если в вашей образовательной организации это запрещено политикой безопасности - обратитесь к нам, мы сделаем для вас решение без необходимости подключения к интернету.

Процесс установки на базе CentOS Linux 7

1. Установите последнюю версию CentOS Linux 7 в конфигурации Minimal с официального сайта CentOS. При установке обеспечьте доступ сервера к интернету.

2. Выполните обновление системы.

yum -y update

3. Установите веб-сервер nginx.

yum install -y git gcc gcc-c++ kernel-devel pcre-devel zlib-devel openssl-devel perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
cd /tmp
git clone http://github.com/wandenberg/nginx-push-stream-module.git
NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module
curl -O https://nginx.org/download/nginx-1.17.3.tar.gz
tar xzvf nginx-1.17.3.tar.gz
cd nginx-1.17.3
./configure --with-http_ssl_module --add-module=../nginx-push-stream-module
make
make install
mkdir /var/log/nginx
useradd -M -s /sbin/nologin apache
chown apache:apache /var/log/nginx

4. Установите БД MariaDB.

yum -y install mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb

5. Установите PHP 5.6.

yum -y install epel-release
yum -y localinstall https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php56w php56w-fpm php56w-common php56w-gd php56w-mbstring php56w-xml php56w-mcrypt php56w-mysql php56w-opcache php56w-ldap php56w-soap
systemctl start php-fpm
systemctl enable php-fpm

6. Сконфигурируйте веб-сервер.

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
sed -i "s/;date.timezone.*/date.timezone = Europe\\/Moscow/g" /etc/php.ini
sed -i "s/; max_input_vars.*/max_input_vars = 100000/g" /etc/php.ini
sed -i "s/memory_limit = .*/memory_limit = 512M/g" /etc/php.ini
sed -i "s/;mbstring.func_overload.*/mbstring.func_overload = 0/g" /etc/php.ini
sed -i "s/;mbstring.internal_encoding.*/mbstring.internal_encoding = utf-8/g" /etc/php.ini
sed -i "s/short_open_tag.*/short_open_tag = On/g" /etc/php.ini
sed -i "s/error_reporting.*/error_reporting \= E_ALL \& ~E_DEPRECATED \& ~E_STRICT \& ~E_NOTICE \& ~E_WARNING/g" /etc/php.ini
sed -i "s/display_errors = .*/display_errors = On/g" /etc/php.ini
sed -i "s/;realpath_cache_size = .*/realpath_cache_size = 4096k/g" /etc/php.ini
sed -i "s/opcache.max_accelerated_files=.*/opcache.max_accelerated_files=100000/g" /etc/php.d/opcache.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 512M/g" /etc/php.ini
sed -i "s/post_max_size = .*/post_max_size = 512M/g" /etc/php.ini

sed -i "s/listen = 127.0.0.1:9000/listen = \\/var\\/run\\/php-fpm\\/php-fpm.sock/g" /etc/php-fpm.d/www.conf
sed -i "s/user = apache/user = apache/g" /etc/php-fpm.d/www.conf
sed -i "s/group = apache/group = apache/g" /etc/php-fpm.d/www.conf
sed -i "s/;listen.owner = nobody/listen.owner = apache/g" /etc/php-fpm.d/www.conf
sed -i "s/;listen.group = nobody/listen.group = apache/g" /etc/php-fpm.d/www.conf

echo "
user apache;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    sendfile            off; # bug in VirtualBox
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /usr/local/nginx/conf/mime.types;
    default_type        application/octet-stream;

    push_stream_shared_memory_size          64M;

    server {
        listen 80 default_server;
        server_name  _;
        root /var/www/html;
        index index.html index.htm index.php;

        client_max_body_size 512m;

        location / {
            try_files \$uri \$uri/ @urlrewrite;
        }

        location /messages/pub {
            push_stream_publisher admin;
            push_stream_channels_path \$arg_id;

            allow 127.0.0.1;
        }

        location ~ /messages/sub/(.*) {
            push_stream_subscriber long-polling;
            push_stream_channels_path \$1;
            push_stream_longpolling_connection_ttl 300s;
            push_stream_last_received_message_time \$arg_time;
            push_stream_last_received_message_tag \$arg_tag;
        }

        location ~ \.php\$ {
            try_files \$uri @urlrewrite;
            include /usr/local/nginx/conf/fastcgi_params;
            fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
            fastcgi_read_timeout 600;
        }

        location @urlrewrite {
            include /usr/local/nginx/conf/fastcgi_params;
            fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME \$document_root/index.php;
            fastcgi_read_timeout 600;
        }
    }
}
" > /usr/local/nginx/conf/nginx.conf

echo "
[Unit]
Description=nginx with push-stream-module
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s TERM \$MAINPID

[Install]
WantedBy=multi-user.target
" > /usr/lib/systemd/system/nginx.service

chown -R apache:apache /var/lib/php/session
curl http://avtor-vuz.ru/private/scripts/zend_loader/opcache.so > /usr/lib64/php/modules/opcache.so
curl http://avtor-vuz.ru/private/scripts/zend_loader/ZendGuardLoader.so > /usr/lib64/php/modules/ZendGuardLoader.so
echo "" >> /etc/php.ini
echo "zend_extension = /usr/lib64/php/modules/opcache.so" >> /etc/php.ini
echo "zend_extension = /usr/lib64/php/modules/ZendGuardLoader.so" >> /etc/php.ini
echo "zend_loader.enable=1" >> /etc/php.ini
echo "zend_loader.disable_licensing=0" >> /etc/php.ini
chmod 0755 /usr/lib64/php/modules/opcache.so
chmod 0755 /usr/lib64/php/modules/ZendGuardLoader.so

yum -y install policycoreutils-python
chown -R apache:apache /var/www/html
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.*)?"
restorecon -R /var/www/html
semanage permissive -a httpd_t
setsebool -P httpd_can_network_connect on

mkdir /usr/local/nginx/client_body_temp
mkdir /usr/local/nginx/fastcgi_temp
mkdir /usr/local/nginx/proxy_temp
mkdir /usr/local/nginx/scgi_temp
mkdir /usr/local/nginx/uwsgi_temp

chown apache:apache /usr/local/nginx/client_body_temp
chown apache:apache /usr/local/nginx/fastcgi_temp
chown apache:apache /usr/local/nginx/proxy_temp
chown apache:apache /usr/local/nginx/scgi_temp
chown apache:apache /usr/local/nginx/uwsgi_temp

chmod 0600 /usr/local/nginx/client_body_temp
chmod 0600 /usr/local/nginx/fastcgi_temp
chmod 0600 /usr/local/nginx/proxy_temp
chmod 0600 /usr/local/nginx/scgi_temp
chmod 0600 /usr/local/nginx/uwsgi_temp

semanage fcontext -a -t httpd_var_lib_t "/usr/local/nginx/client_body_temp(/.*)?"
semanage fcontext -a -t httpd_var_lib_t "/usr/local/nginx/fastcgi_temp(/.*)?"
semanage fcontext -a -t httpd_var_lib_t "/usr/local/nginx/proxy_temp(/.*)?"
semanage fcontext -a -t httpd_var_lib_t "/usr/local/nginx/scgi_temp(/.*)?"
semanage fcontext -a -t httpd_var_lib_t "/usr/local/nginx/uwsgi_temp(/.*)?"

restorecon -R /usr/local/nginx/client_body_temp
restorecon -R /usr/local/nginx/fastcgi_temp
restorecon -R /usr/local/nginx/proxy_temp
restorecon -R /usr/local/nginx/scgi_temp
restorecon -R /usr/local/nginx/uwsgi_temp

systemctl enable nginx
systemctl start nginx
systemctl restart php-fpm
systemctl restart mariadb

firewall-cmd --permanent --add-service=http
firewall-cmd --reload


7. Загрузите скрипт установки Автор-ВУЗ.

а) если у вас обычная версия:

curl http://avtor-vuz.ru/private/scripts/install.php > /var/www/html/install.php
chown apache:apache /var/www/html/install.php

б) если у вас оффлайн-версия - скачайте оффлайн установщик из личного кабинета (раздел Установка), и закачайте его на сервер при помощи SFTP-клиента (например, CyberDuck) в папку /var/www/html. Затем выполните команду:

chown apache:apache /var/www/html/install.php


8. Для начала установки системы откройте браузер и обратитесь по адресу http://<адрес_вашего_сервера>/install.php и следуйте инструкциям установщика.

Процесс установки на базе Ubuntu Linux

1. Установите последнюю LTS-версию Ubuntu Linux с официального сайта Ubuntu. При установке обеспечьте доступ сервера к интернету.

Если вы хотите продолжить установку удаленно (при помощи PuTTY или другого SSH-клиента), выполните следующую команду:

sudo apt install -y openssl-server

2. Выполните обновление системы.

sudo apt -y update
sudo apt -y upgrade

3. Установите веб-сервер nginx.

sudo apt install build-essential -y
sudo apt install -y git

cd /tmp
wget https://nginx.org/download/nginx-1.17.3.tar.gz
wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
wget http://www.zlib.net/zlib-1.2.11.tar.gz
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar zxvf nginx-1.17.3.tar.gz
tar zxvf pcre-8.43.tar.gz
tar zxvf zlib-1.2.11.tar.gz
tar zxvf openssl-1.1.1d.tar.gz

git clone http://github.com/wandenberg/nginx-push-stream-module.git
NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module

cd /tmp/nginx-1.17.3
./configure --prefix=/usr/share/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --http-log-path=/var/log/nginx/access.log \
            --pid-path=/run/nginx.pid \
            --lock-path=/var/lock/nginx.lock \
            --user=www-data \
            --group=www-data \
            --build=Ubuntu \
            --http-client-body-temp-path=/var/lib/nginx/body \
            --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
            --http-proxy-temp-path=/var/lib/nginx/proxy \
            --http-scgi-temp-path=/var/lib/nginx/scgi \
            --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
            --with-openssl=../openssl-1.1.1d \
            --with-openssl-opt=enable-ec_nistp_64_gcc_128 \
            --with-openssl-opt=no-nextprotoneg \
            --with-openssl-opt=no-weak-ssl-ciphers \
            --with-openssl-opt=no-ssl3 \
            --with-pcre=../pcre-8.43 \
            --with-pcre-jit \
            --with-zlib=../zlib-1.2.11 \
            --with-compat \
            --with-file-aio \
            --with-threads \
            --with-http_addition_module \
            --with-http_auth_request_module \
            --with-http_dav_module \
            --with-http_flv_module \
            --with-http_gunzip_module \
            --with-http_gzip_static_module \
            --with-http_mp4_module \
            --with-http_random_index_module \
            --with-http_realip_module \
            --with-http_slice_module \
            --with-http_ssl_module \
            --with-http_sub_module \
            --with-http_stub_status_module \
            --with-http_v2_module \
            --with-http_secure_link_module \
            --with-mail \
            --with-mail_ssl_module \
            --with-stream \
            --with-stream_realip_module \
            --with-stream_ssl_module \
            --with-stream_ssl_preread_module \
            --with-debug \
            --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' \
            --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' \
            --add-module=../nginx-push-stream-module
make
sudo make install

4. Установите БД MySQL.

sudo apt install -y mysql-server
sudo mysql -e"ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password'; FLUSH PRIVILEGES;"

sudo sh -c 'echo "
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
" > /etc/mysql/conf.d/disable_strict_mode.cnf'

5. Установите PHP 5.6.

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update -y
sudo apt install -y php5.6 php5.6-fpm php5.6-common php5.6-gd php5.6-mbstring php5.6-xml php5.6-mcrypt php5.6-mysql php5.6-opcache php5.6-ldap php5.6-soap

6. Сконфигурируйте веб-сервер.

sudo sed -i "s/;date.timezone.*/date.timezone = Europe\\/Moscow/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/; max_input_vars.*/max_input_vars = 100000/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/;mbstring.func_overload.*/mbstring.func_overload = 0/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/;mbstring.internal_encoding.*/mbstring.internal_encoding = utf-8/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/short_open_tag.*/short_open_tag = On/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/error_reporting.*/error_reporting \= E_ALL \& ~E_DEPRECATED \& ~E_STRICT \& ~E_NOTICE \& ~E_WARNING/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/display_errors = .*/display_errors = On/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/;realpath_cache_size = .*/realpath_cache_size = 4096k/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/opcache.max_accelerated_files=.*/opcache.max_accelerated_files=100000/g" /etc/php/5.6/mods-available/opcache.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 512M/g" /etc/php/5.6/fpm/php.ini
sudo sed -i "s/post_max_size = .*/post_max_size = 512M/g" /etc/php/5.6/fpm/php.ini


sudo sh -c 'echo "
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    sendfile            off; # bug in VirtualBox
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    push_stream_shared_memory_size          64M;

    server {
        listen 80 default_server;
        server_name  _;
        root /var/www/html;
        index index.html index.htm index.php;

        client_max_body_size 512m;

        location / {
            try_files \$uri \$uri/ @urlrewrite;
        }

        location /messages/pub {
            push_stream_publisher admin;
            push_stream_channels_path \$arg_id;

            allow 127.0.0.1;
        }

        location ~ /messages/sub/(.*) {
            push_stream_subscriber long-polling;
            push_stream_channels_path \$1;
            push_stream_longpolling_connection_ttl 300s;
            push_stream_last_received_message_time \$arg_time;
            push_stream_last_received_message_tag \$arg_tag;
        }

        location ~ \.php\$ {
            try_files \$uri @urlrewrite;
            include /etc/nginx/fastcgi_params;
            fastcgi_pass  unix:/run/php/php5.6-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
            fastcgi_read_timeout 600;
        }

        location @urlrewrite {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass  unix:/run/php/php5.6-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME \$document_root/index.php;
            fastcgi_read_timeout 600;
        }
    }
}
" > /etc/nginx/nginx.conf'

sudo sh -c 'echo "
[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g \"daemon on; master_process on;\"
ExecStart=/usr/sbin/nginx -g \"daemon on; master_process on;\"
ExecReload=/usr/sbin/nginx -g \"daemon on; master_process on;\" -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target" > /etc/systemd/system/nginx.service'

sudo mkdir /var/lib/nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo ufw allow http

sudo mkdir /usr/lib/php/5.6/zend
cd /usr/lib/php/5.6/zend
sudo wget http://avtor-vuz.ru/private/scripts/zend_loader/opcache.so
sudo wget http://avtor-vuz.ru/private/scripts/zend_loader/ZendGuardLoader.so
sudo chmod 0755 /usr/lib/php/5.6/zend/opcache.so
sudo chmod 0755 /usr/lib/php/5.6/zend/ZendGuardLoader.so
sudo ln -s /etc/php/5.6/mods-available/zend.ini /etc/php/5.6/fpm/conf.d/30-zend.ini

sudo sh -c 'echo "
zend_extension = /usr/lib/php/5.6/zend/opcache.so
zend_extension = /usr/lib/php/5.6/zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
" > /etc/php/5.6/mods-available/zend.ini'
sudo mkdir /var/www/html -p

sudo systemctl restart php5.6-fpm
sudo systemctl restart nginx


7. Загрузите скрипт установки Автор-ВУЗ.

а) если у вас обычная версия:

cd /var/www/html
sudo wget http://avtor-vuz.ru/private/scripts/install.php
sudo chown -R www-data:www-data /var/www/html

б) если у вас оффлайн-версия - скачайте оффлайн установщик из личного кабинета (раздел Установка), и закачайте его на сервер при помощи SFTP-клиента (например, CyberDuck) в папку /var/www/html. Затем выполните команду:

sudo chown -R www-data:www-data /var/www/html


8. Для начала установки системы откройте браузер и обратитесь по адресу http://<адрес_вашего_сервера>/install.php и следуйте инструкциям установщика.