[原创]Ubuntu 8.04部署lighttpd+ROR+MySQL实践

软件和网站开发以及相关技术探讨
回复
考工作*喜登科
帖子: 2
注册时间: 2008-09-13 22:05

[原创]Ubuntu 8.04部署lighttpd+ROR+MySQL实践

#1

帖子 考工作*喜登科 » 2008-09-13 22:17

Ubuntu 8.04部署lighttpd+ROR+MySQL实践
绝对原创,真实有效。转载请注明作者:喜登科

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

命令: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开发环境,对于安装ruby的mysql驱动是必需的。

命令:sudo gem install mysql
说明:安装ruby的mysql驱动。

注意:在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、 安装lighttpd和fastcgi及驱动
命令:sudo apt-get install lighttpd libfcgi-dev libfcgi-ruby1.8
说明:安装lighttpd及fastcgi for ruby

命令:/usr/sbin/lighty-enable-mod fastcgi
命令:/usr/sbin/lighty-enable-mod proxy
说明:使fastcgi和lighttpd系统启动即自启动。

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/f ... gi-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/f ... gi-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点改进,即可避免。
考工作*喜登科
帖子: 2
注册时间: 2008-09-13 22:05

[建议]置顶

#2

帖子 考工作*喜登科 » 2008-09-14 21:50

[建议]置顶
头像
sevk
帖子: 2060
注册时间: 2007-05-08 16:26
系统: arch
来自: 火星内核某分子内某原子核内
联系:

Re: [原创]Ubuntu 8.04部署lighttpd+ROR+MySQL实践

#3

帖子 sevk » 2008-10-28 8:48

太好了,谢谢.
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387
回复