Redmine 5 安装(windows)
redmine刚好有需求用,装了一下linux版本,贼恶心,最后放弃了,选用了Bitnami的安装方式,一键部署:
1、下载bitnami-redmine windows版本
2、双击安装,直接下一步--下一步........到最后即可安装完成
3、如何安装插件???
安装完成后直接开始运行,然后开始菜单打开redmine中的使用{product_fullname}
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 如图:
重启完成后,在redmine界面中可以看到插件列表:
Don't forget the beginner's mind