我大致上是參考這篇。執行方式是 mongrel 自己跑 web server 聽幾個 port, 再用 apache 跑 proxy, 將特定路徑轉交給 mongrel server。摘要做法如下:
- 參考隨便一篇文章在 Ubuntu 上裝好 Redmine, 能用單機 mongrel_rails 執行。
- 安裝 mongrel_cluster:
sudo gem install mongrel_cluster
- 設 REDMINE_HOME/config/mongrel_cluster.yml:
user: www-data cwd: REDMINE_HOME port: "3000" environment: production group: www-data address: 0.0.0.0 pid_file: log/mongrel.pid servers: 2
- 設 Redmine 的相對網址, 在 REDMINE_HOME/config/environments/production.rb 檔案最後加上
config.action_controller.relative_url_root = '/redmine'
比起 Django 真是簡單百倍。 - 執行 mongrel cluster:
cd REDMINE_HOME mongrel_rails cluster::start
成功的話會跑在 port 3000 和 3001。沒成功的話可以讀 REDMINE_HOME/log/mongrel.3000.log 了解原因。 REDMINE_HOME 內所有檔案擁有者和群組記得設成 www-data。 - 安裝和啟動 apache 需要的 modules
a2enmod proxy a2enmod proxy_http a2enmod proxy_balancer a2enmod rewrite
- 設定 apache conf, 我是寫在 /etc/apache2/conf.d/011_redmine.conf 裡:
<Proxy *> Order deny,allow Allow from all </Proxy> <Proxy balancer://redmine_cluster> BalancerMember http://YOUR_IP:3000 BalancerMember http://YOUR_IP:3001 </Proxy> ProxyPreserveHost On <Location "/redmine"> ProxyPass balancer://redmine_cluster RewriteEngine On # Redirect all non-static requests to cluster RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://redmine_cluster%{REQUEST_URI} [P,QSA,L] </Location>
注意預設 apache proxy 是 deny all, 沒打開 apache error log 會出現 "client denied by server configuration ..." - 執行
/etc/init.d/apache2 reload
目前沒設 /etc/init.d/mongrel_cluster, 以後有機會再來研究。
沒有留言:
張貼留言