安裝方式如下:
1. 安裝 Passenger模組
gem install passenger --no-ri --no-rdoc或
gem install passenger
PS:這裡使用grm安裝passenger的原因是,apt-get沒有passenger這個套件。
2. 透過 Passenger 整合 apache 和 ruby
passenger-install-apache2-module指令執行後,需要選擇須整合的語言,預設是Ruby,按Enter。
整合過程會需要其他相關模組一起配合使用,若系統不存在這些模組,畫面會以紅色字體顯示。
最後會貼心顯示系統缺少那些模組需要被安裝,連同安裝指令也會一起列出,依圖顯示系統目前缺少 libcurl4-openssl-dev、apache2-threaded-dev、libapr1-dec、libaprutil1-dev四個模組,所以只要安裝上這4個模組即可。
當4個模組安裝完成後,再次執行passenger-install-apache2-module安裝,這次就可以確認所需要的模組全都安裝到位,接下去系統會進行整合元件的產生與安裝。
最後完成編譯後,會顯示畫面中的模組存放路徑,將這路徑內容存放到/etc/apache2/sites-available/000-default.conf 的主機設定檔中。
3. 將Passenger產生的模組路徑設定寫入Apache2設定檔
在這階段的設定很重要,網路上多數教學文章都只寫將上面的模組路徑寫入到Apache2 設定檔httpd.conf中,這樣的敘述是錯誤,原因有:
(1) 在Ubuntu的Apache2中沒有httpd.conf檔案,只有apache2.conf,httpd.conf存於Windows系統的Apache。
(2) apache2.conf的內容也不是用來存儲虛擬主機設定的檔案,在/etc/apache2/sites-available/000-default.conf 才有虛擬主機設定內容。
將模組路徑寫到/etc/apache2/sites-available/000-default.conf 檔案裡。
補充說明:網路教學文未提及模組路徑要寫入於檔案頭或檔案尾,經實驗結果頭尾位置可以放,只要模組路徑內容正確即可,但請勿放置於<virtualhost *:80> ~ </virtualhost>之間。
補充說明:
讀者於網路文章中會見到 <virtualhost *:80> 與 <virtualhost *> 兩種寫法,這兩種寫法產生的效果是相同,Port 80是Web連接Port,如果設定檔中沒有特別指定其他Port No.,預設都為 Port 80,可省略不寫。
4. 修改Apache2設定檔虛擬主機連線設定(重要!!!、重要!!!、重要!!!)
以下將介紹2種常見的方法,請各位讀者一定要花時間去了解,這樣才能看懂網路文章所寫內容,以及後續Redmine設定。
方法1:IP-based,直接連線虛擬主機。
Step 1. 在/var/www/下建立一個Rails專案。
Rails new testrails
Step 2. 修改設定檔內容。
vi /etc/apache2/sites-available/000-default.conf
Step 3. 檢查設定檔中是否有任何語法錯誤:
apache2ctl configtest
Step 4. 設定站台連結。
a2ensite 000-default.conf
Step 5. 重新啟動rails server。
service apache2 reload或
service apache2 restart或
service apache2 stop
service apache2 start或
/etc/init.d/apache2 restart
開啟瀏覽器輸入http://127.0.0.1 或 http://ip ,此時的Apache2 server是啟動狀態下所顯示的畫面,此時的rails server是未啟動狀態。
方法2:Host-based Virtual Hosting,透過中繼轉換連線至虛擬主機 (此方法在Redmine設定常被使用)
Step 1. 建立中繼站點連結。
ln -s /var/www/testrails/public /var/www/iinfo
Step 2. 修改設定檔內容。
vi /etc/apache2/sites-available/000-default.conf
Step 3. 設定站台連結。
a2ensite 000-default.conf
Step 4. 重新啟動rails server。
service apache2 restart
開啟瀏覽器輸入http://127.0.0.1/iinfo/ 或 http://ip/iinfo/ ,此時的Apache2 server是啟動狀態下所顯示的畫面,此時的rails server是未啟動狀態。
PS:請注意方法1與方法2都未啟動Rails server,只啟動Apache server,就可以讓rails專案執行,表示已將Ruby整合至Apeche server了。
4. 安裝過程遇到的問題
問題現象1:使用vi命令時,不能正常編輯檔,使用方向鍵時老是出現很多字母。
原因:主要是新安裝的系統只裝了vi,沒有裝vim。加上vi不能直接按退格鍵刪除字元,所以當你使用退格鍵刪除字元,只有在按下esc時,那些字元才會消失。
解決方法:
1. 移除vi
apt-get remove vim-common
2. 安裝vim
apt-get install vim
如果你覺得敲VIM比敲VI更加麻煩或者不習習慣的話,可以使用alias命令給VIM的別名設置為VI,命令格式如下:
alias vi="vim"
問題現象2:設定虛擬主機方法2,遇到無法重啟Apache2 server的問題。
原因:一般該情況的發生多半是未將/etc/apache2/sites-available/000-default.conf 設定檔填寫正確,所以要多注意設定檔的內容。
參考資料:
- Ruby on Rails部署方案
- 看UNICORN時看到一篇寫RAILS部署
- 小記apache/nginx的ruby/python容器Passenger的安裝
- Ruby on Rails 伺服器的選擇
- 【Linux】Ubuntu系统下VI编辑器方向键输出字母问题
- 配置 Apache 支援多個網域
- Virtual Hosts › Apache › Wiki › ubuntuusers.de