zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Redmine 5 安装(windows)

Windows安装 redmine
2023-09-27 14:29:14 时间

redmine刚好有需求用,装了一下linux版本,贼恶心,最后放弃了,选用了Bitnami的安装方式,一键部署:

1、下载bitnami-redmine windows版本

2、双击安装,直接下一步--下一步........到最后即可安装完成

3、如何安装插件???

安装完成后直接开始运行,然后开始菜单打开redmine中的使用{product_fullname}

image

cd到插件目录C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins

把插件上传到这个插件目录中C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins

比如这里安装一个DMSF(文档管理)的插件,下载地址:https://codeload.github.com/danmunn/redmine_dmsf/zip/refs/heads/master

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。

C:\Bitnami\redmine-5.0.0-1>cd C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>ls
README  redmine_dmsf  redmine_dmsf-master.zip

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>gem list bundler

*** LOCAL GEMS ***

bundler (2.2.27, default: 1.17.3)

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>gem sources -l    #查看gem源
*** CURRENT SOURCES ***

https://rubygems.org/

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>gem sources --remove https://rubygems.org/  #移除官方源
https://rubygems.org/ removed from sources

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>gem sources -a https://gems.ruby-china.com    #替换成国内源
https://gems.ruby-china.com added to sources

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>gem sources -l
*** CURRENT SOURCES ***

