ubuntu redmine 安装

1 预备工作

redmine source code

两个途径

需要一种数据库,这里以mysql为例

sudo apt-get install mysql-server mysql-client

2 创建数据库

mysql -u root -p
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';

当mysql version大于5.5.2时,可将字符集改为SET utf8mb4,即可以设置为 CREATE DATABASE redmine CHARACTER SET utf8mb4;

3 建立数据库和redmine的链接

将./redmine/config/database.yml.example 复制一份并改名为 ./redmine/config/database.yml

cd redmine
cp config/database.yml.example config/database.yml

打开database.yml,将production段参考刚才创建数据库的参数修改为如下内容:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "my_password"
  encoding: utf8

这里需要注意 adapter处是mysql2,一些老的教程写为mysql

4 下载依赖

ruby gem

sudo apt-get install ruby ruby-dev rubygems  libmysqlclient-dev imagemagick libmagickwand-dev

bundler

使用gem下载bundler,这里需要将gem的源文件路径修改为国内的仓库,可以使用如下命令修改,也可以直接打开Gemfile编辑,

# gem sources -l 可以查看当前源,移除的时候包括 ‘/’
gem sources -r https://rubygems.org/
gem source -a https://gems.ruby-china.org/

然后下载bundler

sudo gem install bundler -V

使用bundle来下载依赖

依赖文件的描述见Gemfile

bundle install --without development test

5 配置

生成一个加密

bundle exec rake generate_secret_token

数据库创建和设置

RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

这个过程中可能会遇到一个问题,见后面的问题记录

6 设置权限

sudo find files log tmp public/plugin_assets -type f -exec chmod -x {} +

7 测试运行

bundle exec rails server webrick -e production

访问http://localhost:3000/

然后以admin登陆,密码同为admin

8 遇到的一个问题

在执行如下命令时

RAILS_ENV=production bundle exec rake db:migrate

提示如下

-- create_table(:email_addresses, {:id=>:integer})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Invalid default value for 'updated_on': CREATE TABLE `email_addresses` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `user_id` int NOT NULL, `address` varchar(255) NOT NULL, `is_default` tinyint(1) DEFAULT 0 NOT NULL, `notify` tinyint(1) DEFAULT 1 NOT NULL, `created_on` timestamp NOT NULL, `updated_on` timestamp NOT NULL) ENGINE=InnoDB

详细提示


