Using Source Package架設redmine做專案管理Step By Step with Ubuntu 13.04

本篇原創分享如何Setep By Step在uBuntu使用source package的方式安裝Redmine 2.3.2。
因為redmine 2.3.2在uBuntu下並沒有提供apt的安裝方式,才會迫使要用純手工打造。 以下說明確定100%安裝成功。若有網友在操作過程中有任何的問題,請不吝發問討論。

若有要引用請註明出處

文章內容

安裝LAMP及設定權限 [setup_lamp]

安裝tasksel並安裝LAMP

$ sudo apt-get install tasksel
$ sudo tasksel install lamp-server  

設定Apache目錄權限

//將網站管理者的帳號加入www-data群組
$ sudo usermod -a -G www-data user-account
//將/var/www改為www-data群組
$ sudo chown -R username:www-data /var/www
///var/www下的權限設為775
$ sudo chmod -R 775 /var/www
//只要在此目錄下所新增的檔案或目錄,擁有者都是www-data
$ sudo chmod -R g+s /var/www  

安裝RVM,Ruby和Rails [setup_rvm_ruby_rails]

參考這一篇安裝RVM和Ruby,Click Here

安裝rvm所需uBuntu套件

輸入以下指令安裝套件

$ sudo apt-get install build-essential curl  

下載並安裝rvm

$ curl -L https://get.rvm.io | sudo bash -s stable  

rvm安裝後的目錄位置為/usr/local/rvm,以下所有的動作也會安裝在此目錄下。

安裝完成後要做3件事。

  • 修改使用者權限可以執行rvm。將使用者加入rvm群組,使之可以執行rvm相關指令。 $ sudo usermod -a -G rvm user-account
  • 如果是虛擬機要改這一項。記得要將uBuntu的terminal的設定改好,參考Integrating RVM with gnome-terminal 。但做了這個設定後,原本的bash shell的設定會跑掉。
  • 登出後再登入。 如果是實體Linux,要重開機。
    如果是虛擬機,執行完後要登出再登入讓設定生效。

確認rvm版本

$ rvm -v
$ rvm 1.22.3 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]  

接下來用rvm來安裝ruby在uBuntu下需要安裝的相關套件(執行完成後會要求需入目前使用者的密碼並開始安裝套件)

$ rvm requirements  

安裝完成後吐出以下log,顯示安裝了哪些相依套件

Installing required packages: gawk, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgdbm-dev, libncurses5-dev, automake, libtool, bison, pkg-config, libffi-dev.  

查看ruby可安裝的版本資訊。正常的話,會出現訊息要求輸使用者密碼。執行需要花一些時間,請耐心等待。如果結果有顯示錯誤,可以試著登出再登入。

$ rvm list known  

使用rvm安裝ruby 1.9.3,實際安裝目錄為/usr/loca/rvm/rubies

$ rvm install 1.9.3  

設定預設的ruby版本

$ rvm use 1.9.3 --default

再度檢查ruby及gem的版本,得到版本號為

$ ruby -v
$ ruby 1.9.3p448 (2013-06-27 revision 41675) [i686-linux]
$ gem -v
$ 1.8.25  

更新Rubygems為搭配ruby–1.9.3使用的版本

$ rvm rubygems current
$ gem -v
$ 2.0.7   

接下來安裝rails及確認安裝後的版本,不安裝文件檔(安裝時間有點久,千萬要耐心等待)。會被安裝在/usr/local/rvm/gems/ruby-1.9.3-p448/gems/rails-4.0.0目錄下。相關的套件連同rails會被安裝28個。

$ gem install rails --no-rdoc --no-ri
$ rails -v
$ Rails 4.0.0  

版本變的真快,現在已經是Rails 4.0版了。

Note

如果rubygems安裝發生問題,則使用以下指令更新rvm為head版本

$ rvm get latest  

再執行一次rvm rubygems currents應該可以安裝成功。再確認一次gem的版本更新為2.0.7。

$ gem -v  

設定MySQL For Redmine [setup_mysql]

建立使用者及資料庫

在MySQL新增Redmine資料庫與使用者。DB會放在/var/lib/mysql目錄中

$ mysql -u root -p  

在命令列會出現mysql的shell,建立資料庫及新使用者。

mysql>CREATE DATABASE redmine CHARACTER SET utf8;  
mysql>CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';  
mysql>GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';  
mysql>flush privileges;
mysql>exit;  

設定資料庫的編碼 (Option)

設定MySQL資料庫的預設編碼。我們將預設的編碼都設為utf–8。
在mysql的設定檔目錄中建立characterset.cnf並加入編碼設定

