Домены
Интересные статьи
Домены

Установка Sakai 11 на CentOS 7

Установка Sakai 11 на CentOS 7

Sakai — система сетевого и дистанционного обучения  используется для поддержки учебного процесса. Большинство ресурсов системы существует в закрытом режиме: доступ к ним есть только у преподавателя курса и студентов, официально зачисленных на его курс. Получить доступ к ресурсам Sakai можно только по представлению преподавателя.

Ниже я опишу, как происходит Установка Sakai 11 на CentOS 7

Начальные данные (что необходимо для установки):

  • Сервер на CentOS 7 (VPS) с отключенным SELinux и незапущенным firewalld
  • Домен site.ru
  • Root права на сервере

Приступим

1. Базовые операции

Обновление пакетов

[root@sakai ~]# yum update

 

Установка нужных для работы htop nano wget curl epel-release (для Fail2ban)

[root@sakai ~]# yum install htop nano wget curl epel-release

Установка и настройка Fail2ban

[root@sakai ~]# yum install fail2ban

Настройка правил блокировки

Откроем в редакторе файл с правилами (он может не существовать и будет создан)

nano /etc/fail2ban/jail.local

Впишем следующее:

[DEFAULT]
bantime = 3600
ignoreip = 127.0.0.1/8
maxretry = 3

[sshd]
enabled = true

Данными параметрами мы устанавливаем:

  • время блокировки равное 3600 секунд
  • добавляем в исключения локальный адрес
  • устанавливаем порог блокировки равным 3
  • включаем правила блокировки для SSH

Для сохранения файла, нажмите Ctrl + X и потом Y для подтверждения сохранения

Запуск Fail2ban и добавление в автозапуск

[root@sakai ~]# systemctl start fail2ban

[root@sakai ~]# systemctl enable fail2ban

При выполнении второй команды в ответ консоль выведет

Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.

что сообщает о том, что fail2ban успешно добавлен в автозапуск

Установка Java и Tomcat

Sakai написан на Java и будет запускаться сервером Tomcat, установим их.

Установка Java

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

[root@sakai ~]# yum install java-1.8.0-openjdk-devel

После установки проверим корректность установки Java, запросив его версию.

[root@sakai ~]# java -version

В результате будет показано следующее:

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Если был показан аналогичный результат (могут отличаться версии), то значит Java успешно установлен.

Установка Tomcat

После установки Java установим сам Tomcat

Tomcat поставляемый в репозиториях непригоден для Sakai, поэтому он будет установлен не из репозитория

Добавим группу tomcat

[root@sakai ~]# groupadd tomcat

Добавим пользователя tomcat и запретим ему вход на сервер

[root@sakai ~]# useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

Перейдем в домашнюю директорию нашего пользователя (/root)

[root@sakai ~]# cd ~

Загрузим последнюю версию Tomcat (в данный момент это 8.5.24)

[root@sakai ~]# wget http://apache-mirror.rbc.ru/pub/apache/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz

Создадим директорию, куда будет установлен tomcat

[root@sakai ~]# mkdir /opt/tomcat

Распакуем архив с Tomcat в /opt/tomcat

[root@sakai ~]# tar xvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1

Сделаем владельцем директории с Tomcat пользователя tomcat

[root@sakai ~]# chown -R tomcat:tomcat /opt/tomcat

Перейдем в /opt/tomcat

[root@sakai ~]# cd /opt/tomcat

Установим права доступа к директории conf и файлам в ней

[root@sakai tomcat]# chmod g+rwx conf

[root@sakai tomcat]# chmod g+r conf/*

Теперь надо запустить Tomcat, при установке из архива не поставляется юнит для запуска, но его напишем сами

Откроем файл в редакторе

[root@sakai tomcat]# nano /etc/systemd/system/tomcat.service

Запишем в него

# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target

Перезагрузим список юнитов

[root@sakai tomcat]# systemctl daemon-reload

