Linux Deploy Rails3 with Ruby1.9.2(4)Configure the rails in Apache2

Linux Deploy Rails3 with Ruby1.9.2(4)Configure the rails in Apache2

Change the configuration of apache2
>vi httpd.conf
LoadModule passenger_module /home/luohua/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9/gems/passenger-3.0.8/ext/apache2/mod_passenger.so
PassengerRoot /home/luohua/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9/gems/passenger-3.0.8
PassengerRuby /home/luohua/.rvm/rubies/ruby-1.9.2-p290

try to restart the apache server
>bin/apachel restart

error messages:
httpd: Syntax error on line 423 of /opt/tools/httpd/conf/httpd.conf: API module structure 'passenger_module' in file /home/luohua/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9/gems/passenger-3.0.8/ext/apache2/mod_passenger.so is garbled - expected signature 41503232 but saw 41503230 - perhaps this is not an Apache module DSO, or was compiled for a different Apache version?

solutions:
That is because I have 2 version of apache2 on my server. I will use the one who compiled passenger.
The compile passenger information:
* Apache 2... found at /usr/bin/httpd
* Apache 2 development headers... found at /usr/sbin/apxs
* Apache Portable Runtime (APR) development headers... found at /usr/bin/apr-config
* Apache Portable Runtime Utility (APU) development headers... found at /usr/bin/apu-config

>sudo mv /usr/sbin/httpd /usr/sbin/httpd.bak
>sudo ln -s /opt/tools/httpd/bin/httpd /usr/bin/httpd
>sudo mv /usr/sbin/apxs /usr/sbin/apxs.bak
>sudo ln -s /opt/tools/httpd/bin/apxs /usr/sbin/apxs

find the version of apache
>bin/apachectl -V | grep SERVER_CONFIG_FILE

located the APXS2
>export APXS2=/opt/tools/httpd/bin/apxs

try to restart the apache again
>bin/apachel restart

error message:
[Wed Aug 31 14:47:23 2011] [notice] SIGHUP received. Attempting to restart
*** Passenger ERROR (ext/common/ApplicationPool/../SpawnManager.h:220):
Could not start the spawn server: /home/luohua/.rvm/rubies/ruby-1.9.2-p290: Permission denied (13)
[ pid=14425 thr=3086257024 file=ext/apache2/HelperAgent.cpp:354 time=2011-08-31 14:47:23.906 ]: Could not start the spawn server: write() failed: Broken pipe (32)
in 'Passenger::SpawnManager::SpawnManager(const std::string&, const boost::shared_ptr<Passenger::ServerInstanceDir::Generation>&, const Passenger::AccountsDatabasePtr&, const std::string&, const Passenger::AnalyticsLoggerPtr&, int, const std::string&)' (SpawnManager.h:540)
in 'Passenger::ApplicationPool::Pool::Pool(const std::string&, const boost::shared_ptr<Passenger::ServerInstanceDir::Generation>&, const Passenger::AccountsDatabasePtr&, const std::string&, const Passenger::AnalyticsLoggerPtr&, int, const std::string&)' (Pool.h:1078)
in 'Server::Server(Passenger::FileDescriptor, pid_t, const std::string&, bool, const std::string&, const std::string&, const std::string&, const std::string&, unsigned int, unsigned int, unsigned int, unsigned int, const Passenger::VariantMap&)' (HelperAgent.cpp:241)
in 'int main(int, char**)' (HelperAgent.cpp:344)
[Wed Aug 31 14:47:23 2011] [error] *** Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog because it encountered the following error during startup: Unable to start the Phusion Passenger helper agent: it seems to have crashed during startup for an unknown reason, with exit code 1
[Wed Aug 31 14:47:23 2011] [notice] Apache/2.2.19 (Unix) Phusion_Passenger/3.0.8 configured -- resuming normal operations

solutions:
>sudo chmod a+x -R /home/luohua/.rvm/rubies/ruby-1.9.2-p290
or
>sudo chmod 777 -R /home/luohua/.rvm/rubies/ruby-1.9.2-p290

add this to my httpd.conf
PassengerRuby /usr/bin/ruby
PassengerDefaultUser root

link the ruby to /usr/bin
>sudo ln -s ~/.rvm/rubies/ruby-1.9.2-p290/bin/ruby /usr/bin/ruby

Add one more Virtual host and visit our rails application
<VirtualHost *:80>
ServerName www.sillycat.com
DocumentRoot /opt/work/projectname/public
<Directory /opt/work/projectname/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>

I comments the following lines in httpd.conf:
#<Directory />
# Options FollowSymLinks
# AllowOverride None
# Order deny,allow
# Deny from all
#</Directory>

After all these done, I can visit http://www.sillycat.com and get the pages.

That is not good way for rails, because I have some other applications on apache, and I do not want this application take the ROOT
content path.

So I will make all the static things in htdoc directory /opt/tools/httpd/htdocs
<VirtualHost *:80>
ServerName ud1129.chinaw3.com
DocumentRoot /opt/tools/httpd/htdocs
<Directory /opt/tools/httpd/htdocs>
Allow from all
</Directory>
</VirtualHost>

link my project to the htdocs directory
>sudo ln -s /opt/work/projectname/public /opt/tools/httpd/htdocs/projectname

<VirtualHost *:80>
ServerName ud1129.chinaw3.com
DocumentRoot /opt/tools/httpd/htdocs
<Directory /opt/tools/httpd/htdocs>
Allow from all
</Directory>

RailsBaseURI /projectname
<Directory /opt/tools/httpd/htdocs/projectname>
Options -MultiViews
</Directory>
</VirtualHost>

Tips: In this way, wa can make multi rails applications.
<VirtualHost *:80>
....
RailsBaseURI /app1
RailsBaseURI /app2
RailsBaseURI /app3
</VirtualHost>

copy all the static things to htdocs/asset directory
>sudo cp /opt/work/projectname/app/assets/images /opt/tools/httpd/htdocs/assets
>sudo cp /opt/work/projectname/app/assets/javascripts /opt/tools/httpd/htdocs/assets
>sudo cp /opt/work/projectname/app/assets/stylesheets /opt/tools/httpd/htdocs/assets

Ok, done, visit http://www.sillycat.com/projectname

references:
http://serdaryildirim.net/ruby-on-rails/installing-passenger.html
http://stackoverflow.com/questions/4946426/getting-rails-3-and-passenger-to-work-on-centos-5-4-apache-error
http://www.modrails.com/documentation/Users%20guide%20Apache.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值