Гид по технологиям

Установка Redmine 3.2 на Ubuntu 16.04 с Nginx и MySQL

• 6 min read • DevOps • Обновлено 26 Nov 2025
Redmine 3.2: установка на Ubuntu 16.04
Redmine 3.2: установка на Ubuntu 16.04

Redmine 3.2 устанавливается на Ubuntu 16.04 с использованием RVM/Ruby 2.2, MySQL и Phusion Passenger + Nginx. В статье приведён пошаговый план: подготовка зависимостей, настройка БД, установка Passenger и Nginx, развёртывание Redmine, базовые меры безопасности и проверка работоспособности.

Коротко о Redmine

Redmine — это веб‑приложение для управления проектами и учёта задач, построенное на Ruby on Rails. Поддерживает многоязычные интерфейсы (42 языка), несколько проектов в одном инстансе, вики, управление файлами и REST API. В этой инструкции рассматривается установка Redmine 3.2 на Ubuntu 16.04 (64 бит) с Nginx и MySQL.

Требования

  • Ubuntu 16.04 — 64‑бит.
  • root‑доступ или эквивалентные привилегии sudo.
  • Рекомендуется выделить минимум 1 CPU и 1 ГБ ОЗУ для тестовой установки; для продакшена — больше по нагрузке.

Шаг 1 — Установка зависимостей

Сначала станьте root и обновите списки пакетов. Дальше все команды выполняются от root:

sudo su  
apt-get update

Установите зависимости Redmine через apt:

apt-get install mysql-server mysql-client libmysqlclient-dev imagemagick libmagickwand-dev libcurl4-openssl-dev git-core subversion

Установщик запросит пароль root MySQL — задайте надёжный пароль.

Важно: в продакшен‑окружении используйте актуальные пакеты и обновляйте систему перед установкой.

Шаг 2 — Установка Ruby и RVM

Redmine 3.2 стабильно работает с Ruby 2.2.x, поэтому используем RVM для установки Ruby 2.2.5:

gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3  
curl -L https://get.rvm.io | bash -s stable --ruby=2.2.5

Перезагрузите окружение RVM и добавьте автозагрузку в ~/.bashrc:

source /usr/local/rvm/scripts/rvm  
echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"' >> ~/.bashrc

Совет: если система использует другую оболочку, добавьте строку в соответствующий профиль пользователя.

Шаг 3 — Настройка MySQL для Redmine

Войдите в MySQL как root:

mysql -u root -p  
TYPE YOUR PASSWORD

Создайте базу данных и пользователя (в примере имя и пароль — redmine, замените на безопасные значения):

create database redmine;  
create user redmine@localhost identified by 'redmine';  
grant all privileges on redmine.* to redmine@localhost identified by 'redmine';  
flush privileges;  
q\

Важно: используйте сложный пароль и, при необходимости, ограничьте доступ по сети (например, bind‑address в my.cnf).

Шаг 4 — Установка Phusion Passenger и Nginx

Phusion Passenger упрощает запуск Ruby‑приложений под Nginx. Установите passenger через gem и запустите установщик модуля Nginx:

gem install passenger --no-ri --no-rdoc  
passenger-install-nginx-module

В интерактивном установщике выберите поддержку Ruby (и Python при желании), затем вариант установки Nginx: “Yes: download, compile and install Nginx for me. (recommended)” и используйте каталог по умолчанию /opt/nginx/.

Примечание: компиляция Nginx может потребовать дополнительных системных библиотек. Следуйте подсказкам инсталлятора.

Шаг 5 — Конфигурация Nginx

Откройте каталог конфигурации и отредактируйте nginx.conf:

cd /opt/nginx/conf/  
vim nginx.conf

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