Запустим Tomcat

[root@sakai tomcat]# systemctl start tomcat

Проверим статус запуска

[root@sakai tomcat]# systemctl status tomcat

Последняя команда должна выдать подобный вывод:

● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
Active: active (running) since Вт 2018-01-09 12:14:21 MSK; 5s ago
Process: 3930 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 3937 (java)
CGroup: /system.slice/tomcat.service
└─3937 java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Djava.security.egd=file:/...
янв 09 12:14:21 sakai.rpa-mu.ru systemd[1]: Starting Apache Tomcat Web Application Container...
янв 09 12:14:21 sakai.rpa-mu.ru systemd[1]: Started Apache Tomcat Web Application Container.

Добавим Tomcat в автозагрузку

[root@sakai tomcat]# systemctl enable tomcat

В результате должен быть показан подобный вывод:

Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /etc/systemd/system/tomcat.service.

На этом начальная настройка Tomcat завершена.

Установка MySQL (MariaDB)

Для работы Sakai требуется сервер баз данных, будет использован MySQL, а точнее его форк MariaDB

Установка MariaDB

[root@sakai tomcat]# yum install mariadb-server

Первый запуск MariaDB

[root@sakai tomcat]# systemctl start mariadb

Добавим в автозагрузку

[root@sakai tomcat]# systemctl enable mariadb

Смена пароля root mysql

Теперь нужно установить пароль для пользователя root, войдем в консоль mysql

[root@sakai tomcat]# mysql

Переключимся на базу данных mysql

MariaDB [(none)]> use mysql;

Установим пароль для пользователя root равным 12345 (для примера)

MariaDB [(none)]> UPDATE user SET Password = PASSWORD('12345') WHERE User = 'root';
Никогда не ставьте простые пароли, используйте пароли не менее 10 символов длиной

Создание базы данных и пользователя для Sakai

Сразу подготовим базу данных и пользователя для Sakai

Создадим саму базу данных

MariaDB [mysql]> CREATE DATABASE `sakai` CHARACTER SET utf8;

Создадим пользователя sakai с паролем 12345 и дадим ему все права на базу данных sakai

MariaDB [mysql]> grant all on sakai.* to 'sakai'@'localhost' identified by '12345';

Сбросим кеш привилегий

MariaDB [mysql]> flush privileges;

Базовая настройка сервера баз данных

Откроем файл конфигурации в редакторе

[root@sakai tomcat]# nano /etc/my.cnf

Добавим в него следующие строки в секцию [mysqld]

bind-address = 127.0.0.1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 4096M
innodb_flush_log_at_trx_commit = 2
transaction-isolation = READ-COMMITTED

query_cache_size = 32M
join_buffer_size = 1M
tmp_table_size = 256M
max_heap_table_size = 256M
thread_cache_size = 4
table_open_cache = 1000

max_allowed_packet = 512M
wait_timeout = 10000

Сохраним файл и перезагрузим сервер MySQL

[root@sakai tomcat]# systemctl restart mariadb

Установка Sakai

Для того, чтобы Sakai заработал, требуется дополнительно подготовить Tomcat, а также загрузить сам Sakai

Сначала донастроим Tomcat

Дополнительная настройка Tomcat

Sakai требуются особые параметры запуска Tomcat, которые передаются через файл /opt/tomcat/bin/setenv.sh
Т.к. мы уже находимся в директории /opt/tomcat, то пути будут использованы относительно ее.

Откроем файл в редакторе

[root@sakai tomcat]# nano bin/setenv.sh

Запишем в него следующее:

export JAVA_OPTS="-server -Xmx1028m -XX:MaxMetaspaceSize=512m -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dhttp.agent=Sakai -Djava.util.Arrays.useLegacyMergeSort=true -Dsakai.home=/path/to/desired/sakai/home/"

Сохраним файл

Разрешим выполнение файла

