關於如何申請 Amazon EC2 Free Tier (第一年免費),可以參考此篇-快速安裝 Amazon EC2 LAMP 環境 (EC2 Console) 與 Amazon AWS EC2 LAMP Quickstart Guide。
在創建 instance 時,我安裝的 OS 是預設的 Ubuntu LTS 12.04 64-bit (AMI ID: ami-70f96e40),伺服器地區為 US West (Oregon),選擇的方案當然是免費的 T1 Micro (630Mb RAM) Free Usage Tier,這僅對架設小型站台 (如 Redmine 等 Issue Tracking 系統)已是足夠了。
除了 Ubuntu 作業系統外,包括 AMP (Apache, MySQL, PHP), Git, Ruby, redmine 等,全都是需要透過 Putty 連線至 EC2 Console 安裝設定的 (當然,也要先設定好如何遠端連線)。千萬不要安裝 X-Windows 環境於 EC2,我曾試過,然後可以利用 FreeNX 透過 RDP 遠端遙控 EC2,但主記憶體吃了 580Mb,僅剩 10Mb 可茲利用 (有效記憶體僅為 590 Mb)。
至於為何不乾脆使用 BitNami Redmine Cloud Server,或直接安裝 BitNami Redmine Stack AMI (Amazon Machine Image) 映像檔就可以直接使用?因為沒有免費的糖果啦!直接使用 Bitnami Redmine Stack,每個月的租費至少需要 US$15,那就是買你懶得或不諳系統安裝的使用者的系統建置服務費的。為了省錢同時也練習一下關於 Linux 相關系統建置,一切還是自己來。
Redmine 是一套近兩年頗為歡迎的專案管理工具,可以參考此篇-Redmine 基本功能介紹。Remine 支援絕大宗的版控系統 (包括 Git, Subversion, CVS 等),使得更輕易整合關於 Issue 與 Commit 訊息。
Redmine 是使用 Ruby on Rails Framework 撰寫開發的系統,所以作業系統需要具有可執行 Ruby 的直譯環境,當然也需要有 Web Server (支持 Apache, Nginx) 與 資料庫系統 (支持 MySQL, PostgreSQL),才可以完整運作 Redmine。
這裡列出包括作業系統與所需要建置的應用系統:
o Ubuntu LTS 12.04 64-bit。
o Apache 2.2。
o MySQL 5。
o Ruby 1.9.3 (使用 RVM 安裝)。
o Redmine 2.3.2 (2013-07-14)。
安裝與設定 LAMP
最簡單的安裝方法:
$ sudo tasksel install lamp-server |
* 設定 Apache Virtual Host,可參考此篇-Configure Name-based Virtual Hosts。
* 設定 Apache 目錄權限與擁有者 (owner):
$ sudo usermod -a -G www-data user-account # 讓網站管理者的帳號加入 www-data 群組 $ sudo chgrp www-data /var/www # 改變 /var/www 所屬群組為 www-data $ sudo chmod –R 775 /var/www $ sudo chmod g+s /var/www # 讓爾後在該目錄下所新增的檔案目錄群組擁有者為 www-data |
* (option)安裝 phpmyadmin: # 為了便於遠端管理 MySQL
# 確認已設定好 MySQL 與 PHP。
$ sudo apt-get install phpmyadmin # make a symbolic link $ sudo sudo ln -s /usr/share/phpmyadmin /var/www |
安裝與設定 Ruby
關於 Ruby 的安裝與設定,可參考我先前寫的一篇-[備註] 安裝 RVM and Ruby@Ubuntu 13.04 x64。
** 強烈注意,不要使用 sudo apt-get 安裝 ruby,因為所安裝的版本會較為舊版,很可能 redmine 無法支援。再則,未來執行 rvm 時,也不該使用 sudo rvm,直接以具有可執行 rvm 權限的使用者帳號執行 rvm 與相關的 ruby 指令 (ruby, gem, rail, bundle ...)即可。
這裡我修正了一下,改為可以讓 multi-user 可具有執行 rvm 的權限,所以安裝 RVM 指令需改為:
$ curl -L https://get.rvm.io | sudo bash -s stable |
安裝後的目錄位置為 /usr/local/rvm 。
* 將使用者帳號加入 rvm 群組,使之可以執行 rvm:
$ usermod -a -G rvm user-account |
記得先登出 (logout)再登入,讓相關設定可以生效。
安裝 redmine 2.3.2 我使用的 ruby 版本為 1.9.3。原來是使用 ruby 2.0.0,但安裝過程卻會導致一些錯誤,卻又不知道問題所在,所以才改為 1.9.3 版本。
$ rvm install 1.9.3 $ rvm use 1.9.3 --default |
安裝 Redmine 2.3.2
關於 Redmine 在各作業系統的安裝文件,主要可參考官方-Redmine Installation HowTo。
不過看來看去,這一篇日本人寫的安裝指引比較詳細:Redmine 2.3.0 on Ubuntu 12.04。
安裝預設位置為使用者 home 目錄,相關於 redmine 的安裝與設定,係以使用者而非 root 權限執行。
* 在 MySQL 新增 Redmine 資料庫與使用者
$ 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'; |
* 下載與解壓縮 redmine:
$ wget http://rubyforge.org/frs/download.php/77023/redmine-2.3.2.tar.gz $ tar -xzvf redmine-2.3.2.tar.gz $ mv redmine-2.3.2 redmine |
* 安裝 redmine 所需相關的 gem dependencies:
$ gem install bundler $ cd ~/redmine $ bundle install --without development test postgresql sqlite |
* 新增所需的目錄與修正權限:
$ mkdir public/plugin_assets $ sudo chown -R user-account:www-data files log tmp public/plugin_assets config.ru $ sudo chmod -R 755 files log tmp public/plugin_assets |
* 編輯 redmine 資料庫設定檔:
$ cp ./config/database.yml.example ./config/database.yml $ vim ./config/database.yml |
主要編輯內容如下:
production: adapter: mysql2 (note: For Rails < 3.1 use mysql instead of mysql2) database: redmine host: localhost username: redmine password: my_password |
* 產生 session store secret:
$ rake generate_secret_token |
* 產出資料庫結構:
$ RAILS_ENV=production rake db:migrate |
* 產出預設的組態資料:
$ RAILS_ENV=production rake redmine:load_default_data |
Redmine 安裝完成!下一步需設定可以在 Apache Web 環境下執行 Redmine,前提是要先安裝 Apache Passenger,使之可以執行 Ruby 類型的應用程式。
** 要確定是否正確已正確安裝 Redmine,可以執行下列指令測試:
# used to test that Redmine works on WEBrick, shutdown after test $ ruby script/server webrick -e production |
安裝與設定 Apache Passenger
** 注意不要使用 sudo apt-get 安裝 apache passenger 模組 (libapache2-mod-passenger),因為仍會安裝到較舊的版本並連帶安裝了舊版本的 Ruby;而是應該使用 gem install 安裝。
* 安裝 passenger:
$ gem install passenger --no-rdoc --no-ri $ passenger-install-apache2-module |
執行 passenger-install-apache2-module 指令時,常會提示有缺失相關的 dependencies 套件,此時只要依照提示的訊息一一安裝即可。記得因為這些套件需要使用 root 權限才可安裝,所以安裝時須加上 sudo apt-get install xxx-package。
* 在 /etc/apache2/mods-available 新增兩個檔案:passenger.conf 與 passenger.load
$ cd /etc/apache2/mods-available $ sudo vim passenger.conf |
新增底下內容 (下列目錄的路徑名稱,需要參考上述安裝 passenger 後的提示訊息):
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.10 PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p448/ruby |
$ sudo vim passenger.load |
新增內容為:
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.10/buildout/apache2/mod_passenger.so |
在 /etc/apache2/mods-enabled 下新增對該兩個檔案的 symbolic link:
$ cd /etc/apache2/mods-enabled $ sudo ln -s /etc/apache2/mods-available/passenger.conf . $ sudo ln -s /etc/apache2/mods-available/passenger.load . |
* 在 /var/www/www.ur-domain.com.tw (已設定的 domain 網址),建立對 ~/redmine 的 symbolic link:
** 這是在既有的網址下,新增一子目錄 redmine 的鏈結,這是屬於 sub-uri 的設定方式。
$ cd /var/www/www.ur-domain.com.tw $ sudo ln -s /home/user-account/redmine redmine |
* 更改 redmine 群組擁有者:
$ sudo chgrp www-data ./redmine |
* 編輯與設定 Virtual Host:
$ cd /etc/apache2/sites-available $ sudo vim www.ur-domain.com.tw |
編輯內容參考如下:
<VirtualHost *:80> ServerAdmin admin@ur-domain.com.tw ServerName www.ur-domain.com.tw DocumentRoot /var/www/www.ur-domain.com.tw <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/www.ur-domain.com.tw/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> RailsBaseURI /redmine <Directory /var/www/www.ur-domain.com.tw/redmine> # This relaxes Apache security settings. AllowOverride all # MultiViews must be turned off. Options -MultiViews </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
* 重新啟動 Apache2:
$ sudo service apache2 restart |
打開瀏覽器,輸入:http://www.ur-domain.com.tw/redmine ,如果一切均安裝與設定正確,則會出現 Redmine 的管理首頁。
請問一下,因為是用 multi-user rvm 的做法,為了配合 redmine 而選擇 1.9.3 為預設版本。這樣當另一個系統需要另一個版本運行的話需要如何設定才能和平共存不互相干擾呢?
我早已忘記如何安裝 Redmine 囉~ 這些都是當我有需要的時候,才去 Google 查找資料的。
建議你有直接的問題至相關的論壇提問才是的。
了解,感謝您的回覆。
十分感謝分享這篇文章。要不是有這份參考資料,我想我很難在uBuntu下裝好redmine 2.3.2。
安裝 Redmine 的 How-to 步驟實在有夠繁瑣,新版本的釋出又會牽涉到相依的 Library,所以不得已我只好整理出實做筆記。
大概一個月後我就會完全忘掉如何設定這些啦。!^^