Поиск по сайту:

Как установить ПО для управления проектами Redmine на Rocky Linux 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите сервер Apache
  4. Шаг 3. Установка и настройка сервера MySQL
  5. Шаг 4. Установите репозиторий EPEL
  6. Шаг 5. Установите Ruby и другие необходимые компоненты
  7. Шаг 6. Установите Redmine
  8. Шаг 7. Установите Phusion Passenger
    1. Настройка сервера Apache

    1. Изменить порт прослушивания Apache
    2. Настройка 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://:3000/login, чтобы открыть экран входа в Redmine.

    Введите учетные данные по умолчанию (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. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.