https://gems.ruby-china.com

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>bundle install --without development test    #安装依赖
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'development test'`, and stop using this flag
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies......
Using rake 13.0.6
Using concurrent-ruby 1.1.10
Using i18n 1.10.0
Using minitest 5.15.0
Using tzinfo 2.0.4
Using zeitwerk 2.5.4
Using activesupport 6.1.4.7
Using builder 3.2.4
Using erubi 1.10.0
Using racc 1.6.0 (x64-mingw32)
Using nokogiri 1.13.4 (x64-mingw32)
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.16.0
Using rails-html-sanitizer 1.4.2
Using actionview 6.1.4.7
Using rack 2.2.3
Using rack-test 1.1.0
Using actionpack 6.1.4.7
Using nio4r 2.5.8 (x64-mingw32)
Using websocket-extensions 0.1.5
Using websocket-driver 0.7.5 (x64-mingw32)
Using actioncable 6.1.4.7
Using globalid 1.0.0
Using activejob 6.1.4.7
Using activemodel 6.1.4.7
Using activerecord 6.1.4.7
Using marcel 1.0.2
Using mini_mime 1.1.2
Using activestorage 6.1.4.7
Using mail 2.7.1
Using actionmailbox 6.1.4.7
Using actionmailer 6.1.4.7
Using method_source 1.0.0
Using thor 1.2.1
Using railties 6.1.4.7
Using actionpack-xml_parser 2.0.1
Using actiontext 6.1.4.7
Fetching active_record_union 1.3.0
Installing active_record_union 1.3.0
Using public_suffix 4.0.7
Using addressable 2.8.0
Using bundler 2.2.27
Using chunky_png 1.4.0
Using commonmarker 0.23.1 (x64-mingw32)
Using css_parser 1.11.0
Using csv 3.2.3
Using daemons 1.4.1
Using html-pipeline 2.13.2
Using deckar01-task_list 2.3.2
Using digest 3.1.0 (x64-mingw32)
Using eventmachine 1.2.7 (x64-mingw32)
Using htmlentities 4.3.4
Using mini_magick 4.11.0
Using mysql2 0.5.3 (x64-mingw32)
Using timeout 0.2.0
Using net-protocol 0.1.3
Using strscan 3.0.1
Using net-imap 0.2.3
Using net-ldap 0.17.0
Using net-pop 0.1.1
Using net-smtp 0.3.1
Fetching ox 2.14.11
Installing ox 2.14.11 with native extensions
Using sprockets 4.0.3
Using sprockets-rails 3.4.2
Using rails 6.1.4.7
Using rbpdf-font 1.19.1
Using rbpdf 1.20.1
Using redcarpet 3.5.1 (x64-mingw32)
Using request_store 1.5.1
Using roadie 5.0.0
Using roadie-rails 3.0.0
Using rotp 6.2.0
Using rouge 3.28.0
Using rqrcode_core 1.2.0
Using rqrcode 2.1.1
Using rubyzip 2.3.2
Using sanitize 6.0.0
Fetching simple_enum 2.3.2
Installing simple_enum 2.3.2
Using thin 1.8.0 (x64-mingw32)
Using tzinfo-data 1.2022.1
Fetching uuidtools 2.2.0
Installing uuidtools 2.2.0
Fetching zip-zip 0.3
Installing zip-zip 0.3
Updating files in vendor/cache
  * active_record_union-1.3.0.gem
  * ox-2.14.11.gem
  * simple_enum-2.3.2.gem
  * uuidtools-2.2.0.gem
  * zip-zip-0.3.gem
Bundle complete! 49 Gemfile dependencies, 82 gems now installed.
Gems in the groups 'development', 'test' and 'sqlite' were not installed.
Bundled gems are installed into `../vendor/bundle`

C:\Bitnami\redmine-5.0.0-1\apps\redmine\htdocs\plugins>bundle exec rake redmine:plugins NAME=redmine_dmsf RAILS_ENV=production   #安装插件
(in C:/Bitnami/redmine-5.0.0-1/apps/redmine/htdocs)
== 1 CreateHierarchy: migrating ===============================================
-- create_table(:dmsf_folders, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0116s
-- create_table(:dmsf_files, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0075s
-- create_table(:dmsf_file_revisions, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0074s
-- create_table(:dmsf_file_locks, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0067s
-- create_table(:dmsf_user_prefs, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0126s
== 1 CreateHierarchy: migrated (0.0556s) ======================================

== 2 DmsfNormalization: migrating =============================================
-- rename_column(:dmsf_folders, :name, :title)
   -> 0.0152s
== 2 DmsfNormalization: migrated (0.0161s) ====================================

== 3 Dmsf080: migrating =======================================================
-- add_column(:projects, :dmsf_description, :text, {})
   -> 0.0046s
== 3 Dmsf080: migrated (0.0073s) ==============================================

== 4 Dmsf090: migrating =======================================================
-- add_column(:members, :dmsf_mail_notification, :boolean, {})
   -> 0.0036s
-- drop_table(:dmsf_user_prefs)
   -> 0.0060s
== 4 Dmsf090: migrated (0.0119s) ==============================================

== 5 Dmsf0901: migrating ======================================================
-- create_table(:dmsf_file_revision_accesses, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0087s
== 5 Dmsf0901: migrated (0.0112s) =============================================

== 6 Dmsf120: migrating =======================================================
-- add_column(:dmsf_file_revisions, :project_id, :integer, {:null=>true})
   -> 0.0237s
-- change_column(:dmsf_file_revisions, :project_id, :integer, {:null=>false})
   -> 0.0188s
== 6 Dmsf120: migrated (0.0665s) ==============================================

== 7 Dmsf144: migrating =======================================================
-- add_column(:dmsf_file_locks, :entity_type, :integer, {:null=>true})
   -> 0.0036s
-- add_column(:dmsf_file_locks, :lock_type_cd, :integer, {:null=>true})
   -> 0.0030s
-- add_column(:dmsf_file_locks, :lock_scope_cd, :integer, {:null=>true})
   -> 0.0039s
-- add_column(:dmsf_file_locks, :uuid, :string, {:null=>true, :limit=>36})
   -> 0.0033s
-- add_column(:dmsf_file_locks, :expires_at, :datetime, {:null=>true})
   -> 0.0030s
-- Preserving 0 file lock(s) found in old schema
-- Applying default lock scope / type - Exclusive / Write
-- change_column(:dmsf_file_locks, :entity_type, :integer, {:null=>false})
   -> 0.0178s
-- change_column(:dmsf_file_locks, :lock_type_cd, :integer, {:null=>false})
   -> 0.0192s
-- change_column(:dmsf_file_locks, :lock_scope_cd, :integer, {:null=>false})
   -> 0.0165s
-- rename_column(:dmsf_file_locks, :dmsf_file_id, :entity_id)
   -> 0.0108s
-- remove_column(:dmsf_file_locks, :locked)
   -> 0.0047s
-- rename_table(:dmsf_file_locks, :dmsf_locks)
   -> 0.0055s
-- Completing one-time file migration ...
-- Action was successful
== 7 Dmsf144: migrated (0.1196s) ==============================================

== 20120822100401 CreateDmsfWorkflows: migrating ==============================
-- create_table(:dmsf_workflows, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0064s
-- add_index(:dmsf_workflows, [:name], {:unique=>true})
   -> 0.0113s
-- change_table(:dmsf_file_revisions, {})
   -> 0.0176s
== 20120822100401 CreateDmsfWorkflows: migrated (0.0386s) =====================

== 20120822100402 CreateDmsfWorkflowSteps: migrating ==========================
-- create_table(:dmsf_workflow_steps, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0073s
-- add_index(:dmsf_workflow_steps, :dmsf_workflow_id)
   -> 0.0083s
== 20120822100402 CreateDmsfWorkflowSteps: migrated (0.0179s) =================

== 20120822100403 CreateDmsfWorkflowStepAssignments: migrating ================
-- create_table(:dmsf_workflow_step_assignments, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0072s
-- add_index(:dmsf_workflow_step_assignments, [:dmsf_workflow_step_id, :dmsf_file_revision_id], {:name=>:index_dmsf_wrkfl_step_assigns_on_wrkfl_step_id_and_frev_id, :unique=>true})
   -> 0.0061s
== 20120822100403 CreateDmsfWorkflowStepAssignments: migrated (0.0160s) =======

== 20120822100404 CreateDmsfWorkflowStepActions: migrating ====================
-- create_table(:dmsf_workflow_step_actions, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0072s
-- add_index(:dmsf_workflow_step_actions, :dmsf_workflow_step_assignment_id, {:name=>:idx_dmsf_wfstepact_on_wfstepassign_id})
   -> 0.0075s
== 20120822100404 CreateDmsfWorkflowStepActions: migrated (0.0176s) ===========

== 20130819013955 UpdateProjects: migrating ===================================
-- add_column(:projects, :dmsf_notification, :boolean, {})
   -> 0.0034s
== 20130819013955 UpdateProjects: migrated (0.0042s) ==========================

== 20131108141401 AddIndexToDmsfFiles: migrating ==============================
-- add_index(:dmsf_files, :project_id)
   -> 0.0128s
== 20131108141401 AddIndexToDmsfFiles: migrated (0.0134s) =====================

== 20131108141402 AddIndexToDmsfFolders: migrating ============================
-- add_index(:dmsf_folders, :project_id)
   -> 0.0067s
== 20131108141402 AddIndexToDmsfFolders: migrated (0.0075s) ===================

== 20131113141401 AddIndexToDmsfFileRevision: migrating =======================
-- add_index(:dmsf_file_revisions, :dmsf_file_id)
   -> 0.0056s
== 20131113141401 AddIndexToDmsfFileRevision: migrated (0.0064s) ==============

== 20131113141402 AddIndexToDmsfLock: migrating ===============================
-- add_index(:dmsf_locks, :entity_id)
   -> 0.0058s
== 20131113141402 AddIndexToDmsfLock: migrated (0.0067s) ======================

== 20131113141403 CreateDmsfLinks: migrating ==================================
-- create_table(:dmsf_links, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0072s
-- add_index(:dmsf_links, :project_id)
   -> 0.0058s
== 20131113141403 CreateDmsfLinks: migrated (0.0159s) =========================

== 20140314132501 NotificationsOn: migrating ==================================
-- change_column(:projects, :dmsf_notification, :boolean, {:default=>true, :null=>true})
   -> 0.0071s
-- change_column(:dmsf_folders, :notification, :boolean, {:default=>true, :null=>false})
   -> 0.0060s
== 20140314132501 NotificationsOn: migrated (0.0147s) =========================

== 20140519133201 TrashBin: migrating =========================================
-- add_column(:dmsf_folders, :deleted, :boolean, {:default=>false, :null=>false})
   -> 0.0054s
-- add_column(:dmsf_folders, :deleted_by_user_id, :integer, {})
   -> 0.0034s
== 20140519133201 TrashBin: migrated (0.0340s) ================================

== 20141013102501 RemoveProjectFromRevision: migrating ========================
-- remove_column(:dmsf_file_revisions, :project_id)
   -> 0.0045s
== 20141013102501 RemoveProjectFromRevision: migrated (0.0063s) ===============

== 20141015132701 RemoveFolderFromRevision: migrating =========================
-- remove_column(:dmsf_file_revisions, :dmsf_folder_id)
   -> 0.0053s
== 20141015132701 RemoveFolderFromRevision: migrated (0.0068s) ================

== 20141205143001 RemoveUniquenessFromWf: migrating ===========================
-- index_exists?(:dmsf_workflows, :name, {:name=>"index_dmsf_workflows_on_name"})
   -> 0.0007s
-- remove_index(:dmsf_workflows, :name, {:name=>"index_dmsf_workflows_on_name"})
   -> 0.0050s
== 20141205143001 RemoveUniquenessFromWf: migrated (0.0078s) ==================

== 20150120152101 NotificationsNullable: migrating ============================
-- change_column(:projects, :dmsf_notification, :boolean, {:default=>false, :null=>true})
   -> 0.0084s
-- change_column(:dmsf_folders, :notification, :boolean, {:default=>false, :null=>true})
   -> 0.0195s
-- change_column(:dmsf_files, :notification, :boolean, {:default=>false, :null=>true})
   -> 0.0227s
== 20150120152101 NotificationsNullable: migrated (0.0555s) ===================

== 20150130052716 AddExternal: migrating ======================================
-- change_column(:dmsf_links, :target_id, :integer, {:null=>true})
   -> 0.0189s
-- add_column(:dmsf_links, :external_url, :string, {:null=>true})
   -> 0.0220s
== 20150130052716 AddExternal: migrated (0.0443s) =============================

== 20150202010301 AddUserToLinks: migrating ===================================
-- add_column(:dmsf_links, :user_id, :integer, {})
   -> 0.0040s
== 20150202010301 AddUserToLinks: migrated (0.0053s) ==========================

== 20150910153701 TitleNotNull: migrating =====================================
-- change_column(:dmsf_file_revisions, :title, :string, {:null=>false})
   -> 0.0195s
== 20150910153701 TitleNotNull: migrated (0.0204s) ============================

== 20151020141801 LargeFiles: migrating =======================================
-- change_column(:dmsf_file_revisions, :size, :bigint, {:null=>true})
   -> 0.0239s
== 20151020141801 LargeFiles: migrated (0.0280s) ==============================

== 20151209100001 TitleFormat: migrating ======================================
-- add_column(:members, :title_format, :text, {:null=>true, :limit=>100})
   -> 0.0049s
== 20151209100001 TitleFormat: migrated (0.0062s) =============================

== 20160215125801 ApprovalWorkflowStatus: migrating ===========================
-- add_column(:dmsf_workflows, :status, :integer, {:null=>false, :default=>1})
   -> 0.0040s
== 20160215125801 ApprovalWorkflowStatus: migrated (0.0114s) ==================

== 20160217133001 StatusDeleted: migrating ====================================
-- change_column(:dmsf_folders, :deleted, :integer, {:default=>0})
   -> 0.0371s
-- change_column(:dmsf_files, :deleted, :integer, {:default=>0})
   -> 0.0261s
-- change_column(:dmsf_file_revisions, :deleted, :integer, {:default=>0})
   -> 0.0231s
-- change_column(:dmsf_links, :deleted, :integer, {:default=>0})
   -> 0.0230s
== 20160217133001 StatusDeleted: migrated (0.1304s) ===========================

== 20160222140401 ApprovalWorkflowStdFields: migrating ========================
-- add_column(:dmsf_workflows, :updated_on, :timestamp, {})
   -> 0.0031s
-- add_column(:dmsf_workflows, :created_on, :datetime, {})
   -> 0.0034s
-- add_column(:dmsf_workflows, :author_id, :integer, {})
   -> 0.0031s
== 20160222140401 ApprovalWorkflowStdFields: migrated (0.0279s) ===============

== 20160421150501 AddDigestToRevision: migrating ==============================
-- add_column(:dmsf_file_revisions, :digest, :string, {:limit=>40, :default=>"", :null=>false})
   -> 0.0038s
== 20160421150501 AddDigestToRevision: migrated (0.0056s) =====================

== 20161223133200 CreateDmsfPublicUrls: migrating =============================
-- create_table(:dmsf_public_urls, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0092s
-- add_index(:dmsf_public_urls, :token)
   -> 0.0087s
== 20161223133200 CreateDmsfPublicUrls: migrated (0.0200s) ====================

== 20170103164701 AddNameToAppovalWorkflowStep: migrating =====================
-- add_column(:dmsf_workflow_steps, :name, :string, {:limit=>30, :null=>true})
   -> 0.0041s
== 20170103164701 AddNameToAppovalWorkflowStep: migrated (0.0068s) ============

== 20170118142001 DmsfFileContainer: migrating ================================
-- remove_index(:dmsf_files, :project_id, {:name=>"index_dmsf_files_on_project_id"})
   -> 0.0064s
-- rename_column(:dmsf_files, :project_id, :container_id)
   -> 0.0136s
-- add_column(:dmsf_files, :container_type, :string, {:limit=>30, :null=>false, :default=>"Project"})
   -> 0.0036s
-- add_index(:dmsf_files, [:container_id, :container_type])
   -> 0.0051s
== 20170118142001 DmsfFileContainer: migrated (0.0398s) =======================

== 20170204214753 AddRevisionToDmsfLock: migrating ============================
-- add_column(:dmsf_locks, :revision, :integer, {:null=>true})
   -> 0.0035s
== 20170204214753 AddRevisionToDmsfLock: migrated (0.0043s) ===================

== 20170214153223 AddDmsfFileLastRevisionIdToDmsfLock: migrating ==============
-- rename_column(:dmsf_locks, :revision, :dmsf_file_last_revision_id)
   -> 0.0104s
== 20170214153223 AddDmsfFileLastRevisionIdToDmsfLock: migrated (0.0119s) =====

== 20170217141601 AddDmsfNotInheritableToCustomFields: migrating ==============
-- add_column(:custom_fields, :dmsf_not_inheritable, :boolean, {:null=>true})
   -> 0.0037s
== 20170217141601 AddDmsfNotInheritableToCustomFields: migrated (0.0047s) =====

== 20170323131231 DmsfDescriptionLimit: migrating =============================
-- change_column(:projects, :dmsf_description, :text, {:null=>true, :limit=>65535})
   -> 0.0072s
-- change_column(:dmsf_folders, :description, :text, {:null=>true, :limit=>65535})
   -> 0.0053s
== 20170323131231 DmsfDescriptionLimit: migrated (0.0148s) ====================

== 20170330131901 CreateDmsfFolderPermissions: migrating ======================
-- create_table(:dmsf_folder_permissions, {:options=>"ENGINE=InnoDB", :id=>:integer})
   -> 0.0065s
-- add_index(:dmsf_folder_permissions, :dmsf_folder_id)
   -> 0.0065s
== 20170330131901 CreateDmsfFolderPermissions: migrated (0.0160s) =============

== 20170421101901 DmsfFileContainerRollback: migrating ========================
-- add_column(:dmsf_folders, :system, :boolean, {:null=>false, :default=>false})
   -> 0.0032s
-- remove_index(:dmsf_files, [:container_id, :container_type], {:name=>"index_dmsf_files_on_container_id_and_container_type"})
   -> 0.0048s
-- remove_column(:dmsf_files, :container_type)
   -> 0.0036s
-- rename_column(:dmsf_files, :container_id, :project_id)
   -> 0.0100s
-- add_index(:dmsf_files, :project_id)
   -> 0.0056s
== 20170421101901 DmsfFileContainerRollback: migrated (0.0369s) ===============

== 20170422104901 MigrateDocuments: migrating =================================
== 20170422104901 MigrateDocuments: migrated (0.0011s) ========================

== 20170526144701 DmsfAttachable: migrating ===================================
-- add_column(:projects, :dmsf_act_as_attachable, :integer, {:default=>1, :null=>false})
   -> 0.0041s
== 20170526144701 DmsfAttachable: migrated (0.0110s) ==========================

== 20171027124101 ChangeRevisionDigestLimitTo64: migrating ====================
-- change_column(:dmsf_file_revisions, :digest, :string, {:limit=>64})
   -> 0.0240s
== 20171027124101 ChangeRevisionDigestLimitTo64: migrated (0.0249s) ===========

== 20171110155901 AddIndexToDmsfFolder: migrating =============================
-- add_index(:dmsf_folders, :dmsf_folder_id)
   -> 0.0059s
== 20171110155901 AddIndexToDmsfFolder: migrated (0.0066s) ====================

== 20180216152501 RenameTitleFormat: migrating ================================
-- rename_column(:members, :title_format, :dmsf_title_format)
   -> 0.0104s
== 20180216152501 RenameTitleFormat: migrated (0.0242s) =======================

== 20180903132101 FastLinks: migrating ========================================
-- add_column(:members, :dmsf_fast_links, :boolean, {:default=>false, :null=>false})
   -> 0.0204s
== 20180903132101 FastLinks: migrated (0.0215s) ===============================

== 20192703123101 WorkflowStartedBy: migrating ================================
-- rename_column(:dmsf_file_revisions, :dmsf_workflow_assigned_by, :dmsf_workflow_assigned_by_user_id)
   -> 0.0109s
-- rename_column(:dmsf_file_revisions, :dmsf_workflow_started_by, :dmsf_workflow_started_by_user_id)
   -> 0.0111s
== 20192703123101 WorkflowStartedBy: migrated (0.0249s) =======================

== 20200218142414 AddIndexOnDmsfFileRevisionIdToAccess: migrating =============
-- add_index(:dmsf_file_revision_accesses, :dmsf_file_revision_id)
   -> 0.0063s
== 20200218142414 AddIndexOnDmsfFileRevisionIdToAccess: migrated (0.0072s) ====

== 20200423071301 AddIndexesOnDmsfFolderId: migrating =========================
-- add_index(:dmsf_files, :dmsf_folder_id)
   -> 0.0060s
-- add_index(:dmsf_links, :dmsf_folder_id)
   -> 0.0072s
== 20200423071301 AddIndexesOnDmsfFolderId: migrated (0.0153s) ================

== 20200813075501 ChangeIndexInDmsfLocks: migrating ===========================
-- remove_index(:dmsf_locks, :entity_id)
   -> 0.0052s
-- add_index(:dmsf_locks, [:entity_id, :entity_type])
   -> 0.0055s
== 20200813075501 ChangeIndexInDmsfLocks: migrated (0.0136s) ==================

== 20210115120901 AddOwnerToDmsfLock: migrating ===============================
-- add_column(:dmsf_locks, :owner, :string, {:null=>true})
   -> 0.0034s
== 20210115120901 AddOwnerToDmsfLock: migrated (0.0042s) ======================

== 20220317100901 AddPatchVersion: migrating ==================================
-- add_column(:dmsf_file_revisions, :patch_version, :integer, {:null=>true, :after=>:minor_version})
   -> 0.0059s
== 20220317100901 AddPatchVersion: migrated (0.0069s) =========================

安装完成后,在Redmine packaged by Bitnami管理器,进行重启Thin_redmine 和 Thin_redmine2 如图:

image

重启完成后,在redmine界面中可以看到插件列表:

image