如何在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 [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

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

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



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在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 機器變磚。閱讀這篇文章以了解更多信息