include vhost/*.conf;

Создайте каталог для виртуальных хостов и файл конфигурации Redmine:

mkdir -p /opt/nginx/conf/vhost
cd /opt/nginx/conf/vhost/  
vim redmine.conf

Вставьте пример виртуального хоста:

    server {  
        listen       80;  
        server_name  www.redmine.me;  
   
        root /var/www/redmine/public;  
        passenger_enabled on;  
        client_max_body_size      10m; # Max attachemnt size  
   
        # redirect server error pages to the static page /50x.html  
        #  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
    }

Сохраните файл и создайте unit для systemd, чтобы управлять Nginx как сервисом:

cd /lib/systemd/system/  
vim nginx.service

Вставьте сервис‑юнит:

[Unit]  
Description=The NGINX HTTP and reverse proxy server  
After=syslog.target network.target remote-fs.target nss-lookup.target  
   
[Service]  
Type=forking  
PIDFile=/opt/nginx/logs/nginx.pid  
ExecStartPre=/opt/nginx/sbin/nginx -t  
ExecStart=/opt/nginx/sbin/nginx  
ExecReload=/bin/kill -s HUP $MAINPID  
ExecStop=/bin/kill -s QUIT $MAINPID  
PrivateTmp=true  
   
[Install]  
WantedBy=multi-user.target

Перезагрузите systemd и запустите Nginx:

systemctl daemon-reload  
systemctl start nginx

Проверьте, что Nginx слушает порт 80:

netstat -plntu | grep nginx  
   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4871/nginx

Шаг 6 — Установка Redmine

Создайте каталог и загрузите код Redmine из SVN ветки 3.2:

mkdir -p /var/www/
cd /var/www/  
svn co https://svn.redmine.org/redmine/branches/3.2-stable redmine

Скопируйте пример конфигураций:

cd redmine  
cp config/configuration.yml.example config/configuration.yml  
cp config/database.yml.example config/database.yml

Отредактируйте config/database.yml, указав данные, созданные на шаге 3:

vim config/database.yml

Пример секции production:

production:  
  adapter: mysql2  
  database: redmine  
  host: localhost  
  username: redmine  
  password: "redmine"  
  encoding: utf8

Создайте временные каталоги и установите права на файлы:

mkdir -p tmp tmp/pdf public/plugin_assets  
sudo chown -R www-data:www-data files log tmp public/plugin_assets  
sudo chmod -R 775 files log tmp public/plugin_assets

Установите bundler и гемы приложения:

gem install bundler  
bundle install --without development test

Сгенерируйте секретный токен и примените миграции/данные по умолчанию:

bundle exec rake generate_secret_token  
RAILS_ENV=production bundle exec rake db:migrate  
RAILS_ENV=production bundle exec rake redmine:load_default_data

Перезапустите Nginx и откройте сайт в браузере:

systemctl restart nginx

Откройте http://www.redmine.me (замените на ваш домен).

Стартовая страница Redmine — панель проекта

Вход в админку: http://www.redmine.me/login — по умолчанию логин и пароль admin.

Страница входа Redmine с полями логин и пароль

Создайте тестовый проект через веб‑интерфейс.

Создание нового проекта в Redmine — форма создания

Страница проекта будет содержать список задач, wiki и файлы.

Критерии приёмки

  • Сайт Redmine доступен по HTTP/HTTPS на заданном домене.
  • Вход в админ‑панель по учётным данным admin работает.
  • Миграции БД успешно выполнены, нет ошибок в логах (log/production.log).
  • Возможность загрузки файлов и создание задач проверены.

Отладка и распространённые ошибки

  • “Passenger could not be found” — убедитесь, что passenger установлен в том же Ruby‑окружении, что и Redmine.
  • Ошибки bundle install — проверьте наличие dev‑пакетов (libmysqlclient-dev и т. п.).
  • Проблемы с правами — убедитесь, что файлы и каталоги принадлежат www-data и имеют корректные права.
  • Nginx не стартует — запустите /opt/nginx/sbin/nginx -t для проверки синтаксиса.

Совет: смотрите системные логи (journalctl -u nginx) и логи Redmine в log/ для детальной диагностики.

Резервное копирование и восстановление

  • Бекап БД MySQL:
mysqldump -u root -p redmine > redmine_backup.sql
  • Бекап файлов Redmine (каталоги files, public/plugin_assets, конфиги):
tar czf redmine_files_$(date +%F).tar.gz /var/www/redmine/files /var/www/redmine/public/plugin_assets /var/www/redmine/config

Восстановление — вернуть дамп базы и распаковать файлы в исходные пути, затем перезапустить сервисы.

Безопасность и рекомендации по жёсткой конфигурации

  • Используйте HTTPS (Let’s Encrypt) — на Nginx настройте SSL‑сертификат и редирект с HTTP на HTTPS.
  • Ограничьте доступ к MySQL по сети (bind‑address = 127.0.0.1), используйте сильные пароли.
  • Обновляйте гемы и систему, тестируйте обновления на staging перед prod.
  • Запускайте Nginx/Passenger под учётной записью с минимальными правами; правильные владельцы и права на файлы обязательны.

Альтернативные подходы

  • Apache + Passenger: если вы предпочитаете Apache, Passenger поддерживает интеграцию с ним.
  • Docker‑контейнеры: можно упаковать Redmine в Docker с отдельными контейнерами для БД и прокси (Nginx/certbot).
  • Использовать системные пакеты для Passenger/Nginx вместо ручной компиляции (зависит от дистрибутива).

Когда этот способ не подходит:

  • Если требуется поддержка новейших версий Ruby — ветка 3.2 может требовать других версий, лучше проверить совместимость.
  • На ограниченных по ресурсам хостингах компиляция Nginx и сборка гемов может быть затруднительна.

Контрольные списки (роль‑ориентированные)

Администратор:

  • Установить OS и обновления.
  • Настроить MySQL и создать базу/пользователя.
  • Установить RVM и Ruby.
  • Настроить systemd unit и SSL.

Разработчик/DevOps:

  • Выполнить bundle install, миграции и загрузку данных.
  • Настроить мониторинг и бекапы.
  • Подготовить миграционный план перед обновлением Redmine.

Пользователь (админ Redmine):

  • Сменить пароль admin сразу после входа.
  • Создать проекты, роли и права доступа.
  • Подключить почтовую отправку задач (если требуется).

Тесты и критерии приёмки

  • Прохождение smoke‑test: страница загрузки, создание проекта, создание задачи, загрузка файла.
  • Проверка логов на отсутствие ошибок уровня ERROR/FATAL.
  • Проверка прав доступа: разные роли видят/не видят ресурсы согласно настройкам.

Совместимость и советы по обновлению

  • Redmine 3.2 рассчитан на Ruby 2.2; при переходе на более новые версии Redmine проверяйте требования к Ruby и gem’ам.
  • Для миграции данных между версиями используйте стандартные rake‑задачи и тестируйте миграции на копии БД.

Краткая методология развёртывания (шаги для автоматизации)

  1. Подготовить образ/сервер с Ubuntu 16.04 и обновлениями.
  2. Установить системные зависимости через apt.
  3. Установить RVM и Ruby, создать изолированное окружение.
  4. Настроить MySQL: создать БД и пользователя.
  5. Установить Passenger и Nginx, настроить виртуальный хост.
  6. Развернуть код Redmine, установить гемы и выполнить миграции.
  7. Настроить SSL, бекапы и мониторинг.

Заключение

Установка Redmine 3.2 на Ubuntu 16.04 с Nginx и MySQL — воспроизводимый процесс, включающий настройку окружения Ruby, MySQL, Passenger и Nginx, а также развёртывание приложения и миграции. После установки важно настроить SSL, бекапы и мониторинг, а также проверять совместимость при обновлениях.

Заметки

  • В статье приведены команды и примеры конфигураций; заменяйте пароли и доменные имена на ваши реальные значения.
  • Для продакшен‑среды рассмотрите использование отдельного сервера БД, балансировщика и автоматических бэкапов.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро