Chinaunix首页 | 论坛 | 博客
  • 博客访问: 218480
  • 博文数量: 68
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 695
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-19 21:17
文章分类

全部博文(68)

文章存档

2009年(16)

2008年(12)

2007年(27)

2006年(13)

我的朋友

分类: 系统运维

2007-07-07 00:50:31

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

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

上次手工下载安装的gem,并用gem安装的rails,到应用目录下,生成一个简单的rails应用,用script/server启动webrick,便可在客户机上用来访问了。
但是访问时,出错了,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 xxx@xxx.com
        ServerName
        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]

阅读(1874) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~