ubuntu上安裝redmine

1 預(yù)備工作

redmine source code

兩個(gè)途徑

需要一種數(shù)據(jù)庫(kù),這里以mysql為例

sudo apt-get install mysql-server mysql-client

2 創(chuàng)建數(shù)據(jù)庫(kù)

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';

當(dāng)mysql version大于5.5.2時(shí),可將字符集改為SET utf8mb4,即可以設(shè)置為 CREATE DATABASE redmine CHARACTER SET utf8mb4;

3 建立數(shù)據(jù)庫(kù)和redmine的鏈接

將./redmine/config/database.yml.example 復(fù)制一份并改名為 ./redmine/config/database.yml

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

打開(kāi)database.yml,將production段參考剛才創(chuàng)建數(shù)據(jù)庫(kù)的參數(shù)修改為如下內(nèi)容:

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

這里需要注意 adapter處是mysql2,一些老的教程寫(xiě)為mysql

4 下載依賴

ruby gem

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

bundler

使用gem下載bundler,這里需要將gem的源文件路徑修改為國(guó)內(nèi)的倉(cāng)庫(kù),可以使用如下命令修改,也可以直接打開(kāi)Gemfile編輯,

gem sources -r http://rubygems.org/
gem source -a http://ruby.taobao.org

然后下載bundler

sudo gem install bundler -V

使用bundle來(lái)下載依賴

依賴文件的描述見(jiàn)Gemfile

bundle install --without development test

5 配置

生成一個(gè)加密

bundle exec rake generate_secret_token

數(shù)據(jù)庫(kù)創(chuàng)建和設(shè)置

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

這個(gè)過(guò)程中可能會(huì)遇到一個(gè)問(wèn)題,見(jiàn)后面的問(wèn)題記錄

6 設(shè)置權(quán)限

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

7 測(cè)試運(yùn)行

bundle exec rails server webrick -e production

訪問(wèn)http://localhost:3000/

然后以admin登陸,密碼同為admin

8 遇到的一個(gè)問(wèn)題

在執(zhí)行如下命令時(shí)

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

詳細(xì)提示


-- 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)
>

解決方案

參考文檔
改動(dòng)如下

~/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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容