首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

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

2012-07-23 
Linux Deploy Rails3 with Ruby1.9.2(4)Configure the rails in Apache2Linux Deploy Rails3 with Ruby1.9

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

热点排行