almost 3 years ago

本章大綱:

使用版本: 3.2-stable ( 2016-4-13 release )

基礎架站

  • Redmine 簡介
  • 從 github 上下載並完成安裝
  • deploy 到 heroku
  • 將架好的 Redmine 做相關設定

延伸功能

  • 將 Redmine 的 log 串到 Slack 上
  • 用 Mailgun 的服務完成寄信功能
  • 將檔案上傳到 S3

Redmine 簡介

Redmine 是一個 open source, 功能強大的專案管理軟體
有很多專案管理的奇技淫巧可以藉由 Redmine 來達到非常有效的操作

以下是安裝教學


從 github 上下載 3.2-stable 版本並完成安裝

git clone https://github.com/redmine/redmine.git -b 3.2-stable

cd redmine

git checkout -b master

設定 .gitignore

.gitignore
/config/additional_environment.rb
- /config/configuration.yml
/config/database.yml
- /config/email.yml
/config/secrets.yml
- /config/initializers/session_store.rb
- /config/initializers/secret_token.rb
/coverage
/db/*.db
/db/*.sqlite3

/public/dispatch.*
- /public/plugin_assets/*
/public/themes/*

*.rbc

/.bundle
- /Gemfile.lock
- /Gemfile.local

設定 Gemfile

Gemfile
-database_file = File.join(File.dirname(__FILE__), "config/database.yml")
-if File.exist?(database_file)
-  database_config = YAML::load(ERB.new(IO.read(database_file)).result)
-  adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
-  if adapters.any?
-    adapters.each do |adapter|
-      case adapter
-      when 'mysql2'
-        gem "mysql2", "~> 0.3.11", :platforms => [:mri, :mingw, :x64_mingw]
-        gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
-      when 'mysql'
-        gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
-      when /postgresql/
-        gem "pg", "~> 0.18.1", :platforms => [:mri, :mingw, :x64_mingw]
-        gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
-      when /sqlite3/
-        gem "sqlite3", :platforms => [:mri, :mingw, :x64_mingw]
-        gem "jdbc-sqlite3", ">= 3.8.10.1", :platforms => :jruby
-        gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
-      when /sqlserver/
-        gem "tiny_tds", "~> 0.6.2", :platforms => [:mri, :mingw, :x64_mingw]
-        gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
-      else
-        warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems")
-      end
-    end
-  else
-    warn("No adapter found in config/database.yml, please configure it first")
-  end
-else
-  warn("Please configure your config/database.yml first")
-end


+group :development, :test do
+  gem 'sqlite3'
+end

+group :production do
+  gem 'pg'
+  gem 'rails_12factor'
+  gem 'thin' # change this if you want to use other rack web server
+end

bundle install

設定 config/application.rb
( 為了讓 deploy to heroku 時,執行 assets:precompile 的程序時不會炸掉 )

config/application.rb
module RedmineApp
  class Application < Rails::Application
+   config.assets.initialize_on_precompile = false
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    

設定 config/environment.rb

config/environment.rb
vendor_plugins_dir = File.join(Rails.root, "vendor", "plugins")
if Dir.glob(File.join(vendor_plugins_dir, "*")).any?
  $stderr.puts "Plugins in vendor/plugins (#{vendor_plugins_dir}) are no longer allowed. " +
    "Please, put your Redmine plugins in the `plugins` directory at the root of your " +
    "Redmine directory (#{File.join(Rails.root, "plugins")})"
- exit 1
+ # exit 1
end

執行 rake generate_secret_token

最後將上述所有的異動 commit 起來

git add -A

git commit -m "for push to heroku"


deploy 到 heroku

( 先確認你的 heroku app 有沒有到上限,有的話砍掉一個 )
heroku create APP_NAME APP_NAME = 你想要取的名字

heroku addons:create heroku-postgresql <== 要先建一個空 DB, 不然 deploy 時會異常

git push heroku master

heroku run rake db:migrate

heroku run rake redmine:load_default_data
會要你選擇語系 => 輸入 zh-TW

完成以後打 herorku open 即可開啟建立好的 redmine


將架好的 Redmine 做相關設定

首先註冊一個自己的帳號

然後用預設的 admin 帳號登入 ( 密碼 admin )

做以下設定

  • 將內文語法改用 markdown ( 這樣可以讓你跟 logdown 的筆記整合 )

  • 將自己的帳號權限開通

  • 將自己的帳號設成管理者

  • 用自己的帳號登入,並把預設的 admin 帳號砍掉


將 Redmine 的 log 串到 Slack 上

設定 .gitignore

.gitignore
/log/*.log*
/log/mongrel_debug
- /plugins/*
- !/plugins/README
/public/dispatch.*
/public/themes/*
!/public/themes/alternate

到 redmine 的 plugins 底下 clone plugin: redmine_slack

cd plugins ( 確定要在這個資料夾底下 )

git clone https://github.com/sciyoshi/redmine-slack.git redmine_slack

進入 redmine-slack 並將裡面的 .git/ 資料夾移除
( 不然在本機端正常,可是 deploy 到 heroku 時卻看不到安裝的 plugin )

cd redmine_slack

rm -rf .git

cd ../.. <== 回到 redmine 專案根目錄

安裝 gem httpclient

Gemfile
+ gem "httpclient"
...(略)

bundle install

將上述的異動 commit, 並 push 到 heroku 上

git add -A

git commit -m "add plugin: redmine_slack"

git push heroku master

deploy 完以後執行以下指令在 heroku 安裝 plugin

heroku run rake redmine:plugins:migrate RAILS_ENV=production

這時候到網站上看網站管理,應該就會看到安裝的 plugin

redmine_slack plugin 設定:

測試:


用 Mailgun 的服務完成寄信功能

備註: 如果用 mailgun 的免費帳號 + redmine 用太兇的話,容易超過免費額度而被 ban 掉

前往 Mailgun 註冊

註冊完以後進入後台

選擇 "Domains"

點擊預設的 domain

「Default SMTP Login」 & 「Default Password」 這二個值就是我們要用來寄信的帳密
如果嫌密碼太長,可以點擊 "Manage SMTP credentials" 修改密碼

然後做以下設定

heroku config:set mailgun_user=xxxxx <== 你的 Default SMTP Login 的值
heroku config:set mailgun_secret=xxxx <== 你的 Default Password 的值

設定 config/environments/production.rb

config/environments/production.rb
Rails.application.configure do
...()
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    port:           587,
    address:        "smtp.mailgun.org",
    user_name:      ENV["mailgun_user"],
    password:       ENV["mailgun_secret"],
    domain:         "sandbox一堆亂碼.mailgun.org", # 你的 mailgun domain name

    authentication: :plain,
  }
end

設定 host_name

config/settings.yml
 host_name:
-  default: localhost:3000
+  default: "sdlong-redmine.herokuapp.com"
 protocol:

PS: 這邊再次提醒,如果用 mailgun 的免費帳號 + redmine 用太兇的話,容易超過免費額度而被 ban 掉


將檔案上傳到 S3

因為在 heroku 上面上傳任何檔案,最後都會被清掉,所以必須要把它傳到雲端空間上 ( 最常用的就是 S3 )

請參考 https://github.com/ka8725/redmine_s3

← 關於策展工作的要點 [讀書心得] Smarter Faster Better (序) : 如何用科學找出提高生產力的方法 →
 
comments powered by Disqus