文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ubuntu+apache+fcgid+rails

ubuntu+apache+fcgid+rails

时间:2007-07-07  来源:stone5

先说一下,本人下面并没把apache下的rails安装配置成功,一直都出500内部错误.现在只好尝试转移到ubuntu+lighttpd+fcgi+php+rails结构上,另外写个日志.

先用apt-get install ruby1.8 libruby1.8安装ruby。

上次手工下载安装的gem,并用gem安装的rails,到应用目录下,生成一个简单的rails应用,用script/server启动webrick,便可在客户机上用Http://xxx.com:3000来访问了。
但是访问时,出错了,webrick的窗口日志提示什么没有irb。这应该是rails没装好,只好傻瓜安装
apt-get install rails
这下安装了好些包,装好后,这个webrick的访问就正常了,代表ruby和rails已能用了,只不过还不能用apache来接受web请求。

原来apache是已经有php在用的了,现在要增加fastcgid(网上都推荐这个fastcgid来代替fastcgi)模块。
用apt-get时一直都提示,找不到软件包libapache2-mod-fcgid,可我看别人的例子上都有的。后来听说,源的原因可能会引起找不到 一些软件包。便修改apt的sources.list中的源为另外一个,update不成功,又改回来,update一下竞然找到了。顺利安装。
查看一下,已有如下内容:
root@ubuntu:/var/www/niukou/public# cat /etc/apache2/mods-available/fcgid.conf
<IfModule mod_fcgid.c>
  AddHandler fcgid-script .fcgi
  SocketPath /var/lib/apache2/fcgid/sock
</IfModule>
root@ubuntu:/var/www/niukou/public# cat /etc/apache2/mods-available/fcgid.load
LoadModule fcgid_module /usr/lib/apache2/modules/mod_fcgid.so
设置一个虚拟主机作rails应用的:

<VirtualHost xxx.xxx.xxx.xxx>
        ServerAdmin [email protected]
        ServerName www.xxx.com
        DocumentRoot /var/www/niukou/public   这就是rails的发布目录了
        DefaultInitEnv RAILS_ENV production
        <Directory "/var/www/niukou/public">
            Options ExecCGI FollowSymLinks    允许执行CGI,外部符号链接
            AllowOverride None
            Allow from all
            Order allow,deny
        </Directory>

    RewriteEngine on
    RewriteRule ^$ index.html [QSA]     
    RewriteRule ^([^.]+)$ $1.html [QSA]      此标记强制重写引擎在已有的替换字符串中追加一个查询字符串,而不是简单的替换。如果需要通过重写规则在请求串中增加信息,就可以使用这个标记。
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]      L标志符表示在这里结束重写,防止后面再被重写
</VirtualHost>

因为在rails生成的publich目录下是有.htaccess文件,其中的设置会覆盖apache上文的配置,既然想把配置写在这里,所以设置AllowOverride为None,不让覆盖。
分析其中的四句重写规则:

RewriteEngine on
    RewriteRule ^$ index.html [QSA]         这个是对首页的重写,没什么好说的了
    RewriteRule ^([^.]+)$ $1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f      如果请求所匹配的本地系统文件名不是一个文件
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载