Содержание
Мы будем устанавливать контрольную панель вебсервера Hestia на Ubuntu 20.04 LTS, после чего установим Redmine
Установка Hestia
Логинимся под root
Ставим саму панель. Она бесплатная. Но будьте внимательны выбирая параметры сервера и компонентов, откат на данный момент невозможен.
wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
Если ставить по умолчанию всё что предлагают, а это:
-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 hst-install.sh
Либо ставить с ключами
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
После чего можем логиниться в панель и проверять как работает.
Установка Ruby
RVM
Для установки нам понадобится установить curl:
apt-get install curl
А так же установить public key для скачивания RVM
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
Теперь установим RVM, что бы можно было использовать любые версии Ruby и наборы Gem-ов в дальнейшем.
curl -sSL https://get.rvm.io | bash -s stable
Устанавливаем Ruby ruby-2.4.1
rvm install ruby-2.4.1 rvm use ruby 2.4.1 --default rvm gemset create redmine rvm use 2.4.1@redmine --default
Возможные проблемы в процессе
Если во время установки curl вы получите такое сообщение:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html
То вам нужно выполнить:
apt-get install ca-certificates
При попытки установить Ruby вы можете получить сообщение:
RVM is not a function, selecting rubies with ‘rvm use …’ will not work.
В этом случае вам нужно выполнить команду:
/bin/bash --login
Если у вас возникнут какие то другие проблемы с работой RVM, то большинство из них решается установкой зависимостей.
Для получения зависимостей RVM выполните команду:
rvm requirements
После установки мы можем создать БД для Redmine, для этого подключитесь к MySQL:
Можно визуально создать базу данных через Hestia, указав имя базы данных, логин, пароль и кодировку UTF8MB4
Либо через терминал:
mysql -ulogin -ppassword
B выполните команды по созданию БД, пользователя который будет с ней работать и привелегий для него:
create database redmine character set utf8mb4; create user 'redmine'@'localhost' identified by 'my_password'; grant all privileges on redmine.* to 'redmine'@'localhost'; exit;
Установка Redmine
Выберите директорию в которой у вас будет размещен Redmine, перейдите в нее и клонируйте репозиторий, с помощью команды:
git clone https://github.com/redmine/redmine.git
В таком случае он будет в подпапке redmine, чтобы клонировать в текущий каталог, необходимо добавить точку в конце:
git clone https://github.com/redmine/redmine.git.
После необходимо выдать права на директорию Redmine:
chmod 775 -R /your_redmine_directory/redmine chown -R admin /your_redmine_director/redmine
Далее редактируем файл конфигурации базы данных /your_redmine_director/redmine/config/database.yml и вписываем в него следующие строки:
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "[password]" encoding: utf8mb4
Устанавливаем Rmagic и пакет без которого не поставиться gem:
apt-get install graphicsmagick-libmagick-dev-compat apt-get install libmagickwand-dev
Устанавливаем все необходимые gem с помощью бандлера:
cd /your_redmine_directory/redmine gem install bundler
Если вы установли MySql то, вам нужно будет выполнить команду:
apt-get install libmysqlclient-dev
Устанавливаем все необходимые гемы:
bundle install --without development test bundle exec rake generate_secret_token
Проведем миграции и загрузим данные необходимые для работы системы:
RAILS_ENV=production rake db:migrate RAILS_ENV=production REDMINE_LANG=ru rake redmine:load_default_data
На этом этапе ваша база данных должна распухнуть.
Установка и настройка Application-сервера
Стандартный WebRick сервер крайне медлителен, поэтому разумно будет установить сторонний Application-сервер. Из огромного их числа, я предпочитаю Puma.
Для этого создадим в корневой директории Redmine файл с названием Gemfile.local. Внутри него напишем:
gem 'puma', '5.0.2'
Снова выполним команду bundle install, что бы gem установился.
Создадим файл puma.rb
touch /your_redmine_directory/redmine/config/puma.rb
И запишем в него следующие содержимое:
# 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
Для systemd
Создайте файл в директории /etc/systemd/system/puma.service и добавьте в него следующее содержимое:
[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
После этого выполняем следующие команды:
# После установки или изминения puma.service systemctl daemon-reload # Включаем автозагрузку systemctl enable puma.service # Стартуем puma systemctl start puma.service # Проверяем, что puma запустилась systemctl status puma.service
Создаём шаблон виртуальных хостов под Redmin для nginx
nano /usr/local/hestia/data/templates/web/nginx/redmine.tpl
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_*; }
nano /usr/local/hestia/data/templates/web/nginx/redmine.stpl
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_*; }
После чего выбираем шаблон с названием Redmin при создании или редактировании виртуального хоста в Hestia в разделе Поддержка Proxy NGINX — Шаблон Proxy
Сомневаюсь что вы поставите всё с первого раза, а возможно просто я такой невезучий.
Будьте внимательны с путями в каталог redmin, в зависимости от того куда и как ставили.
В любом случае моя огромная благодарность другу со стажем Максиму Иванченко, за терпение