12
Окт

Установка Hestia + Redmin на Ubuntu 20.04 LTS

Мы будем устанавливать контрольную панель вебсервера Hestia на Ubuntu 20.04 LTS, после чего установим Redmine

Установка Hestia

Логинимся под root
Ставим саму панель. Она бесплатная. Но будьте внимательны выбирая параметры сервера и компонентов, откат на данный момент невозможен.
[bash title=»код»]wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh[/bash]
Если ставить по умолчанию всё что предлагают, а это:
[bash title=»код»]-a, —apache Install Apache [yes|no] default: yes
-n, —nginx Install Nginx [yes|no] default: yes
-w, —phpfpm Install PHP-FPM [yes|no] default: yes
-o, —multiphp Install Multi-PHP [yes|no] default: no
-v, —vsftpd Install Vsftpd [yes|no] default: yes
-j, —proftpd Install ProFTPD [yes|no] default: no
-k, —named Install Bind [yes|no] default: yes
-m, —mysql Install MariaDB [yes|no] default: yes
-g, —postgresql Install PostgreSQL [yes|no] default: no
-x, —exim Install Exim [yes|no] default: yes
-z, —dovecot Install Dovecot [yes|no] default: yes
-c, —clamav Install ClamAV [yes|no] default: yes
-t, —spamassassin Install SpamAssassin [yes|no] default: yes
-i, —iptables Install Iptables [yes|no] default: yes
-b, —fail2ban Install Fail2ban [yes|no] default: yes
-q, —quota Filesystem Quota [yes|no] default: no
-d, —api Activate API [yes|no] default: yes
-r, —port Change Backend Port default: 8083
-l, —lang Default language default: en
-y, —interactive Interactive install [yes|no] default: yes
-s, —hostname Set hostname
-e, —email Set admin email
-p, —password Set admin password
-f, —force Force installation
-h, —help Print this help[/bash]
Просто запустить скрипт:
[bash title=»код»]bash hst-install.sh[/bash]

Либо ставить с ключами
[bash title=»код»]bash hst-install.sh -n yes -w yes -t no -c no -x yes -z yes -b yes -i yes -m yes -l de \ -s youdomain.tld -e [email protected] -p yourpasswordhere -a no -k no -o no[/bash]

После чего можем логиниться в панель и проверять как работает.

Установка Ruby

RVM

Для установки нам понадобится установить curl:
[bash title=»код»]apt-get install curl[/bash]

А так же установить public key для скачивания RVM
[bash title=»код»]gpg —keyserver hkp://keys.gnupg.net —recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB[/bash]

Теперь установим RVM, что бы можно было использовать любые версии Ruby и наборы Gem-ов в дальнейшем.
[bash title=»код»]curl -sSL https://get.rvm.io | bash -s stable[/bash]

Устанавливаем Ruby ruby-2.4.1

[bash title=»код»]rvm install ruby-2.4.1
rvm use ruby 2.4.1 —default
rvm gemset create redmine
rvm use 2.4.1@redmine —default[/bash]

Возможные проблемы в процессе
Если во время установки curl вы получите такое сообщение:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

То вам нужно выполнить:
[bash title=»код»]apt-get install ca-certificates[/bash]

При попытки установить Ruby вы можете получить сообщение:
RVM is not a function, selecting rubies with ‘rvm use …’ will not work.

В этом случае вам нужно выполнить команду:
[bash title=»код»]/bin/bash —login[/bash]

Если у вас возникнут какие то другие проблемы с работой RVM, то большинство из них решается установкой зависимостей.
Для получения зависимостей RVM выполните команду:
[bash title=»код»]rvm requirements[/bash]

После установки мы можем создать БД для Redmine, для этого подключитесь к MySQL:
Можно визуально создать базу данных через Hestia, указав имя базы данных, логин, пароль и кодировку UTF8MB4

Либо через терминал:
[bash title=»код»]mysql -ulogin -ppassword[/bash]
B выполните команды по созданию БД, пользователя который будет с ней работать и привелегий для него:
[bash title=»код»]create database redmine character set utf8mb4;
create user ‘redmine’@’localhost’ identified by ‘my_password’;
grant all privileges on redmine.* to ‘redmine’@’localhost’;
exit;[/bash]

Установка Redmine

Выберите директорию в которой у вас будет размещен Redmine, перейдите в нее и клонируйте репозиторий, с помощью команды:
[bash title=»код»]git clone https://github.com/redmine/redmine.git[/bash]

В таком случае он будет в подпапке redmine, чтобы клонировать в текущий каталог, необходимо добавить точку в конце:
[bash title=»код»]git clone https://github.com/redmine/redmine.git.[/bash]

После необходимо выдать права на директорию Redmine:
[bash title=»код»]chmod 775 -R /your_redmine_directory/redmine
chown -R admin /your_redmine_director/redmine[/bash]

Далее редактируем файл конфигурации базы данных /your_redmine_director/redmine/config/database.yml и вписываем в него следующие строки:

[bash title=»код»]production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "[password]"
encoding: utf8mb4[/bash]

Устанавливаем Rmagic и пакет без которого не поставиться gem:

[bash title=»код»]apt-get install graphicsmagick-libmagick-dev-compat
apt-get install libmagickwand-dev[/bash]

Устанавливаем все необходимые gem с помощью бандлера:
[bash title=»код»]cd /your_redmine_directory/redmine
gem install bundler[/bash]

Если вы установли MySql то, вам нужно будет выполнить команду:
[bash title=»код»]apt-get install libmysqlclient-dev[/bash]

Устанавливаем все необходимые гемы:
[bash title=»код»]bundle install —without development test
bundle exec rake generate_secret_token[/bash]