-- create_table(:email_addresses, {:id=>:integer})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Invalid default value for 'updated_on': CREATE TABLE `email_addresses` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `user_id` int NOT NULL, `address` varchar(255) NOT NULL, `is_default` tinyint(1) DEFAULT 0 NOT NULL, `notify` tinyint(1) DEFAULT 1 NOT NULL, `created_on` timestamp NOT NULL, `updated_on` timestamp NOT NULL) ENGINE=InnoDB
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `_query'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `block in query'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `handle_interrupt'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `query'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:214:in `block (2 levels) in execute'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:46:in `block in permit_concurrent_loads'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/concurrency/share_lock.rb:185:in `yield_shares'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:45:in `permit_concurrent_loads'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:213:in `block in execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:612:in `block (2 levels) in log'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:611:in `block in log'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:603:in `log'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:212:in `execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/mysql/database_statements.rb:26:in `execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:288:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:363:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:849:in `block in method_missing'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `block in say_with_time'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `say_with_time'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:838:in `method_missing'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration/compatibility.rb:45:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration/compatibility.rb:91:in `create_table'
> /home/amtili/tools/redmine/db/migrate/20150113194759_create_email_addresses.rb:3:in `change'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:792:in `exec_migration'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:776:in `block (2 levels) in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:775:in `block in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:408:in `with_connection'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:774:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:953:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1230:in `block in execute_migration_in_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1300:in `ddl_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1229:in `execute_migration_in_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1201:in `block in migrate_without_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `each'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `migrate_without_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `block in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1317:in `with_advisory_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1007:in `up'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:985:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb:171:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>'
> /var/lib/gems/2.3.0/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
> 
> Caused by:
> ActiveRecord::StatementInvalid: Mysql2::Error: Invalid default value for 'updated_on': CREATE TABLE `email_addresses` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `user_id` int NOT NULL, `address` varchar(255) NOT NULL, `is_default` tinyint(1) DEFAULT 0 NOT NULL, `notify` tinyint(1) DEFAULT 1 NOT NULL, `created_on` timestamp NOT NULL, `updated_on` timestamp NOT NULL) ENGINE=InnoDB
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `_query'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `block in query'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `handle_interrupt'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `query'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:214:in `block (2 levels) in execute'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:46:in `block in permit_concurrent_loads'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/concurrency/share_lock.rb:185:in `yield_shares'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:45:in `permit_concurrent_loads'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:213:in `block in execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:612:in `block (2 levels) in log'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:611:in `block in log'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:603:in `log'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:212:in `execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/mysql/database_statements.rb:26:in `execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:288:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:363:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:849:in `block in method_missing'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `block in say_with_time'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `say_with_time'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:838:in `method_missing'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration/compatibility.rb:45:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration/compatibility.rb:91:in `create_table'
> /home/amtili/tools/redmine/db/migrate/20150113194759_create_email_addresses.rb:3:in `change'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:792:in `exec_migration'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:776:in `block (2 levels) in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:775:in `block in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:408:in `with_connection'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:774:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:953:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1230:in `block in execute_migration_in_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1300:in `ddl_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1229:in `execute_migration_in_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1201:in `block in migrate_without_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `each'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `migrate_without_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `block in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1317:in `with_advisory_lock'tis
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1007:in `up'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:985:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb:171:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>'
> /var/lib/gems/2.3.0/gems/rake-12.3.0/tisexe/rake:27:in `<top (required)>'
> 
> Caused by:
> Mysql2::Error: Invalid default value for 'updated_on'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `_query'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `block in query'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `handle_interrupt'
> /var/lib/gems/2.3.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `query'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/atisbstract_mysql_adapter.rb:214:in `block (2 levels) in execute'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:46:in `block in permit_concurrent_loads'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/concurrency/share_lock.rb:185:in `yield_shares'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:45:in `permit_concurrent_loads'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:213:in `block in execute'
> /var/lib/gems/2.3.0/gems/activerecordtis-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:612:in `block (2 levels) in log'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:611:in `block in log'
> /var/lib/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:603:in `log'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:212:in `execute'
> /var/lib/gems/2.3.0/gems/activerecordtis-5.1.4/lib/active_record/connection_adapters/mysql/database_statements.rb:26:in `execute'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:288:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:363:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:849:in `block in method_missing'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `block in say_with_time'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `say_with_time'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:838:in `method_missing'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration/compatibility.rb:45:in `create_table'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration/compatibility.rb:91:in `create_table'
> /home/amtili/tools/redmine/db/migrate/20150113194759_create_email_addresses.rb:3:in `change'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:792:in `exec_migration'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:776:in `block (2 levels) in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:775:in `block in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:408:in `with_connection'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:774:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:953:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1230:in `block in execute_migration_in_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1300:in `ddl_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1229:in `execute_migration_in_transaction'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1201:in `block in migrate_without_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `each'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `migrate_without_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `block in migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1317:in `with_advisory_lock'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:1007:in `up'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/migration.rb:985:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb:171:in `migrate'
> /var/lib/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>'
> /var/lib/gems/2.3.0/gems/rake-12.3.0/exe/rake:27:in `<top (required)>'
> Tasks: TOP => db:migrate
> (See full trace by running task with --trace)
>

解决方案

参考文档
改动如下

~/tools/redmine$ git diff db/migrate/20150113194759_create_email_addresses.rb
diff --git a/db/migrate/20150113194759_create_email_addresses.rb b/db/migrate/20150113194759_create_email_addresses.rb
index 22ad19e94..fd497226b 100644
--- a/db/migrate/20150113194759_create_email_addresses.rb
+++ b/db/migrate/20150113194759_create_email_addresses.rb
@@ -6,7 +6,7 @@ class CreateEmailAddresses < ActiveRecord::Migration[4.2]
       t.column :is_default, :boolean, :null => false, :default => false
       t.column :notify, :boolean, :null => false, :default => true
       t.column :created_on, :timestamp, :null => false
-      t.column :updated_on, :timestamp, :null => false
+      t.column :updated_on, :timestamp
     end
   end
 end


链接:https://www.jianshu.com/p/2dd55d9a4454

ubuntu redmine 是一种在 Ubuntu 操作系统上搭建的 Redmine 项目管理工具。要在 Ubuntu安装 Redmine,可以按照以下步骤进行操作: 1. 下载 Redmine 安装包,可以从 GitHub 的官方页面下载。使用以下命令下载并解压缩安装包: ``` wget https://github.com/redmine/redmine/releases/tag/4.2.0 tar -zxvf redmine-4.2.0.tar.gz ``` 2. 安装必要的依赖项。在安装 Redmine 之前,需要确保系统已经安装了 Ruby、RubyGems、Bundler 和其他必要的软件包。可以使用以下命令安装所需软件包: ``` sudo apt-get update sudo apt-get install ruby ruby-dev build-essential libmysqlclient-dev libmagickwand-dev imagemagick sudo gem install bundler ``` 3. 配置数据库。Redmine 默认使用 MySQL 数据库,因此需要创建一个新的数据库和用户来存储 Redmine 数据。可以使用以下命令进行配置: ``` sudo mysql -u root -p CREATE DATABASE redmine CHARACTER SET utf8mb4; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; FLUSH PRIVILEGES; EXIT; ``` 4. 配置 Redmine。在解压缩的 Redmine 目录中,复制 `config/configuration.yml.example` 文件为 `config/configuration.yml`。编辑该文件,根据你的数据库配置更新以下行: ``` production: adapter: mysql2 database: redmine host: localhost username: redmine password: password ``` 5. 安装依赖项。在 Redmine 目录中运行以下命令以安装所需的 Ruby 依赖项: ``` bundle install --without development test ``` 6. 生成密钥和数据库表。在 Redmine 目录中运行以下命令以生成密钥和数据库表: ``` RAILS_ENV=production bundle exec rake generate_secret_token RAILS_ENV=production bundle exec rake db:migrate ``` 7. 编译静态资源。在 Redmine 目录中运行以下命令以编译静态资源: ``` RAILS_ENV=production bundle exec rake assets:precompile ``` 8. 启动 Redmine。在 Redmine 目录中运行以下命令以启动 Redmine: ``` RAILS_ENV=production bundle exec rails server ``` 以上是在 Ubuntu安装 Redmine 的基本步骤。安装完成后,你可以通过访问服务器的 IP 地址或域名来访问 Redmine
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值