1.Redmine简介
Redmine是一个灵活的项目管理Web应用程序。它使用Ruby on Rails框架,具有跨平台和跨数据库的特性。Redmine为一个开源的软件。
Redmine具有很多特性:多项目支持、灵活的基于角色的访问控制、灵活的问题追踪系统、图表与日历、新闻文档文件管理、邮件通知、项目wiki、项目讨论区、时间追踪、版本库集成(SVN、CVS、Git)、用户自注册支持、多语言支持、多数据库支持等。
Redmine文档:查看如上图箭头指示的Redmine guide。进入如下图页面。
点击Installing Redmine
Redmine可以在大多数的Unix、Linux、macOS、windowsx系统进行安装,只要Ruby可以使用即可。
2.查看Linux版本信息
查看Linux系统的版本信息:
cat /proc/version
查看Linux系统发行版信息:
cat /etc/redhat-release
3.Ruby安装方式的选择
Ruby版本与Redmine版本的对应关系
Redmine4.0.6之前的版本,支持的最低Ruby版本为2.2
Redmine4.0.6及其之后版本,不支持Ruby2.2
Ruby社区已经停止了对Ruby2.4及之前版本的支持,因此尽量使用Ruby2.5及之后的版本
Redmine不支持JRuby
Ruby简介:Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的 Ruby 语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。
Ruby安装文档地址:http://www.ruby-lang.org/zh_cn/documentation/installation/
3.1使用包管理系统安装ruby(最终未使用该安装方式)
选择包管理系统下面的CentOS,进入如下图所示页面中的内容
在自己的Xshell中执行如下指令
sudo yum install ruby
使用yum直接安装,下载和即将安装的是2.0.0的旧版本,上面说了最好是安装2.5及之后的版本,因此放弃使用yum包管理器安装ruby的方式。
3.2使用源代码编译安装 Ruby(最终未使用该安装方式)
链接地址:http://www.ruby-lang.org/zh_cn/downloads/
选择上图中的Ruby2.7.1进行下载
通过Xftp上传到CentOS系统中,并执行如下指令更改ruby-2.7.1.tar.gz权限
chmod 777 ruby-2.7.1.tar.gz
解压缩,执行如下指令
tar -zxvf ruby-2.7.1.tar.gz
cd ruby-2.7.1
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
查看./configure指令的帮助信息
./configure --help
指定安装目录为/usr/local/localsoftware/software/ruby ,执行如下指令
./configure --prefix=/usr/local/localsoftware/software/ruby
执行make,进行编译
make
执行make install,进行安装
make install
如上图所示,需要安装openssl,执行如下指令
yum install openssl
再次执行make install,进行安装,仍然存在上述问题。尝试将解压缩之后的内容删除,重新编译和重新安装,也还是存在上述问题。
3.3使用RVM进行Ruby安装(最终使用的安装方式)
4.在CentOS中安装RVM
相关文档所在页面:http://rvm.io/rvm/security
安装gpg2
和导入keys,执行如下指令:
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
相关文档所在页面:http://rvm.io/
安装RVM,执行如下指令:
curl -sSL https://get.rvm.io | bash -s stable
安装RVM对应的默认Ruby and Rails
curl -sSL https://get.rvm.io | bash -s stable --rails
如上图,正在下载ruby-2.7.0。
下载完成后,正在对ruby-2.7.0进行编译
如上图,正在进行ruby-2.7.0的安装
如上图,ruby-2.7.0安装完成。
如上图,正在Fetch相关的.gem
RubyGems 是 Ruby 的一个包管理器,它提供一个分发 Ruby 程序和库的标准格式,还提供一个管理程序包安装的工具。
RubyGems 旨在方便地管理 gem 安装的工具,以及用于分发 gem 的服务器。这类似于 Ubuntu 下的apt-get, Centos 的 yum,Python 的 pip。RubyGems大约创建于2003年11月,从Ruby 1.9版起成为Ruby标准库的一部分。
如上图所示,已安装了40个gem。
开始使用RVM,需要执行如下指令:
source /usr/local/rvm/scripts/rvm
查看已安装的ruby版本
ruby -v
5.数据库安装
参考文档地址:https://www.redmine.org/projects/redmine/wiki/RedmineInstall
Redmine支持的数据库如下图所示
在本CentOS系统中之前就已经安装了MySQL,查看已经安装的MySQL的版本,执行如下指令
mysql --version
或
mysql -V
如上图显示已安装的MySQL版本为5.6.43,若尚未安装可以参考文章《阿里云CentOS安装mysql-5.6.43》
6.Readmine安装
官网文档:https://www.redmine.org/projects/redmine/wiki/RedmineInstall
点击上图中的download page,进入如下图页面
点击old releases,选择历史版本redmine-4.1.0.tar.gz,进行下载
将其通过xftp上传到CentOS的相关目录下
执行如下指令,修改其权限
chmod 777 ./redmine-4.1.0.tar.gz
解压缩
tar -zxvf redmine-4.1.0.tar.gz
根据实际安装的MySQL版本,对应的修改和执行sql语句
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY '自定义的密码';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
查看mysql的所有用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
编辑database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "上面的自定义密码"
安装Bundler
gem install bundler
查看已安装的ruby列表
rvm list
卸载一个已安装的版本
rvm remove 2.7.0
现在,需要安装一个低版本的ruby2.6.5
rvm install 2.6.5
添加redmine用户组和redmine用户
给redmine用户设置密码
passwd redmine
执行bundle操作时,尽量不要使用root用户,切换到redmine用户。否则,在执行bundle操作时,会提示如下内容。
重新安装bundler
gem install bundler
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID。这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。执行如下指令,指定redmine-4.1.0的拥有者为redmine
chown -R redmine:redmine ./redmine-4.1.0
切换到redmine用户
su redmine
切换到root修改sudoers
先添加sudoers文件的写权限
chmod u+w /etc/sudoers
修改sudoers
vi /etc/sudoers
添加redmine ALL=(ALL) ALL,如下图所示
撤销sudoers文件写权限
chmod u-w /etc/sudoers
根据config/database.yml中数据库的配置,安装配置的adapter需要的gems,执行如下指令:
bundle install
切换到root,给redmine用户分配/usr/local/rvm目录的写权限,执行如下指令:
chown -R redmine:redmine ./rvm
切换到redmine,再次尝试执行如下指令:
bundle install
注意:修改database.yml添加或者移除adapter后,一定要执行指令bundle install指令
这个步骤生成一个随机密钥被Rails用来编码存储有会话数据的cookie,从而防止被篡改。
重新启动后,生成新的密钥会使所有现有会话失效。
或者,可以将这个密钥存储在config/secrets.yml
执行指令,生成加密session信息的密钥
bundle exec rake generate_secret_token
在redmine-4.1.0进入之后的根目录下,执行如下指令,生成数据库结构
RAILS_ENV=production bundle exec rake db:migrate
报错Error:Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX `wiki_pages_wiki_id_title` ON `wiki_pages` (`wiki_id`, `title`)
报错信息:索引字段的长度超出了限制的长度767。
MySQL的ENGINE=InnoDB时,系统变量innodb_large_prefix开启则索引键前缀限制为3072字节。如果禁innodb_large_prefix,不管是什么表,索引键前缀限制为767字节。
因此,需要开启MySQL的innodb_large_prefix。
查询MySQL引擎的命令:
show engines;
开启MySQL的innodb_large_prefix
set global innodb_large_prefix = ON;
show variables like 'innodb_large_prefix'
需要同时修改MySQL的innodb_file_format
set global innodb_file_format = Barracuda;
此时,删除redmine数据库,重新创建redmine数据库并授权给redmine用户
CREATE DATABASE redmine CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
在redmine-4.1.0进入之后的根目录下,重新执行如下指令,生成数据库结构,成功执行不再报Error。
RAILS_ENV=production bundle exec rake db:migrate
执行如下指令,插入默认配置数据到数据库中,在命令执行过程中,会要求选择语言,此处选择zh,如下图所示,默认配置数据已成功导入。
RAILS_ENV=production bundle exec rake redmine:load_default_data
在redmine-4.1.0进入之后的根目录下,执行如下指令,设置文件的拥有者和相关操作权限:
mkdir -p tmp tmp/pdf public/plugin_assets
sudo chown -R redmine:redmine files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
如果在这些目录下已包含有文件,要确保这些文件是不可执行的
sudo find files log tmp public/plugin_assets -type f -exec chmod -x {} +
执行如下指令,测试安装
bundle exec rails server webrick -e production
WEBrick启动后,在浏览器中访问http://localhost:3000/ ,应该可以看到Redmine的欢迎页面。
或者在Xshell中使用curl访问
curl 127.0.0.1:3000
点击浏览器中Redmine主页右上角的登录,输入账号admin/admin,进入主操作页面。
登录成功后,进入如下图页面,提示修改密码
点击应用按钮,修改密码后,进入如下图页面,可以根据实际情况设置账号的基本信息。
7.RVM常用指令
查看可以安装的ruby
rvm list known
安装指定版本的ruby,如:2.6.5
rvm install 2.6.5
若系统中已安装了多个版本的ruby,则可以指定默认使用的版本
rvm use 2.6.5 --default
查看已安装的ruby列表
rvm list
卸载一个已安装的版本
rvm remove 2.7.0
切换到指定版本的ruby
rvm use 2.6.5