Проведем миграции и загрузим данные необходимые для работы системы:
[bash title=»код»]RAILS_ENV=production rake db:migrate
RAILS_ENV=production REDMINE_LANG=ru rake redmine:load_default_data[/bash]
На этом этапе ваша база данных должна распухнуть.

Установка и настройка Application-сервера

Стандартный WebRick сервер крайне медлителен, поэтому разумно будет установить сторонний Application-сервер. Из огромного их числа, я предпочитаю Puma.
Для этого создадим в корневой директории Redmine файл с названием Gemfile.local. Внутри него напишем:
[bash title=»код»]gem ‘puma’, ‘5.0.2’[/bash]

Снова выполним команду bundle install, что бы gem установился.

Создадим файл puma.rb
[bash title=»код»]touch /your_redmine_directory/redmine/config/puma.rb[/bash]
И запишем в него следующие содержимое:
[bash title=»код»]# Change to match your CPU core count
workers 2

# Min and Max threads per worker
threads 1, 6

worker_timeout 600

app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/tmp"
directory app_dir

# Default to production
rails_env = ENV[‘RAILS_ENV’] || "production"
environment rails_env

# Set up socket location
bind "unix://#{shared_dir}/sockets/puma.sock"

# Logging
stdout_redirect "#{app_dir}/log/puma.stdout.log", "#{app_dir}/log/puma.stderr.log", true

# Set master PID and state locations
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"

on_worker_boot do
require "active_record"
ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env])
end[/bash]

Для systemd

Создайте файл в директории /etc/systemd/system/puma.service и добавьте в него следующее содержимое:
[bash title=»код»][Unit]
Description=Redmine
After=network.target

# Uncomment for socket activation (see below)
# Requires=puma.socket

[Service]
# Foreground process (do not use —daemon in ExecStart or config.rb)
Type=simple

# Preferably configure a non-privileged user
User=admin
#Group=www

# Specify the path to your puma application root
WorkingDirectory=/home/admin/web/ваш_хост/public_html/redmine

ExecStart=/bin/bash -lc ‘/usr/local/rvm/gems/ruby-2.4.1@redmine/wrappers/puma -C /home/admin/web/ваш_хост/public_html/redmine/config/puma.rb’
public_html/tmp/pids/puma.pid

Restart=always

[Install]
WantedBy=multi-user.target[/bash]

После этого выполняем следующие команды:
[bash title=»код»]# После установки или изминения puma.service
systemctl daemon-reload

# Включаем автозагрузку
systemctl enable puma.service

# Стартуем puma
systemctl start puma.service

# Проверяем, что puma запустилась
systemctl status puma.service[/bash]

Создаём шаблон виртуальных хостов под Redmin для nginx

[bash title=»код»]nano /usr/local/hestia/data/templates/web/nginx/redmine.tpl[/bash]

[bash title=»код»]upstream redmine {
server unix:/home/%user%/web/%domain%/public_html/redmine/tmp/sockets/puma.sock fail_timeout=0;
}

server {
listen %ip%:%proxy_port%;
server_name %domain_idn% %alias_idn%;

include %home%/%user%/conf/web/%domain%/nginx.forcessl.conf*;

root %docroot%/public;

try_files $uri/index.html $uri @redmine;

location @redmine {
proxy_pass http://redmine;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_read_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;
}

location /error/ {
alias %home%/%user%/web/%domain%/document_errors/;
}

location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}

include %home%/%user%/conf/web/%domain%/nginx.conf_*;
}[/bash]

[bash title=»код»]nano /usr/local/hestia/data/templates/web/nginx/redmine.stpl[/bash]

[bash title=»код»]upstream sredmine {
server unix:/home/%user%/web/%domain%/public_html/redmine/tmp/sockets/puma.sock fail_timeout=0;
}

server {
listen %ip%:%proxy_ssl_port% ssl http2;
server_name %domain_idn% %alias_idn%;
ssl_certificate %ssl_pem%;
ssl_certificate_key %ssl_key%;
ssl_stapling on;
ssl_stapling_verify on;
error_log /var/log/%web_system%/domains/%domain%.error.log error;
access_log /var/log/%web_system%/domains/%domain%.log combined;
access_log /var/log/%web_system%/domains/%domain%.bytes bytes;

include %home%/%user%/conf/web/%domain%/nginx.hsts.conf*;

root %docroot%/public;

try_files $uri/index.html $uri @redmine;

location @redmine {
proxy_pass http://sredmine;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_read_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;
}

location /error/ {
alias %home%/%user%/web/%domain%/document_errors/;
}

location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}

include %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*;
}[/bash]

После чего выбираем шаблон с названием Redmin при создании или редактировании виртуального хоста в Hestia в разделе Поддержка Proxy NGINX — Шаблон Proxy

Сомневаюсь что вы поставите всё с первого раза, а возможно просто я такой невезучий.
Будьте внимательны с путями в каталог redmin, в зависимости от того куда и как ставили.
В любом случае моя огромная благодарность другу со стажем Максиму Иванченко, за терпение

Обратная связь

    The average number of adverse effects was 3. T max is 23 minutes in females and 32 minutes in males. What other drugs will affect doxercalciferol Viagra natural sin receta. Archived from the original on 2009-08-14.

    Talk to your doctor before using this form of cefadroxil if you have diabetes. What should I tell my healthcare team before starting CABLIVI? There is no FDA guidance on the use of Tetracycline (oral) with respect to specific gender populations https://www.apotheke-rezeptfreie.com/. Opper K, Uder S, Song K Development of Heterogeneous and Homogeneous Platforms for Rapid Analysis of DNA-Protein Interactions.

    Contact Us