Как установить ПО для управления проектами Redmine на Rocky Linux 8
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите сервер Apache
- Шаг 3. Установка и настройка сервера MySQL
- Шаг 4. Установите репозиторий EPEL
- Шаг 5. Установите Ruby и другие необходимые компоненты
- Шаг 6. Установите Redmine
- Шаг 7. Установите Phusion Passenger
- Настройка сервера Apache
- Изменить порт прослушивания Apache
- Настройка Nginx
Redmine — это бесплатное программное обеспечение с открытым исходным кодом для управления проектами и инструмент отслеживания проблем. Он написан с использованием фреймворка Ruby on Rails и может быть интегрирован с различными системами контроля версий. Он включает в себя браузер репозитория и средство просмотра различий. Его можно использовать для управления функциями проекта для вики и форумов проекта, отслеживания времени и управления доступом на основе ролей. Это кросс-платформенная, кросс-база данных и поддерживает 49 языков.
В этом руководстве вы узнаете, как установить Redmine на сервер на базе Rocky Linux 8.
Предпосылки
-
A Server running Rocky Linux.
-
A non-sudo user with root privileges.
-
Disable SELinux.
-
Everything is updated.
$ sudo dnf update
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.
$ sudo firewall-cmd --state running
Откройте порт 3000, который мы можем использовать для проверки Redmine.
$ sudo firewall-cmd --permanent --add-port=3000
Разрешить порты HTTP и HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Перезагрузите брандмауэр, чтобы изменения вступили в силу.
$ sudo firewall-cmd --reload
Шаг 2 — Установите сервер Apache
Мы будем использовать веб-сервер Apache для развертывания Redmine. Установите Apache с помощью следующей команды.
$ sudo dnf install httpd
Включите и запустите службу Apache.
$ sudo systemctl enable --now httpd.service
Предоставьте вашему текущему зарегистрированному пользователю пользователя apache, чтобы он имел необходимый доступ к каталогу
/var/www/redmine
.$ sudo usermod -aG $USER apache
Шаг 3 — Установите и настройте сервер MySQL
Мы будем использовать базу данных MySQL для хранения данных. Репозиторий Rocky Linux Appstream поставляется с последней версией MySQL.
Установите MySQL.
$ sudo dnf install mysql-server
Включите и запустите службу MySQL.
$ sudo systemctl enable mysqld --now
Безопасная установка MySQL.
$ sudo mysql_secure_installation
На первом этапе вас спросят, хотите ли вы настроить подключаемый модуль Validate Password, который вы можете использовать для проверки надежности вашего пароля MySQL. Выберите
Y
, чтобы продолжить. На следующем шаге вам будет предложено выбрать уровень проверки пароля. Выберите2
, который является самым надежным уровнем и потребует, чтобы ваш пароль состоял не менее чем из восьми символов и включал сочетание прописных и строчных букв, цифр и специальных символов.Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
На следующем шаге вам будет предложено выбрать пароль root. Выберите надежный пароль, который соответствует требованиям плагина проверки пароля. На следующем шаге вас спросят, следует ли продолжить с выбранным паролем. Нажмите
y
, чтобы продолжить.Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Нажмите
Y
, а затем клавишуENTER
для всех следующих запросов на удаление анонимных пользователей и тестовой базы данных, отключение входа в систему root и загрузку новых установленных правил.... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. ... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. ... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. ... Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Войдите в оболочку MySQL. Введите пароль root, чтобы продолжить.
$ mysql -u root -p
Создайте пользователя
redmine
. Убедитесь, что пароль соответствует требованиям, установленным ранее.mysql> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'Your_password2';
Создайте базу данных
redmine
.mysql> CREATE DATABASE redmine CHARACTER SET utf8mb4;
Предоставьте пользователю права доступа к базе данных
redmine
.mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
Выйдите из оболочки.
mysql> exit
Шаг 4 — Установите репозиторий EPEL
Некоторые пакеты, необходимые для Redmine, доступны в репозитории EPEL. Выполните следующую команду, чтобы установить репозиторий EPEL.
$ sudo dnf install epel-release
Включите репозиторий PowerTools.
$ sudo dnf config-manager --set-enabled powertools
Шаг 5 - Установите Ruby и другие необходимые компоненты
Rocky Linux 8 поставляется с четырьмя различными версиями Ruby — 2.5, 2.6, 2.7 и 3.0.
Перечислите все доступные модули Ruby.
$ dnf module list ruby Last metadata expiration check: 0:18:58 ago on Mon 03 Jan 2022 11:50:10 AM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary ruby 2.5 [d] common [d] An interpreter of object-oriented scripting language ruby 2.6 common [d] An interpreter of object-oriented scripting language ruby 2.7 common [d] An interpreter of object-oriented scripting language ruby 3.0 common [d] An interpreter of object-oriented scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Последняя версия Redmines совместима со всеми версиями, кроме 3.0. Мы установим Ruby 2.7 для нашего руководства.
Сбросьте другие версии и включите версию Ruby 2.7.
$ sudo dnf module reset ruby $ sudo dnf module enable ruby:2.7
Установите Руби.
$ sudo dnf install ruby ruby-devel
Проверьте установку.
$ ruby -v ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
Установите все остальные пакеты, необходимые Redmine.
$ sudo dnf install rpm-build wget libxml2-devel make automake libtool ImageMagick ImageMagick-devel mariadb-devel httpd-devel openssl-devel libcurl-devel gcc gcc-c++
Шаг 6 — Установите Redmine
Посетите страницу загрузок Redmine и проверьте последнюю доступную стабильную версию. На момент написания этого руководства последняя доступная версия — 4.2.3.
Используйте
wget
для загрузки Redmine.$ wget https://redmine.org/releases/redmine-4.2.3.tar.gz
Извлеките и переместите файлы в каталог
/var/www/redmine
.$ tar xfz redmine-4.2.3.tar.gz $ sudo mv redmine-4.2.3 /var/www/redmine
Перейдите в каталог
/var/www/redmine
.$ cd /var/www/redmine
Создайте файлы конфигурации Redmine, используя прилагаемые файлы примеров.
$ cp config/configuration.yml.example config/configuration.yml $ cp config/database.yml.example config/database.yml $ cp public/dispatch.fcgi.example public/dispatch.fcgi
Откройте файл
database.yml
для редактирования.$ nano config/database.yml
Найдите и настройте параметры базы данных в следующем разделе.
production: adapter: mysql2 database: redmine host: localhost username: redmine password: "Your_password2" # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Установите пакет для управления зависимостями ruby gem.
$ gem install bundler
Установите среду для установки зависимостей gem.
$ bundle config set --local without 'development test'
Установите зависимости драгоценного камня.
$ bundle install
Если у вас возникли проблемы с версиями gem, используйте следующую команду для восстановления.
$ sudo gem pristine --all
Создайте случайный секретный ключ, чтобы предотвратить подделку файлов cookie для хранения данных сеанса.
$ bundle exec rake generate_secret_token
Создайте структуру базы данных.
$ RAILS_ENV=production bundle exec rake db:migrate
Вставьте данные в базу данных MySQL.
$ RAILS_ENV=production REDMINE_LANG=en bundle exec rake redmine:load_default_data
Создайте необходимые каталоги и установите права доступа к файлам.
$ mkdir -p tmp/pdf $ mkdir -p public/plugin_assets $ chown -R $USER:$USER files log tmp public/plugin_assets $ chmod -R 755 /var/www/remine/
Выполните следующую команду, чтобы запустить экземпляр сервера Rails.
$ bundle exec rails server webrick -e production => Booting WEBrick => Rails 5.2.6 application starting in production on http://0.0.0.0:3000 => Run `rails server -h` for more startup options [2022-01-03 12:58:19] INFO WEBrick 1.6.1 [2022-01-03 12:58:19] INFO ruby 2.7.4 (2021-07-07) [x86_64-linux] [2022-01-03 12:58:19] INFO WEBrick::HTTPServer#start: pid=117224 port=3000
Откройте URL-адрес
http://
, чтобы открыть экран входа в Redmine.:3000/login Введите учетные данные по умолчанию (admin/admin) для входа в систему. Вам будет предложено изменить пароль.
Далее вы будете перенаправлены на страницу «Моя учетная запись».
Redmine успешно установлен.
Затем нажмите CTRL+C на терминале, чтобы остановить сервер.
Шаг 7 - Установите Phusion Passenger
Phusion Passenger — это рубиновый сервер приложений, который позволяет нам обслуживать Redmine через сторонний сервер. В нашем случае мы будем использовать Apache.
Установить пассажира.
$ gem install passenger
Установите модуль Passenger для сервера Apache.
$ passenger-install-apache2-module
Вас встретит приветственное сообщение. Нажмите Enter, чтобы продолжить.
Welcome to the Phusion Passenger Apache 2 module installer, v6.0.12. This installer will guide you through the entire installation process. It shouldn't take more than 3 minutes in total. Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application. Don't worry if anything goes wrong. This installer will advise you on how to solve any problems. Press Enter to continue, or Ctrl-C to abort. --------------------------------------------
Далее вас попросят указать язык. Ruby выбран по умолчанию, поэтому просто нажмите Enter, чтобы продолжить.
Which languages are you interested in? Use <space> to select. If the menu doesn't display correctly, press '!' ? ? Ruby ? Python ? Node.js ? Meteor --------------------------------------------
Вы можете получить предупреждение о правах доступа к файлам. Если вы следовали нашему руководству, просто нажмите Enter, чтобы продолжить.
Warning: some directories may be inaccessible by the web server! The web server typically runs under a separate user account for security reasons. That user must be able to access the Phusion Passenger(R) files. However, it appears that some directories have too strict permissions. This may prevent the web server user from accessing Phusion Passenger(R) files. It is recommended that you relax permissions as follows: sudo chmod o+x "/home/navjot" Press Ctrl-C to return to the shell. (Recommended) After relaxing permissions, re-run this installer. -OR- Press Enter to continue anyway.
Весь процесс займет около 10-15 минут. Если вы получаете сообщение об ошибке, подобное следующему, это, скорее всего, связано с нехваткой оперативной памяти. Вы должны либо увеличить оперативную память на своем сервере, либо установить пространство подкачки.
c++: fatal error: Killed signal terminated program cc1plus compilation terminated. rake aborted!
После завершения процесса вы получите следующее сообщение.
-------------------------------------------- Almost there! Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /home/navjot/.gem/ruby/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /home/navjot/.gem/ruby/gems/passenger-6.0.12 PassengerDefaultRuby /usr/bin/ruby </IfModule> After you restart Apache, you are ready to deploy any number of web applications on Apache, with a minimum amount of configuration! Press ENTER when you are done editing.
Пока не нажимайте Enter. Откройте новый сеанс на своем сервере в качестве текущего пользователя и выполните следующие настройки.
Настроить сервер Apache
Создайте файл конфигурации модуля Apache для Phusion Passenger.
$ sudo nano /etc/httpd/conf.modules.d/00-passenger.conf
Вставьте код, который вы получили в конце установки пассажира.
LoadModule passenger_module /home/navjot/.gem/ruby/gems/passenger-6.0.12/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /home/username/.gem/ruby/gems/passenger-6.0.12 PassengerDefaultRuby /usr/bin/ruby </IfModule>
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Создайте еще один файл конфигурации Apache для сайта Redmine.
$ sudo nano /etc/httpd/conf.d/redmine.conf
Вставьте в него следующий код.
Listen 3000 <IfModule mod_passenger.c> PassengerRoot /home/username/.gem/ruby/gems/passenger-6.0.12 PassengerDefaultRuby /usr/bin/ruby </IfModule> <VirtualHost *:3000> ServerName redmine.example.com DocumentRoot "/var/www/redmine/public" CustomLog logs/redmine_access.log combined ErrorLog logs/redmine_error_log LogLevel warn <Directory "/var/www/redmine/public"> Options Indexes ExecCGI FollowSymLinks Require all granted AllowOverride all </Directory> </VirtualHost>
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Откройте основной файл конфигурации Apache
/etc/httpd/conf/httpd.conf
для редактирования.$ sudo nano /etc/httpd/conf/httpd.conf
Найдите переменную
ServerName
и раскомментируйте, удалив решетку (#) перед ней и установив ее значение следующим образом.ServerName localhost
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте конфигурацию Apache.
$ httpd -t Syntax OK
Вернитесь назад и нажмите Enter, чтобы продолжить установку Passenger. Он выполнит некоторые проверки, и вы должны увидеть следующее сообщение об их успешном завершении.
Deploying a web application To learn how to deploy a web app on Passenger, please follow the deployment guide: https://www.phusionpassenger.com/library/deploy/apache/deploy/ Enjoy Phusion Passenger, a product of Phusion® (www.phusion.nl) :-) https://www.phusionpassenger.com Passenger® is a registered trademark of Phusion Holding B.V.
Перезапустите сервер Apache.
$ sudo systemctl restart httpd
Ваш веб-сайт должен быть доступен по адресу
http://redmine.example.com:3000
.Это не идеальный способ доступа к Redmine. Он по-прежнему обслуживается через небезопасный протокол HTTP и использует номер порта. Мы установим Nginx в качестве обратного прокси-сервера и будем обслуживать Redmine по протоколу HTTPS, чтобы улучшить это. Прежде чем перейти к установке и настройке Nginx, нам нужно настроить SSL-сертификат.
Шаг 8 — Установите SSL
Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot. Выполните следующие команды, чтобы установить Certbot.
$ sudo dnf install certbot
Остановите сервер Apache.
$ sudo systemctl stop httpd
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d redmine.example.com
Приведенная выше команда загрузит сертификат в каталог
/etc/letsencrypt/live/redmine.example.com
на вашем сервере.Запустите сервер Apache.
$ sudo systemctl start httpd
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Создайте корневой каталог вызова для автоматического обновления Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл
/etc/cron.daily/certbot-renew
и откройте его для редактирования.$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh certbot renew --cert-name redmine.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl restart nginx"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Измените права доступа к файлу задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 9. Установите и настройте Nginx в качестве обратного прокси-сервера
Rocky Linux 8 поставляется с четырьмя разными версиями Nginx — 1.14, 1.16, 1.18 и 1.20.
Перечислите все доступные модули Nginx.
$ dnf module list nginx Last metadata expiration check: 20:23:20 ago on Mon 03 Jan 2022 12:38:07 PM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary nginx 1.14 [d] common [d] nginx webserver nginx 1.16 common [d] nginx webserver nginx 1.18 common [d] nginx webserver nginx 1.20 common [d] nginx webserver Extra Packages for Enterprise Linux Modular 8 - x86_64 Name Stream Profiles Summary nginx mainline common nginx webserver nginx 1.20 common [d] nginx webserver Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Сбросьте другие версии и включите версию Nginx 1.20.
$ sudo dnf module reset nginx $ sudo dnf module enable nginx:1.20
Установите Нгинкс. Мы временно отключаем репозиторий
Epel
, так как хотим получить Nginx из Appstream.$ sudo dnf install nginx --disablerepo=epel-modular
Проверьте установку.
$ nginx -v nginx version: nginx/1.20.0
Чтобы избежать конфликта с Nginx, нам нужно изменить порт по умолчанию, который прослушивает Apache.
Изменить порт прослушивания Apache
Откройте файл
/etc/httpd/conf/httpd.conf
для редактирования.$ sudo nano /etc/httpd/conf/httpd.conf
Измените порт с 80 на 8080 следующим образом.
Listen 8080
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Перезапустите Апач.
$ sudo systemctl restart httpd
Настроить Nginx
Создайте и откройте файл
/etc/nginx/conf.d/redmine.conf
для редактирования.$ sudo nano /etc/nginx/conf.d/redmine.conf
Вставьте в него следующий код.
# Redirect all non-encrypted to encrypted server { listen 80; server_name redmine.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name redmine.example.com; ssl_certificate /etc/letsencrypt/live/redmine.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/redmine.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/redmine.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; access_log /var/log/nginx/redmine.example.com.access.log main; error_log /var/log/nginx/redmine.example.com.error.log; location / { proxy_pass http://localhost:3000; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Откройте файл
/etc/nginx/nginx.conf
для редактирования.$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой
include /etc/nginx/conf.d/*.conf;
.server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте синтаксис файла конфигурации Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Запустите службу Nginx, чтобы включить новую конфигурацию.
$ sudo systemctl start nginx
Ваше приложение Redmine должно быть доступно по адресу
https://redmine.example.com
.Заключение
На этом мы завершаем наше руководство, в котором вы узнали, как установить Redmine Project Manager на сервер на базе Rocky Linux 8. Вы также научились обслуживать приложение Redmine через Nginx по протоколу HTTPS. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.