帮酷LOGO
0 0 评论
文章标签:Redmine  Ubuntu  RED  

使用不同的系统?

Redmine是一个免费的开源的基于Web的项目管理工具,它是一个功能丰富的应用程序,支持多个项目,基于角色的ACL的问题跟踪系统。它还有甘特图和日历支持,文件管理,每个项目都有wiki和论坛,以及还有许多其他功能,它支持版本控制系统,如Git,SVN或CVS ,它也是多语言的,支持多达49种语言。

前提条件

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

对于本教程,我们将使用192.168.1.1作为公共IP地址和redmine.example.com,作为该实例指向的域名,请确保将例子域名和IP地址全部替换为实际的。

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

安装Apache

Redmine是用RubyonRails编写的,因此我们需要Phusion Passenger与ApacheWeb服务器集成以服务于应用程序。

安装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 shell来在数据库上运行查询,切换到PostgreSQL shell 。

 
psql

 

为新创建的Redmine数据库用户设置密码。


ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

用安全密码替换DBPassword ,为Redmine安装创建一个新数据库。


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

psql shell退出。

 
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]

安装bundler,它是ruby应用程序的依赖项管理。

 
gem install bundler

 

现在安装了Ruby,在安装Redmine之前,我们需要安装Fusion Passenger 。

安装 Passenger

运行以下命令安装 Passenger 。


gem install passenger

安装用于 Passenger 的Apache模块。


passenger-install-apache2-module

安装程序脚本将向你询问一些问题,首先,它将向你提供安装过程的信息,然后,它会要求你选择你要使用的语言,由于我们的应用程序是在Rails上用ruby编写的,从菜单中选择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配置中没有指定Passenger模块。


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 ,由于我们不需要使用root用户运行任何命令,所以,再次切换到sudo用户。

 
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

找到被注释的行,postgresql适配器有production配置,取消注释这些行,并且更新数据库名称和用户凭据,确保使用正确的缩进,该缩进是两个空格。


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

我们已经从非权限用户中配置了我们需要的一切,通过运行su -<username>切换回sudo用户。

配置Apache

将Apache的 Passenger 模块添加到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

注意:Passenger模块的路径可能会随着客户的新发布而变化,若要查找模块的路径,请使用 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网络服务器。


sudo systemctl restart apache2

你现在可以在http://redmine.example.com上访问你的Redmine界面,使用用户名admin登录,并使用密码admin ,第一次登录时,Redmine会提示你更新密码。

使用let's Encrypt 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

Let's Encrypt证书在90天内到期,因此建议使用Cron作业设置证书的自动续订。

打开root用户的Cron作业文件。

 
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

你现在可以在https://redmine.example.com上通过HTTPS访问Redmine 。

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



文章标签:RED  Ubuntu  Redmine  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语