$ cd /etc/mysql/conf.d
$ sudo vim characterset.cnf
//加入編碼設定
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8  

重啟MySQL

$ sudo service mysql restart  

輸入以下命令後會進入myaql的命令列模式

$ mysql -u root -p  

檢查mysql目前的狀態

mysql>show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

或是使用status指令也可看mysql的設定
mysql>status
//結束mysql指令列
mysql>exit;  

安裝與設定redmine 2.3.2 [setup_redmine]

下載並設定工作目錄

由於我們的目地是設定為multi user的環境,預設的安裝目錄為/usr/share。並且要將群組改為rvm讓其他ruby相關程式可以寫入資料到此資料夾中。在使用者家目錄下開始執行。

$ cd ~
$ wget http://rubyforge.org/frs/download.php/77023/redmine-2.3.2.tar.gz
$ tar -xzvf redmine-2.3.2.tar.gz
$ sudo mv redmine-2.3.2 /usr/share
$ cd /usr/share
$ sudo ln -s /usr/share/redmine-2.3.2 /usr/share/redmine  

建立及編輯redmine的database.yml設定檔

在/usr/share/redmine目錄下設定database.yml

$ cd /usr/share/redmine
$ cp ./config/database.yml.example ./config/database.yml
$ vim ./config/database.yml  

修改內容如下,使用者名稱及密碼就是用剛剛在建立MySQL的命令列建立資料庫及使用者時的資料。

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

建立及編輯redmine的郵件設定檔

在/usr/share/redmine目錄下設定configuration.yml,透過Gmail來當成SMPT寄送信件。

$ cd /usr/share/redmine
$ cp ./config/configuration.yml.example ./config/configuration.yml
$ vim ./config/configuration.yml  

修改內容為

production:
  email_delivery:
  delivery_method: :smtp
  smtp_settings:
    #tls: true
    enable_starttls_auto: true
    address: "smtp.gmail.com"
    port: 587
    domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"  

Note

記得要將tls: true這一行拿掉,否則會發生SSL error。


安裝及設定bundler [setup_bundler]

不需在意目前在哪個目錄下都可以開始執行以下的指令

$ gem install bundler --no-rdoc --no-ri
$ sudo apt-get install libmagickwand-dev libmysql-ruby libmysqlclient-dev
$ gem install mysql2
$ cd /usr/share/redmine
$ bundle install --without development test postgresql sqlite
//顯示以下訊息表示成功
Your bundle is complete!  

安裝好的版本分別為:
* rmagick:2.13.2
* bundler:1.3.5
* mysql2:0.3.13

與資料庫連結

產生 session store secret

$ rake generate_secret_token  

Note:如果發生mysql錯誤,需要再安裝gem的MySQL2

產生資料庫結構

$ RAILS_ENV=production rake db:migrate
//最後一行顯示以下訊息表示成功
==  RemoveIssuesDefaultFkValues: migrated (0.0612s) ===========================

產生預設的組態資料

$ RAILS_ENV=production rake redmine:load_default_data
//顯示以下訊息表示安裝成功
Default configuration data loaded.

命令列會提示預設語言,按ENTER使用預設的英語。

設定redmine及apache的www目錄權限 [setup_redmine_permission]

使用user account去執行redmine application時,必需設定相關的permission。主要的目的為:
* Files (附件檔)
* Log(應用程式的log檔,production.og)
* tmp and tmp/pdf(主要用來產生pdf檔。如果沒有的話,需要建立一個)
* public/plugin_assets(plugin的東東)。經過實驗,plublic/plugin_assets要設為775才可以正常安裝plug-in。但官方的建議是755,不知為何。
以下命令需在redmine主目錄下執行

$ cd /usr/share/redmine
$ mkdir public/plugin_assets
//記得將user-account換成自已的帳號
$ sudo chown -R user-account:www-data files log tmp public/plugin_assets config.ru
$ sudo chmod -R 775 files log tmp public/plugin_assets  

到這𥚃redmine就安裝玩成了!
在部署redmine到apache前,可以用ruby的webrick server測試redmine是否有正常動作。

// 使用ruby 3.1以上和rails 4.0以上版本,請用以下指令
$ ruby script/rails server webrick -e production  

然後打開uBuntu中的firefox browser,打入0.0.0.0:3000,有看到redmine的首頁就表示安裝成功了!


安裝與設定phpmyadmin來管理MySQL(option) [setup_phpmyadmin]

在輸入以下指令後會開始安裝phpmyadmin。安裝過程會跳出window要求選擇http的server是哪一種,我們選擇apache2。

$ sudo apt-get install phpmyadmin  

接下來會再問是否要使用dbconfig-common來設定﹣*Configure database for phpmyadmin with dbconfig-common? *。選Yes,接下來會要求輸入MySQL的root密碼。然後會再要求向MySQL註冊一個root(這個root與uBuntu的root的帳號不同喔)密碼讓phpAdmin可以存取MySQL。

設定並啟動phpmyadmin

將下面這一行加入/etc/apache.conf

$ Include /etc/phpmyadmin/apache.conf  

重啟apache

$ sudo service apache2 restart  

接下來連入phpmyadmin

http://127.0.0.1/phpmyadmin/  

看到登入畫面後,以root帳號,password則輸入之前在安裝phpmyadmin時輸入的root密碼,就可以登入了。


安裝及設定Apache Passenger [setup_apache_passenger]

為了避免裝到舊的版本而且連帶安裝了舊版本的ruby,不要用apt-get而是要用gem來安裝。

$ gem install passenger --no-rdoc --no-ri
//顯示以下訊息表示安裝成功
Successfully installed passenger-4.0.14  

在安裝apache2的passenger套件前,先裝好其他所需套件

$ sudo apt-get install libcurl4-openssl-dev apache2-threaded-dev libapr1-dev libaprutil1-dev  

接下來使用ruby的passenger來安裝需要的apache2 module。

$ passenger-install-apache2-module  

執行後會跑出一堆字說明照著說明安裝就可以順利的安裝好apache2的module。因為會作make的動作,所以安裝過程會有點久,裝好後會顯示The Apache 2 module was successfully installed.。然後會提示如何將ruby on rails的app透過apache上線的設定方式。

這𥚃要特別注意,因為passenger會一直進版本,以下的設定千萬不要直接拿去貼上,否則會出現錯誤。請直接複製在apache-passenger後在螢幕上顯示的文字。

   LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p448/gems/passenger-4.0.14
   PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p448/ruby  

所以我們要在目錄/etc/apache2/conf.d/新增一個passenger.conf,並將以上的訊息一字不漏的填入這個檔案中。此檔會在/etc/apache2/apache.conf中被引入。

$ cd /etc/apache2/conf.d
$ sudo vim passenger.conf
//還要加入以下兩行到這個檔案中以設定redmine的首頁,我是加在最後一行
RailsBaseURI /redmine
//有需要部署網站的要加以下這一行,若是內部測試不需要
PassengerAppRoot /usr/share/redmine  

最後將redmine的文件權限改成www-data(給apache2的群組)鏈結到apache的www中,這樣就可以透過連結http://hostname/redmine到首頁。

$ sudo chown -R www-data:www-data /usr/share/redmine-2.3.2
$ sudo ln -s /usr/share/redmine/public /var/www/redmine  

重新啟動apache

$ sudo service apache2 restart  

到firefox打入127.0.0.1/redmine就可以進到redmine的首頁。以預設的admin帳號登入(密碼為admin),就可以進入管理頁面了。

安裝完passenger時會提供以下comment(option)
接下來也會再提供example去設定apache的Virtual Host。(在本機上先沒有做這個設定)

<VirtualHost *:80>
ServerName http://www.yourhost.com
# !!! Be sure to point DocumentRoot to ‘public’!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews

其他redmine的設定及使用技巧(option)[snippet]

避免log檔太大的解法

修改config/additional_environment.rb

#Logger.new(PATH,NUM_FILES_TO_ROTATE,FILE_SIZE)
config.logger = Logger.new('/path/to/logfile.log', 2, 1000000)
config.logger.level = Logger::INFO  

備份redmine DB到google雲端硬碟

有位好心人寫了一個script可以將redmine備份到google storage,Click Here

補充資料 [appendix]

  • www-data群組:安裝apache後,會產生一個www-data群組
  • chmod +s:改變SUID/SGID程序充許一般用戶以root身份執行該程序。
  • mysqladmin -u root password:在MySQL新增root增號及設定密碼。
  • RubyGems:Ruby 社群最常使用的套件管理系統

網路上找到的參考資料 [internet_reference]

問題與解決 [question_answer]

  • 以gem來安裝ruby or rails套件時,是否應該加sudo?

    參考此連結,Click Here,專家說不加sudo比較好,因為用sudo容易會有權限的問題。建議所有用gem安裝的套件都不要用sudo。

  • redmine要放在/usr/local或/usr/share?

    依據這個參考網站解釋,usr/local主要是系統管理者所控制的軟體放置的地方。而/usr/share主要用來分享不同平台可以共享的應用程式,且不需要修改或儲存任何資料。

  • 如果要將redmine host存取改用redmine.mydomain.com而不是用mydomain.com/redmine,要如何解決?

    要使用

發表留言