[root@sakai tomcat]# chmod +x bin/setenv.sh

Удалим стандартные приложения (они нам не нужны)

[root@sakai tomcat]# rm -rf webapps/*

Исключим некоторые файлы, для ускорения запуска.

Откроем файл в редакторе

[root@sakai tomcat]# nano conf/context.xml

Добавим в секцию Context (после ) следующее:

<JarScanner>
<!-- This is to speedup startup so that tomcat doesn't scan as much -->
<JarScanFilter defaultPluggabilityScan="false"
defaultTldScan="false"
tldScan="jsf-impl-*.jar,jsf-widgets-*.jar,myfaces-impl-*.jar,pluto-taglib-*.jar,sakai-sections-app-util-*.jar,spring-webmvc-*.jar,standard-*.jar,tomahawk*.jar,tomahawk-*.jar"/>
</JarScanner>

Сохраним файл

В целях безопасности сделаем Tomcat доступным только с localhost:

Откроем файл

[root@sakai tomcat]# nano conf/server.xml

И строки

<Connector port="8080" protocol="HTTP/1.1"

заменим на

<Connector port="8080" address="127.0.0.1" protocol="HTTP/1.1"

и для второй строки

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

на

<Connector port="8009" address="127.0.0.1" protocol="AJP/1.3" redirectPort="8443" />

Сохраним файл и перезагрузим Tomcat

[root@sakai tomcat]# systemctl restart tomcat

Установка самого Sakai

После предварительной подготовки сервера, установка Sakai сводится к копированию файлов.

Загрузим последнюю версию Sakai

[root@sakai tomcat]# wget http://source.sakaiproject.org/release/11.4/artifacts/sakai-bin-11.4.tar.gz

Распакуем архив с Sakai

[root@sakai tomcat]# tar xvf sakai-bin-11.4.tar.gz

Удалим ненужный архив

[root@sakai tomcat]# rm sakai-bin-11.4.tar.gz

Изменим права на директорию

[root@sakai tomcat]# chown -R tomcat:tomcat /opt/tomcat/

Создадим директорию sakai, в которой будет храниться файл конфигурации Sakai

[root@sakai tomcat]# mkdir sakai

Изменим права на нее

[root@sakai tomcat]# chown tomcat:tomcat sakai

Создадим файл конфигурации Sakai:

[root@sakai tomcat]# nano sakai/sakai.properties

Впишите в него следующие строки:

serverName=

site.ru

serverNameAliases=www.

site.ru

serverUrl=http://localhost:8080/
username@javax.sql.BaseDataSource=

sakai

password@javax.sql.BaseDataSource=

12345

vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/

sakai

?useUnicode=true&characterEncoding=UTF-8
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

Где жирным шрифтом выделены адрес сайта, логин, пароль и имя базы данных

Сохраним файл

Загрузим MySQL Connector для Java

[root@sakai tomcat]# wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.45.tar.gz

Распакуем архив

[root@sakai tomcat]# tar xvf mysql-connector-java-5.1.45.tar.gz

Скопируем коннектор в директорию lib

[root@sakai tomcat]# cp mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jar lib/

и изменим права на него

[root@sakai tomcat]# chmod 750 lib/mysql-connector-java-5.1.45-bin.jar

Удалим архив

[root@sakai tomcat]# rm mysql-connector-java-5.1.45.tar.gz

Теперь перезапустим Tomcat, для инициализации и запуска Sakai. Первый запуск Sakai может быть в около минуты.

[root@sakai tomcat]# systemctl restart tomcat

Установка nginx

Т.к. Tomcat будет доступен только с localhost, установим nginx, который будет проксировать все запросы на Tomcat, а также принимать SSL соединения

Установка nginx

[root@sakai tomcat]# yum install nginx

Запуск

[root@sakai tomcat]# systemctl start nginx

Добавление в автозапуск

[root@sakai tomcat]# systemctl enable nginx

