Redmine 是一款非常流行的項目管理工具,使用 Ruby on Rails 編寫,採用 GPL 許可協議(GNU General Public License v2)發佈,支持多種操作系統。
部署和使用 Redmine 可以選擇第三方提供的雲服務,或者下載安裝第三方(如Bitnami)提供的安裝包或容器。然而如同多數 Ruby on Rails 應用一樣,Redmine 的安裝部署過程非常簡單,而且依據官方的安裝部署文檔,或者一些經過驗證的安裝輔助工具(如Redmine installer),在主流的Linux發行版本上安裝部署,在以後進行安裝插件、遷移數據或版本更新時,會有更好的文檔支持,也能少遇到一些不必要的麻煩,因此多數情況下可以嘗試自行安裝部署。
本文記錄基於官方的安裝部署文檔在 Ubuntu 16.04 下安裝部署 Redmine 3.4.6 的過程。
硬件環境和操作系統
本次安裝使用的硬件環境和操作系統如下:
- 阿里雲1核2G雲服務器
- Ubuntu 16.04 LTS
更新操作系統並添加需要的軟件包
執行以下指令可更新系統並安裝需要的軟件包,以及以後安裝插件可能需要的軟件包。在本文中,使用 MySQL, 如果選擇其他數據庫,需要替換相應的軟件包:
apt-get update && apt-get upgrade
apt-get install -y build-essential git imagemagick libmagickwand-dev ruby ruby-dev mysql-server libmysqlclient-dev
gem install bundle
安裝過程中,會提示設置 MySQL 的 root 密碼。使用 ssh 遠程登錄雲主機安裝時,如果中間連接中斷可能沒有得到提示。這種情況下可選擇重新安裝 MySQL。
安裝後可執行以下命令檢查主要軟件包的版本:
ruby --version
mysql --version
gem --version
bundle --version
本次安裝中,主要軟件包的版本如下:
- ruby: ruby 2.3.1p112 (2016-04-26)
- mysql: Ver 14.14 Distrib 5.7.24
- gem: 2.5.2.1
- bundle: 1.17.1
創建 redmine 用戶
創建 redmine 用戶不是必須的,但在正式環境中有助於維持系統的安全。
adduser --system --shell /bin/bash --gecos 'Redmine Administrator' --group --disabled-password --home /data/redmine redmine
這裏把 /data/redmine/ 作爲 redmine 用戶的工作目錄。
創建 redmine 數據庫
創建一個空的數據庫供 Redmine 使用,並創建一個數據庫用戶,授予該用戶相應的數據庫訪問權限。
使用以下命令進入 mysql 命令行環境:
mysql -p -u root
在 mysql 命令行環境下:
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'p@ssw0rd';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
在訪問 MySQL 時需要按照提示輸入 MySQL 的 root 密碼。
安裝 Redmine
後續的安裝過程不再需要 root 權限,可以 redmine 用戶的身份在 redmine 用戶的工作目錄下執行。
su - redmine
下載並解壓 Redmine 源碼
通過克隆 Redmine 源碼庫或下載打包好的壓縮文件,可獲取 Redmine 源碼:
wget http://www.redmine.org/releases/redmine-3.4.6.tar.gz
tar xvfz redmine-3.4.6.tar.gz
ln -s redmine-3.4.6 redmine
rm redmine-3.4.6.tar.gz
以上爲便於使用,建立了一個軟連接 ~/redmine 指向解壓後的源碼目錄。
修改數據庫連接配置
進入解壓好的源碼目錄,複製數據庫配置模版,並根據實際的數據配置修改生產環境下的數據庫配置:
cd ~/redmine
cp -pR config/database.yml.example config/database.yml
vim config/database.yml
如果採用上文中的參數建立數據庫,修改後的 config/database.yml 文件中,生產環境下的數據庫配置爲:
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "p@ssw0rd"
encoding: utf8
安裝依賴的 gems
Redmine 使用 Bundler 管理 gems 依賴關係,之前已經安裝過 Bundler。
使用以下命令可將 Redmine 所需的 gems 安裝到 vendor/bundle/ 目錄下。
cd ~/redmine
bundle install --without development test --path vendor/bundle
如果需要加載額外的 gems, 比如在運行時使用 puma 代替默認的 webrick, 可在 ~/redmine/ 下建立一個名爲 Gemfile.local 的文件,指定需額外加載的 gems, 再次運行 bundle install。如:
# Gemfile.local
gem 'puma'
生成 session 密鑰
使用以下命令可生成新的 session 密鑰:
bundle exec rake generate_secret_token
創建數據庫結構
Ruby on Rails 應用,在新安裝、軟件升級等過程中可以很容易創建或更新數據庫結構:
RAILS_ENV=production bundle exec rake db:migrate
導入初始數據
使用以下命令導入初始數據,包括默認的問題類型、工作流程等:
RAILS_ENV=production REDMINE_LANG=zh bundle exec rake redmine:load_default_data
上面的 REDMINE_LANG=zh 選項指定了使用中文,如果不加這個選項,該命令會提示輸入語言代碼。
設置文件系統權限
如果安裝過程中的用戶與運行時的用戶不一致,則需要設置文件系統權限:
mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets
啓動服務
執行以下命令可啓動自帶的應用服務,進行系統測試:
bundle exec rails server webrick -e production -b 0.0.0.0
如果在 Gemfile.local 文件中增加了 puma,還可選擇啓動 puma 代替 webrick:
bundle exec rails server puma -e production -b 0.0.0.0
當然在正式的生產環境中,應配置 nginx 或 apache2 服務,而不是通過命令行的方式啓動服務。
登錄 Redmine
在命令行中啓動服務時,如果沒有問題,會提示了訪問地址和訪問端口:
=> Booting Puma
=> Rails 4.2.8 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Puma starting in single mode...
* Version 3.12.0 (ruby 2.3.1-p112), codename: Llamas in Pajamas
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
在使用ECS時,需要注意默認的3000端口是不開放的,此時需要通過ECS控制檯添加安全組規則,接受來自客戶端IP地址段的TCP 3000端口訪問請求。當然在命令行中也可以指定端口號,只需要保證用戶有權限打開該端口號、該端口號未被其他服務佔用,且能被雲服務和ECS的操作系統接受即可。
使用ECS的公網IP地址在瀏覽器中輸入正確的URL,即可登錄新安裝的 Redmine。假設公網IP地址爲39.105.106.107,端口爲3000,則URL應爲 http://39.105.106.107:3000。
默認的登錄名和密碼都是 admin,首次登錄時會提示更改密碼。
如果一切正常,Redmine 就算安裝完成了,雖然這樣只適合開發測試,並不適合大量用戶同時訪問。