本页主题: Debian mod_fastcgi Notes 打印 | 加为IE收藏 | 复制链接 | 收藏主题 | 上一主题 | 下一主题

admin
级别: 管理员


精华: 1
发帖: 4646
威望: 47 点
金钱: 23190 RMB
贡献值: 0 点
注册时间:2006-10-09
最后登录:2008-12-04

 Debian mod_fastcgi Notes

NOTE: This document is incomplete. Need to finish converting mod_fastcgi instructions to work with Apache 1.x. That module is only recommended with Apache 1.x for rails.

Before we begin…
Remember that:

For Apache 2.x, use mod_fcgid (1.09 or later recommended).
For Apache 1.x, use mod_fastcgi.
Each dispatch.fcgi instance takes ~22MB RAM.
Three methods
1. install libapache2-mod-fcgid (mod_fcgid). mod_fcgid is an actively maintained GPL project designed to replace mod_fastcgi. It is designed for Apache 2.x and is reported to be more reliable. Only available for Apache 2.x.

2. install libapache-mod-fastcgi (mod_fastcgi). Unless you do not want to use unmaintained or non-free packages, this is the recommended method for Apache 1.3.x. On Apache 2.x, use libapache2-mod-fcgid (first approach) which is actively maintained upstream.

3. compile mod_fastcgi from source.

All three methods follow.

Installing libapache2-mod-fcgid
The latest version of mod_fcgid is 1.09 (released on April 25, 2006). It is recommended that you do not use earlier versions because 1.09 adds configuration option DefaultMinClassProcessCount(default 3).

Other instructions on using mod_fcgid with Rails are at:
http://www.tummy.com/Community/Articles/rails-fcgi/
FIRST STEP:

Install the module by executing:

apt-get install libapache2-mod-fcgid
--------------------------------------------------------------------------------

SECOND STEP: verify configuration
NOTE: mod_fcgid will kill dispatch.fcgi process that expires based on IdleTimeout or ProcessLifeTime but you can use DefaultMinClassProcessCount to make the specified number of processes ignore IdleTimeout.

Example of /etc/apache2/mods-enabled/fcgid.conf (symbolic link)



<IfModule mod_fcgid.c>
  AddHandler fcgid-script .fcgi
  SocketPath /var/lib/apache2/fcgid/sock
  DefaultInitEnv  RAILS_ENV production
  IdleTimeout 600
  ProcessLifeTime 3600
  MaxProcessCount 8
  DefaultMinClassProcessCount 3
  DefaultMaxClassProcessCount 3
  IPCConnectTimeout 8
  IPCCommTimeout 48
</IfModule>


--------------------------------------------------------------------------------

Example /etc/apache2/mods-enabled/fcgid.load (symbolic link)


LoadModule fcgid_module /usr/lib/apache2/modules/mod_fcgid.so


--------------------------------------------------------------------------------

THIRD STEP: restart apache2


invoke-rc.d apache2 force-reload

Installing libapache-mod-fastcgi for Apache 1.x
Again, this requires getting a package from the non-free repository. If you are objected to this, please use the second method.

Setup apt to access the non-free repository
To access the non-free repositories, you must modify your /etc/apt/sources.list file. You may already have the non-free repository added, in which case, skip this step.

For all the sources you have, append “non-free” at the end. It should look like this (your host, and distribution vary):

deb <a href="http://mir2.ovh.net/debian/">http://mir2.ovh.net/debian/</a> unstable main contrib non-freeThen update your package lists:

apt-get updateInstall libapache-mod-fastcgi
NOTE: this is for Apache 1.x users. For Apache 2.x, use mod_fcgid.

Install the module by executing:

apt-get install libapache-mod-fastcgiEnable the module
Run the apache-provided aenmod command.

aenmod fastcgiConfigure mod_fastcgi
If you want to set the initial environment variable RAILS_ENV globally, this is the time to do it. Modify /etc/apache/mods-available/fastcgi.conf. If you don’t want to enabled this globally, you can set it in config/environment.rb that is located in the specific rails project instead.

Restart apache
apachectl -k gracefulAnd you’re set!

Compiling mod_fastcgi-2.4.2
WARNING: mod_fastcgi is not recommended for use with Apache2 and rails. This module is unreliable on Apache 2.x.

If you are compiling mod_fastcgi from source on a Debian platform and using the default Apache2 setup, you will need to retrieve the Apache2 source from the Debian repositories:

sudo apt-get install apache2-threaded-devThen you will be able to :


  cd ..
  tar -zxvf mod_fastcgi-2.4.2.tar.gz
  cd mod_fastcgi-2.4.2
  cp Makefile.AP2 Makefile
  make top_dir=/usr/share/apache2
  sudo make install top_dir=/usr/share/apache2
Configuring Apache
Edit your /etc/apache2/sites-enabled to something such as this:


NameVirtualHost  *:80
<VirtualHost *:80>
ServerName localhost
ServerAdmin <a href="mailto:your@email.addy">your@email.addy</a>
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's
                # default start page
                # in /apache2-default/, but still have / go
                # to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error,
        # crit, alert, emerg.
LogLevel warn
CustomLog /var/log/apache/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
      # this is for a localhost setup, your needs may be
      # different on a production server
</Directory>

</VirtualHost>

<IfModule mod_fastcgi.c>
    FastCgiIpcDir /tmp/fcgi_ipc/
    FastCgiServer /app/public/dispatch.fcgi -initial-env 
RAILS_ENV=production -processes 15 -idle-timeout 60
# As per DHH from RoR mailing list 5/17/05
</IfModule>

<VirtualHost *:80>
    ServerName rails
    DocumentRoot /path/to/rails/app/public/
    ErrorLog /path/to/rails/app/log/apache.log
    ServerAdmin <a href="mailto:your@email.addy">your@email.addy</a>
<Directory /path/to/rails/app/public/ >
      Options ExecCGI FollowSymLinks
      AllowOverride all
      Allow from all
      Order allow,deny
</Directory>
</VirtualHost>
Then, create a file /etc/apache/mods-enabled/fcgi.load and add the following lines to it:



LoadModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so
AddHandler fastcgi-script .fcgi

If you are using mod_fcgid (on Apache 2) you MUST modify your .htaccess for following handler. If you don’t, all you will see is your dispatch.fcgi as text for whatever page you call.



#COMMENTED OUT#AddHandler fastcgi-script .fcgi
#COMMENTED OUT#AddHandler cgi-script .cgi
AddHandler fcgid-script .fcgi
[...]
#COMMENTED OUT#RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
# last line must be *here* after rules

Last but not least: remember to give permission to the webserver to write in the tmp directory (the easiest is a chmod 666 tmp)

http://wiki.rubyonrails.org/rails/pages/Debian+mod_fastcgi+Notes
顶端 Posted: 2007-07-17 09:50 | [楼 主]
帖子浏览记录 版块浏览记录
承德互联 » PHP+Mysql+Apache

Total 0.026304(s) query 5, Time now is:12-05 07:57, Gzip enabled
Powered by PHPWind v6.3.2 Certificate Code © 2003-08 PHPWind.com Corporation