如何在Ubuntu 16.04上安装Redmine

Redmine是一个免费的开源基于Web的项目管理工具。它是用Ruby on Rails编写的,并且支持多个数据库服务器来存储数据库。它是功能丰富的应用程序,支持多个项目,基于角色的ACL和问题跟踪系统。它还具有甘特图和日历支持,文件管理,每个项目Wiki和论坛以及许多其他功能。它支持版本控制系统,例如Git,SVN或CVS。它也是多语言的,支持多达49种语言。

先决条件

  • Vultr Ubuntu 16.04服务器实例。
  • 一个sudo的用户
  • 指向服务器的域名。

在本教程中,我们将使用192.168.1.1公共IP地址和 redmine.example.com 指向Vultr实例的域名。请确保将所有示例域名和IP地址替换为实际的域名和IP地址。

使用指南如何更新Ubuntu 16.04更新基本系统。系统更新后,继续安装依赖项。

安装Apache

Redmine是用Ruby on Rails编写的,因此我们将要求Phusion Passenger与Apache Web服务器集成以为应用程序提供服务。

安装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

为Redmine创建一个新的PostgreSQL用户。

createuser redmine

您可以使用任何用户名代替 redmine。PostgreSQL提供了psql 在数据库上运行查询的 外壳。切换到PostgreSQL shell。

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

我们将使用RVM安装最新版本的Ruby。它用于安装和管理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可跳过此步骤。

最后,安装程序脚本将验证安装,您将看到一条警告,指出未在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.

现在我们已经为Apache安装了Passenger模块,继续下载并安装Redmine。sudo再次切换到用户,因为我们不需要使用rootuser 运行其他命令。

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

进一步,找到带有 适配器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

将用于Apache的Passenger模块添加到Apache配置文件中。这将自动加载乘客模块。

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 用您的实际域名替换 。此外,请确保该路径 PassengerRootPassengerDefaultRuby 正确。当有新版本的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 Web服务器。

sudo systemctl restart apache2

现在,您可以在上访问Redmine界面 http://redmine.example.com。使用用户名 admin和密码登录 admin。首次登录时,Redmine将提示您更新密码。

让我们加密SSL保护Apache安全

由于我们的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

让我们加密证书的有效期限为90天,因此建议您使用Cron作业设置证书的自动续订。

打开用户的Cron作业文件 root

sudo crontab -e

在文件末尾添加以下行。

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

上述Cron作业将每天凌晨5:30运行。如果证书到期,它将自动更新。

为Apache启用SSL模块。

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 admin@example.com
    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

您现在访问管理平台上可以 HTTPShttps://redmine.example.com

恭喜,您已经在Ubuntu 16.04实例上成功安装了Redmine。通过创建或导入项目来开始开发项目。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息