Ubuntu 8.04部署lighttpd+ROR+MySQL实践

Ubuntu 8.04部署lighttpd+ROR+MySQL实践

喜登科

我在部署考工作*喜登科(http://www.xidengke.com)网站的过程中,苦于无完善中文资料查阅,很多中文资料只有只言片语,不便于完整使用,或者并不适合Ubuntu 8.04环境。其间经历无数曲折,最后终于掌握,现将详细过程记录下来,方便初学者学习部署类似应用。所用命令反复推敲多次,在Ubuntu 8.04 serverUbuntu 8.04 desktop都反复安装试验,绝对精确可靠,也请大家多多支持喜登科。

1、  安装rubyrubygems

命令:sudo apt-get install ruby ruby1.8-dev

说明:ruby1.8-dev是必须的,便于安装mysqlruby驱动。

 

命令:ruby –version

说明:显示ruby版本,检查是否成功安装。

 

命令:sudo apt-get install rubygems

说明:安装rubygems

 

命令:gem –version

说明:显示gem版本,检查是否成功安装。

 

2、  安装mysql及驱动

命令:sudo apt-get install mysql-server mysql-client

说明:安装mysql数据库。按提示输入root用户密码

 

命令:mysql –version

说明:显示mysql版本,检查是否成功安装。

 

命令:sudo apt-get install libmysql15-dev

说明:安装mysql开发环境,对于安装rubymysql驱动是必需的。

      

命令:sudo gem install mysql

说明:安装rubymysql驱动。

 

注意:在windows下安装mysql会自动选择中文环境,但在ubuntu下,默认为丹麦语。对于windows下开发环境移植过来的数据库,常有不能正常显示中文的问题。有很多解决办法,我提供一个实用的办法,作到2点即可:

一、创建数据库选择该数据库默认语言为utf8,

CREATE DATABASE `xidengke` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

二、在脚本文件里使用中文,请在开始加一行

SET NAMES utf8;

 

3、  安装rails

命令:sudo gem install rails –y

说明:安装rails

 

命令:rails –version

说明:显示rails版本,检查是否成功安装。

 

4、  安装lighttpdfastcgi及驱动

命令:sudo apt-get install lighttpd libfcgi-dev libfcgi-ruby1.8

说明:安装lighttpdfastcgi for ruby

 

命令:/usr/sbin/lighty-enable-mod fastcgi
命令:/usr/sbin/lighty-enable-mod proxy

说明:使fastcgilighttpd系统启动即自启动。

 

5、  配置lighttpd

配置 /etc/lighttpd/lighttpd.conf 文件是最难的一步了,我建立的一个样本配置文件,满足基本使用的配置:

 

server.document-root = "/home/#user#/#www#"

server.bind = "127.0.0.1"

 

server.modules = (

"mod_access",

"mod_accesslog",

"mod_fastcgi",

"mod_rewrite",

"mod_redirect"

)

mimetype.assign = ( 

  ".css"        =>  "text/css",

  ".gif"        =>  "image/gif",

  ".htm"        =>  "text/html",

  ".html"       =>  "text/html",

  ".jpeg"       =>  "image/jpeg",

  ".jpg"        =>  "image/jpeg",

  ".js"         =>  "text/javascript",

  ".png"        =>  "image/png",

  ".swf"        =>  "application/x-shockwave-flash",

  ".txt"        =>  "text/plain"

)

 

$HTTP["host"] == "127.0.0.1" {

 server.document-root = "/home/#user#/#www#/#rails1#/public"

 server.error-handler-404 = "/dispatch.fcgi"

 fastcgi.server = (".fcgi" =>

    ("localhost" =>

      ("min-procs" => 10,

       "max-procs" => 10,

       "socket" => "/home/#user#/#www#/#rails1#/tmp/sockets/rails.socket",

       "bin-path" => "/home/#user#/#www#/#rails1#/public/dispatch.fcgi",

       "bin-environment" => ("RAILS_ENV" => "production")

      )

    )

 )

}

 

说明:

一、#user#是你登陆ubuntu的用户名,/home/#user#即你的主文件夹。注意将所有#user#替换为如myname等。

二、#www#是指你在主文件下建立的web应用的根文件夹。如wwwroot等,也需全部替换。

三、#rails1#是指你在web应用的根文件夹建立的ror应用。也需全部替换。

四、文中的server.bind = "127.0.0.1"如果在正式的独立服务器上部署应输入服务器IP

五、文中的$HTTP["host"] == "127.0.0.1"如果在正式的独立服务器上部署应输入域名。有趣的是,这个地方如果输入IP,则只能在浏览器输入IP访问;若输入域名,则只能在浏览器输入域名访问。所以,一切部署停当,应输入域名。

 

6、  改进你的应用

对于从windows下迁移过来的rails程序,注意改进 rials1/public/dispatch.fcgi下的第一行ruby解析位置:

原文一般形式:#!c:/ruby/bin/ruby,在ubuntu下改为:#!/usr/bin/ruby

 

7、  启动lighttpd

命令:sudo /etc/init.d/lighttpd restart

说明:上述配置完成后,可以重启ubuntu自动启动lighttpd,也可使用上述命令行启动,建议用命令行启动,便于观察故障。今后重启ubuntu不需要执行该命令。

 

8、  故障排除

故障1

ERROR:  While executing gem ... (Gem::Installer::ExtensionBuildError)
    ERROR: Failed to build gem native extension.

ruby extconf.rb install -r ruby-debug-base
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
        from extconf.rb:1

如果出现以上问题了,请安装ruby-dev,即本文第一个命令sudo apt-get install ruby ruby1.8-dev的后面ruby1.8-dev不能省略。

 

故障2

Starting lighttpd2007-07-04 22:24:11: (mod_fastcgi.c.998) execve failed for: /www/railsapp/mydoc/public/dispatch.fcgi Permission denied
linux:/var/log# 2007-07-04 22:24:11: (mod_fastcgi.c.1024) the fastcgi-backend /www/railsapp/mydoc/public/dispatch.fcgi failed to start:
2007-07-04 22:24:11: (mod_fastcgi.c.1028) child exited with status 13 /www/railsapp/mydoc/public/dispatch.fcgi
2007-07-04 22:24:11: (mod_fastcgi.c.1031) if you try do run PHP as FastCGI backend make sure you use the FastCGI enabled version.
You can find out if it is the right one by executing 'php -v' and it should display '(cgi-fcgi)' in the output, NOT (cgi) NOR (cli)
For more information check http://www.lighttpd.net/documentation/fastcgi.html#preparing-php-as-a-fastcgi-program
2007-07-04 22:24:11: (mod_fastcgi.c.1333) [ERROR]: spawning fcgi failed.
2007-07-04 22:24:11: (server.c.849) Configuration of plugins failed. Going down.

说明:没有权限执行public/dispatch.fcgi,所以本文第7点的sudo /etc/init.d/lighttpd restart中的sudo是必需的,如果一切路径按本文第5点说明所配置,应该不会有问题。

 

故障3

2007-07-04 22:32:53: (mod_fastcgi.c.998) execve failed for: /www/railsapp/mydoc/public/dispatch.fcgi No such file or directory
2007-07-04 22:32:53: (mod_fastcgi.c.1024) the fastcgi-backend /www/railsapp/mydoc/public/dispatch.fcgi failed to start:
2007-07-04 22:32:53: (mod_fastcgi.c.1028) child exited with status 2 /www/railsapp/mydoc/public/dispatch.fcgi
2007-07-04 22:32:53: (mod_fastcgi.c.1031) if you try do run PHP as FastCGI backend make sure you use the FastCGI enabled version.
You can find out if it is the right one by executing 'php -v' and it should display '(cgi-fcgi)' in the output, NOT (cgi) NOR (cli)
For more information check http://www.lighttpd.net/documentation/fastcgi.html#preparing-php-as-a-fastcgi-program
2007-07-04 22:32:53: (mod_fastcgi.c.1333) [ERROR]: spawning fcgi failed.
2007-07-04 22:32:53: (server.c.849) Configuration of plugins failed. Going down.

说明:fastcgi没有找到ruby解析器的位置,注意本文第6点所描述的内容,指向正确的ruby安装位置。如果默认严格如本文第1点安装,按第6点改进,即可避免。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值