Откроем файл /etc/nginx/conf.d/sakai.conf в редакторе

[root@sakai tomcat]# nano /etc/nginx/conf.d/sakai.conf

И запишем в него

server {
listen 80;
server_name

site.ru www.site.ru

;

location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/acme-challenge {
root /usr/share/nginx/html;
}
}

Где выделенные участки замените на адрес вашего сайта.

Сохраним файл.

Перезапустим nginx, чтобы сайт стал доступен.

[root@sakai tomcat]# systemctl restart nginx

Сразу подготовим все для SSL, будет использован SSL сертификат от LetsEncrypt

Создадим файл dhparam.pem

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Установим необходимые инструменты

yum -y install git bc

Загрузим letsencrypt

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Перейдем в директорию с LetsEncrypt

cd /opt/letsencrypt

Запросим сертификат

./letsencrypt-auto certonly -a webroot --webroot-path=/usr/share/nginx/html -d

site.ru

Где выделенное замените на адрес сайта.

В процессе запроса сертификата у вас запросят E-mail (куда будут поступать информационные сообщения), а также публиковать ли данные о вашем сертификате (в анонимном реестре)

В результате вы должны увидеть подобный вывод:

Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/sakai.rpa-mu.ru/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/sakai.rpa-mu.ru/privkey.pem
Your cert will expire on 2018-04-09. To obtain a new or tweaked
version of this certificate in the future, simply run
letsencrypt-auto again. To non-interactively renew *all* of your
certificates, run "letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:

Изменим файл конфигурации nginx, для SSL

Откроем файл /etc/nginx/conf.d/sakai.conf в редакторе

[root@sakai tomcat]# nano /etc/nginx/conf.d/sakai.conf

И заменим содержимое на

server {
listen 80;
server_name

site.ru www.site.ru

;

## Uncomment to redirect from http to https
#return 301 https://

site.ru

$request_uri;

location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/acme-challenge {
root /usr/share/nginx/html;
}
}

server {
listen 443 ssl;
server_name

site.ru www.site.ru

;

ssl_certificate /etc/letsencrypt/live/

site.ru

/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/

site.ru

/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;

location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /.well-known/acme-challenge {
root /usr/share/nginx/html;
allow all;
}
}

Выделенные участки замените на адрес своего сайта.

Также, если необходим редирект с http на https, то раскомментируйте (уберите #) строку

#return 301 https...;

Перезапустим nginx:

[root@sakai tomcat]# systemctl restart nginx

Настройка firewalld

Запустим firewalld, если он не запущен

[root@sakai tomcat]# systemctl start firewalld

Добавим его в автозагрузку

[root@sakai tomcat]# systemctl enable firewalld

Разрешим доступ извне по HTTP (80 порт)

[root@sakai tomcat]# firewall-cmd --zone=public --permanent --add-service=http

Разрешим доступ извне по HTTPS (443 порт)

[root@sakai tomcat]# firewall-cmd --zone=public --permanent --add-service=https

Перезапустим firewalld

[root@sakai tomcat]# firewall-cmd --reload

 

 

Sakai доступен по адресу: http://site.ru/portal/

Источники информации:

Официальная инструкция по установке Sakai (по ней Sakai не заработал)

Официальный сайт Tomcat

Установка минимального сервера CentOS 7 часть 1

Установка минимального сервера CentOS 7 часть 2

Обо мне cyber01

Прочитайте также

Как установить Java с помощью apt в Ubuntu 20.04

Java один из самых популярных языков программирования, а JVM (Java’s virtual machine) используется в качестве окружения для запуска …

Как установить Python 3.6 в CentOS 6

В CentOS 6 по умолчанию используется Python 2, но бывает даже для такой старой системы …

Как установить RabbitMQ в CentOS 7

RabbitMQ это широко используемый брокер сообщений с открытым исходным кодом, написан на языке программирования Erlang. …

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *