Как установить Redmine на Ubuntu 16.04

Redmine - бесплатный веб-инструмент управления проектами с открытым исходным кодом. Он написан на Ruby on Rails и поддерживает несколько серверов баз данных для хранения базы данных. Это многофункциональное приложение, поддерживающее несколько проектов, ACL на основе ролей и с��стему отслеживания проблем. Он также имеет диаграмму Ганта и поддержку календаря, управление файлами, вики проекта и форум, а также многие другие функции. Он поддерживает системы контроля версий, такие как Git, SVN или CVS. Это также многоязычный, поддерживающий до 49 языков.

Предпосылки

  • Экземпляр сервера Vultr Ubuntu 16.04.
  • Пользователь Sudo .
  • Доменное имя указывает на сервер.

В этом руководстве мы будем использовать 192.168.1.1в качестве общедоступного IP-адреса и в redmine.example.com качестве имени домена, указывающего на экземпляр Vultr. Обязательно замените все вхождения примера доменного имени и IP-адреса фактическим.

Обновите свою базовую систему, используя руководство Как обновить Ubuntu 16.04 . После обновления системы перейдите к установке зависимостей.

Установите Apache

Redmine написан на Ruby on Rails, поэтому нам потребуется Phusion Passenger для интеграции с веб-сервером Apache для обслуживания приложения.

Установите Apache.

sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev

Для сборки Ruby и Passenger нам также понадобятся некоторые инструменты разработки. Установите необходимые инструменты.

sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev

Установить PostgreSQL

Redmine поддерживает несколько типов серверов баз данных, таких как MySQL, PostgreSQL и MSSQL. В этом руководстве мы будем использовать PostgreSQL для размещения сервера базы данных Redmine.

PostgreSQL - это объектно-реляционная система баз данных. Репозиторий Ubuntu по умолчанию содержит старую версию PostgreSQL, поэтому добавьте репозиторий PostgreSQL в систему.

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

Установите сервер базы данных PostgreSQL.

sudo apt -y install postgresql

Запустите сервер PostgreSQL и включите его автоматический запуск во время загрузки.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Измените пароль для пользователя PostgreSQL по умолчанию.

sudo passwd postgres

Войдите в систему как пользователь PostgreSQL.

sudo su - postgres

Создайте нового пользователя PostgreSQL для Redmine.

createuser redmine

Вам разрешено использовать любое имя пользователя вместо redmine. PostgreSQL предоставляет psql оболочку для выполнения запросов к базе данных. Переключитесь на оболочку PostgreSQL.

psql

Установите пароль для вновь созданного пользователя для базы данных Redmine.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Замените DBPassword на безопасный пароль. Создайте новую базу данных для установки Redmine.

CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

Выход из psql оболочки.

\q

Переключиться на sudo пользователя.

exit

Установите еще несколько необходимых зависимостей PostgreSQL.

sudo apt -y install libpqxx-dev protobuf-compiler

Установите Ruby

Мы установим последнюю версию Ruby с использованием RVM. Он используется для установки и управления несколькими версиями Ruby.

Добавьте репозиторий RVM.

sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update

Установите RVM.

sudo apt -y install rvm

Поскольку нам нужно установить Ruby для всей системы, мы временно переключимся на пользователя root.

sudo -i

Обновите переменные среды.

echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh

Установите последнюю версию Ruby.

rvm install 2.5.1

Примечание. Если вы используете другую версию Ruby, обязательно обновите путь Ruby соответствующим образом.

Используйте установленную версию Ruby.

rvm use 2.5.1 --default

Вы можете проверить его версию.

ruby -v

Вы увидите похожий вывод.

root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Install bundler, который является менеджером зависимостей для приложения Ruby.

gem install bundler

Ruby теперь установлен. Перед установкой Redmine нам нужно установить Phusion Passenger.

Установить Пассажира

Выполните следующую команду, чтобы установить Passenger.

gem install passenger

Установите модуль Apache для пассажиров.

passenger-install-apache2-module

Сценарий установщика задаст вам несколько вопросов. Во-первых, он предоставит вам информацию о процессе установки. Затем он попросит вас выбрать язык, который вы будете использовать. Поскольку наше приложение написано на Ruby on Rails, выберите 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

Установщик теперь проверит требования. Программа установки не обнаружит никаких отсутствующих зависимостей и автоматически продолжит компиляцию и установку модуля.

Как только модуль будет установлен, он предложит вам добавить модуль в файл конфигурации Apache.

Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
     PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/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чтобы пропустить этот шаг.

Наконец, скрипт установщика проверит установку, и вы увидите предупреждение о том, что модуль Passenger не указан в конфигурации Apache.

Validating installation...

 * Checking whether this Passenger install is in PATH... ✓
 * Checking whether there are no other Passenger installations... ✓
 * Checking whether Apache is installed... ✓
 * Checking whether the Passenger module is correctly configured in Apache... (!)

   You did not specify 'LoadModule passenger_module' in any of your Apache
   configuration files. Please paste the configuration snippet that this
   installer printed earlier, into one of your Apache configuration files, such
   as /etc/apache2/apache2.conf.


Detected 0 error(s), 1 warning(s).
Press ENTER to continue.

Теперь, когда мы установили модуль Passenger для Apache, перейдите к загрузке и установке Redmine. sudoСнова переключитесь на пользователя, так как нам больше не нужно запускать команды с использованием rootпользователя.

exit

Установить Redmine

Рекомендуется использовать непривилегированного пользователя для запуска приложения, чтобы сохранить его изолированным от остальной системы. Создайте нового пользователя для Redmine и переключитесь на вновь созданного пользователя.

sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine

Загрузите последнюю версию Redmine с официальной страницы загрузки Redmine .

cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz

Извлеките архив и переименуйте каталог для удобства.

tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/

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

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

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

nano config/database.yml

По умолчанию файл базы данных настроен для MySQL. Найдите конфигурации для производства и разработки и протестируйте, используя адаптер MySQL. Закомментируйте все эти строки.

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

#development:
#  adapter: mysql2
#  database: redmine_development
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#test:
#  adapter: mysql2
#  database: redmine_test
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

Furthur, найдите закомментированные строки, имеющие production конфигурацию для postgresql адаптера. Раскомментируйте эти строки и обновите имя базы данных и учетные данные пользователя. Убедитесь, что вы используете правильный отступ, который состоит из двух пробелов.

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "DBPassword"

Настройте приложение для использования конфигурации PostgreSQL.

bundle config build.pg --with-pg-config=/usr/bin/pg_config

Установите зависимости, требуемые приложением.

bundle install --path vendor/bundle --without development test

В конце установки вы увидите следующее сообщение.

Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`

Следующая команда генерирует секретные токены, которые используются для кодирования данных сеанса.

bundle exec rake generate_secret_token

Написать базу данных PostgreSQL.

RAILS_ENV=production bundle exec rake db:migrate

Запустите следующую команду, которая записывает данные по умолчанию в базу данных PostgreSQL.

RAILS_ENV=production bundle exec rake redmine:load_default_data

Приведенная выше команда попросит вас выбрать язык по умолчанию для использования с приложением. Выбор по умолчанию - английский; выберите в соответствии с вашими предпочтениями.

[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.

Установка приложения Redmine завершена. Смена владельца и прав доступа к каталогам и файлам.

mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

Мы настроили все, что нам нужно от непривилегированного пользователя. Вернитесь к sudo пользователю, запустив su - <username>.

Настройте Apache

Добавьте модуль Passenger для Apache в файл конфигурации Apache. Это автоматически загрузит модуль Passenger.

echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf

Примечание . Путь к модулю «Пассажир» может изменяться при выходе новой версии «Пассажир». Чтобы найти путь к модулю, используйте sudo find / -name mod_passenger.soкоманду.

Создайте новый файл виртуального хоста для вашего приложения Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Заполните файл следующим содержанием.

<VirtualHost *:80>
    ServerName redmine.example.com

    DocumentRoot /home/redmine/redmine/public

    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine

    <Directory /home/redmine/redmine/public>
      Allow from all
      Options -MultiViews
      Require all granted
    </Directory>
</VirtualHost>

Убедитесь, что вы заменили redmine.example.com свое фактическое доменное имя. Также убедитесь, что путь к PassengerRoot и PassengerDefaultRuby верен. Путь к двоичным файлам может измениться, когда выйдет новый выпуск Ruby или Passenger. Чтобы найти эти пути, выполните следующую команду.

passenger-config about ruby-command

Вы получите следующий вывод.

user@vultr:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
  Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
  To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start


## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.

После того, как файл виртуального хоста создан. Активируйте конфигурацию.

sudo a2ensite redmine

Перезапустите веб-сервер Apache.

sudo systemctl restart apache2

Теперь вы можете получить доступ к интерфейсу Redmine http://redmine.example.com. Войти с именем пользователя adminи паролем admin. При первом входе в систему Redmine предложит вам обновить пароль.

Защита Apache с помощью Let's Encrypt SSL

Поскольку наша установка Redmine находится на общедоступном сервере, рекомендуется использовать SSL для обеспечения обмена данными с сервера.

Добавьте хранилище Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

Установите Certbot, который является клиентским приложением для Let's Encrypt CA.

sudo apt -y install certbot

Примечание. Чтобы получить сертификаты от Let's Encrypt CA, домен, для которого должны быть созданы сертификаты, должен быть направлен на сервер. Если нет, внесите необходимые изменения в записи DNS домена и дождитесь распространения DNS, прежде чем снова делать запрос сертификата. Certbot проверяет полномочия домена перед предоставлением сертификатов.

Создайте сертификаты SSL.

sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com

Сгенерированные сертификаты, вероятно, будут храниться в /etc/letsencrypt/live/redmine.example.com/. Сертификат SSL будет сохранен как, cert.pem а закрытый ключ - как privkey.pem.

Срок действия сертификатов Let's Encrypt истекает через 90 дней, поэтому рекомендуется настроить автоматическое обновление сертификатов с помощью заданий Cron.

Откройте файл задания Cron для root пользователя.

sudo crontab -e

Добавьте следующую строку в конец файла.

30 5 * * * /usr/bin/certbot renew --quiet

Вышеуказанная работа Cron будет выполняться каждый день в 5:30. Если срок действия сертификата истекает, он будет автоматически продлен.

Включите модуль SSL для Apache.

sudo a2enmod ssl

Отредактируйте файл виртуального хоста, который мы создали ранее для Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Измените файл виртуального хоста, чтобы он был похож на следующее.

<VirtualHost *:80>
    ServerName redmine.example.com
    Redirect permanent / https://redmine.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName redmine.example.com
    DocumentRoot "/home/redmine/redmine/public"
    <Directory "/home/redmine/redmine/public">
        Options None
        Require all granted
    </Directory>
    PassengerAppEnv production
    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine
    PassengerHighPerformance on

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/redmine.example.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/redmine.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem

    SSLProtocol             all -SSLv2 -SSLv3
    SSLHonorCipherOrder     on
    SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

    <IfModule headers_module>
        Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
    </IfModule>
</VirtualHost>

Сохраните файл и выйдите из редактора.

Перезапустите Apache, чтобы изменения вступили в силу.

sudo systemctl restart apache2

Вы можете теперь доступ Redmine более HTTPS в https://redmine.example.com.

Поздравляем, вы успешно установили Redmine на свой экземпляр Ubuntu 16.04. Начните разработку вашего проекта, создав или импортировав ваш проект.



Leave a Comment

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше