Linux 下的 Apache + FastCGI 部署 ROR 应用

  介绍如何在 Linux 下部署 Apache + FastCGI 的 ROR 应用。

1) 安装 ROR 环境

这里假设你的机器为干净的机器,我使用的是 ubuntu-alternate 8.04 命令行安装模式,下面的脚本适合 debian 系的发行版,理论上不兼容 RedHat 系的发行版。

为方便起见,我将安装 ROR 环境写了一个 SHELL 脚本,直接执行即可方便的安装 ROR 环境,这里使用的 RAILS 版本为 2.0.2。

请使用 sudo 前缀执行该脚本:

install_ror.sh - Copy Code
 
      
# !/bin/bash INSTALL_HOME =~/ ror_installer if [ - d " $INSTALL_HOME " ]; then echo INSTALL_HOME directory \ " ~/ror_installer\" already exist. exit 1 fi mkdir $INSTALL_HOME pushd $INSTALL_HOME # Download files apt - get - d - y install \ ruby libruby - extras \ libyaml - ruby libzlib - ruby libiconv - ruby libxml - ruby \ libdbi - ruby \ libmysql - ruby libdbd - mysql - ruby libdbd - sqlite3 - ruby \ libfcgi - ruby1. 8 wget - t0 - T15 http: // rubyforge.org / download.php / 35283 / rubygems - 1.1 . 1 .tgz wget - t0 - T15 http: // rubyforge.org / download.php / 29353 / actionmailer - 2.0 . 2 .gem wget - t0 - T15 http: // rubyforge.org / download.php / 29350 / actionpack - 2.0 . 2 .gem wget - t0 - T15 http: // rubyforge.org / download.php / 29551 / activerecord - 2.0 . 2 .gem wget - t0 - T15 http: // rubyforge.org / download.php / 29552 / activeresource - 2.0 . 2 .gem wget - t0 - T15 http: // rubyforge.org / download.php / 29553 / activesupport - 2.0 . 2 .gem wget - t0 - T15 http: // rubyforge.org / download.php / 29554 / rails - 2.0 . 2 .gem wget - t0 - T15 http: // rubyforge.org / download.php / 29751 / rake - 0.8 . 1 .gem # Install ruby apt - get - y install \ ruby libruby - extras \ libyaml - ruby libzlib - ruby libiconv - ruby libxml - ruby \ libdbi - ruby \ libmysql - ruby libdbd - mysql - ruby libdbd - sqlite3 - ruby \ libfcgi - ruby1. 8 # Install rubygems tar xfv rubygems - 1.1 . 1 .tgz pushd rubygems - 1.1 . 1 ruby setup.rb ln - s / usr / bin / gem1. 8 / usr / bin / gem popd # Install Gem gem install rails - l -- no - ri -- no - rdoc # Clean popd rm - rf $INSTALL_HOME

 

2) 安装 Apache

同样是 SHELL 脚本安装,请使用 sudo 前缀执行该脚本:

install_apache2.sh - Copy Code
 
      
# !/bin/bash # Download files apt - get - d - y install apache2 libapache2 - mod - fcgid # Install apache apt - get - y install apache2 libapache2 - mod - fcgid ln - s / etc / apache2 / mods - available / rewrite.load / etc / apache2 / mods - enabled / rewrite.load

 

3) 配置 Apache

ROR 应用的 Apache 配置,在 /etc/apache2/apache2.conf 的末尾添加以下代码:

apache2.conf - Copy Code
 
      
Include / etc / apache2 / httpd.conf

修改 httpd.conf 为以下内容:

httpd.conf - Copy Code
 
      
DefaultInitEnv RAILS_ENV production Alias "/redmine" "/var/www/redmine/public/" < Directory "/var/www/redmine/public/" > Options Indexes ExecCGI FollowSymLinks AllowOverride all Order Deny,Allow Allow from All </ Directory > < Location /redmine /> AddHandler fcgid-script .fcgi FCGIWrapper "/usr/bin/ruby /var/www/redmine/public/dispatch.fcgi" .fcgi RewriteEngine on RewriteBase /redmine RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi?$1 [QSA,L] </ Location >

4) 配置 ROR 应用

配置 ROR 应用,这里为方便期间,直接使用 sqlite3,ROR 程序为 redmine

请使用 sudo 前缀执行该脚本:

install_app.sh - Copy Code
 
      
# !/bin/bash INSTALL_HOME =~/ install_redmine if [ - d " $INSTALL_HOME " ]; then echo INSTALL_HOME directory \ " ~/install_redmine\" already exist. exit 1 fi mkdir $INSTALL_HOME # Download files pushd $INSTALL_HOME wget - t0 - T15 http: // rubyforge.org / download.php / 36468 / redmine - 0.7 . 1 .tar.gz popd # Install redmine tar xfv $INSTALL_HOME / redmine - 0.7 . 1 .tar.gz - C / var / www / mv / var / www / redmine - 0.7 . 1 / var / www / redmine cp / var / www / redmine / public / dispatch.fcgi.example / var / www / redmine / public / dispatch.fcgi # ---- begin database.yml ---- declare - x START_NO = $LINENO; if [ 0 - eq 1 ]; then production: adapter: sqlite3 database: db / production.sqlite3 timeout: 5000 development: adapter: sqlite3 database: db / development.sqlite3 timeout: 5000 test: adapter: sqlite3 database: db / test.sqlite3 timeout: 5000 fi; declare - x END_NO = $LINENO # ---- end database.yml ---- awk ' {if(NR > ENVIRON["START_NO"] && NR < ENVIRON["END_NO"]) {print}} ' \ $0 > / var / www / redmine / config / database.yml pushd / var / www / redmine rake db:create RAILS_ENV = " production " rake db:migrate RAILS_ENV = " production " # Load redmine's default data echo en > loc rake redmine:load_default_data RAILS_ENV = " production " < loc rm - f log / production.log rm - f public / .htaccess popd # Clean rm - rf $INSTALL_HOME

注:如果在 Linux 下部署,并使用 SQLite3 数据库时,第一次访问 redmine 无法创建匿名用户,访问时会发生 500 错误,这是属于 redmine 的问题,要解决此问题,执行以下命令:

交互式命令 - Copy Code
 
      
sudo apt - get install sqlite3 cd / var / www / redmine / db sudo sqlite3 production.sqlite3 > INSERT INTO users ( " created_on " , " status " , " last_login_on " , " hashed_password " , " language " , " updated_on " , " admin " , " type " , " firstname " , " lastname " , " mail " , " auth_source_id " , " mail_notification " , " login " ) VALUES( ' 2008-05-21 04:31:54 ' , 0 , NULL, '' , '' , ' 2008-05-21 04:31:54 ' , ' f ' , ' AnonymousUser ' , '' , ' Anonymous ' , '' , NULL, ' f ' , '' ); > .exit sudo apache2ctl restart ruby script / server - e production

最后,重启 apache2:

重启 apache2 - Copy Code
 
      
sudo apache2ctl restart

 

部署看似简单,写起脚本来可是非常费劲的,不过一劳永逸,以后想要部署可以直接参考使用了。

2008-05-21 Zealic

转载于:https://www.cnblogs.com/zealic/archive/2008/05/21/1203706.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值