ubuntu 7.04 server + lighttpd 1.4.13 + rails 配置

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
ssjjxx000
帖子: 201
注册时间: 2006-01-09 9:41
来自: 湖南邵东

ubuntu 7.04 server + lighttpd 1.4.13 + rails 配置

#1

帖子 ssjjxx000 » 2008-06-04 13:46

ubuntu 7.04 server + lighttpd 1.4.13 + rails 配置
最近因为Rubyist项目的问题,需要一个地方来做演示。当然我们有自己的服务器,但是上面安装的是windows 2003 server,因为我还需要服务器支持asp.net。本来也可以开在国外的,但是想到演示空间经常需要更新,速度上可能还是不太理想,而且国内的服务器其实也已经配置好了支持rails运行的,目前采用的有两种方式,一种是Apache + FastCGI,而另外一种是使用mongrel运行,由防火墙转发请求。在我看来后面一种性能较好。

以前的项目都是我直接远程连接到服务器上操作的,因此也没有感到什么不便。这次要提供项目的演示空间,不可能提供远程管理权限,呵呵。这样不太方便。但是rake之类的功能就不能执行了,其实这也是我考虑的一个问题,如果程序免费发布了,不可能每个使用者都可以有权限在服务器上执行rake的,我们应该写一个页面,像传统的ASP/PHP那样的方式来执行数据库安装。

言归正传,martin要求我提供ssh或者telnet,ssh在windows上怎么弄我不知道,telnet倒是可以开,但是权限管理应该非常不好弄,至少在我管理使用windows server接近七年时间里没有使用过telnet server上面就可以看出来telnet server有多么的不普及了。看来 linux + ssh 才是最好的解决之道。本来rails推荐的生产环境也是*nix,支持较好,而我因为自己用的电脑无法使用windows的原因,最近对linux也有一点点的了解,网上的文章看多了,于是就产生了一个装个ubuntu server来提供支持的想法。

装操作系统倒不是什么难事,特别是对于ubuntu 这种比较智能的操作系统来说,有过几次安装desktop的经验,安装server版也是手到擒来。安装到后面的时候我选择了安装LAMP Server,系统就自己装上了apache 2.23及mysql 5, python 2.5,但是后来我想可能lighttpd的性能更好,而且现在都是在重装操作系统,干脆就弄个更好一点儿的吧。然后就想卸载apache2,sudo apt-get remove apache2,居然卸不了,呵呵,知识还是有限啊。没办法只好再重新安装一次了。这次我选择了只安装操作系统核心,要安装什么东西都由自己定制。聪明了吧。呵呵。

好,十多分钟后我得到了一个正常运行的,没有安装任何东西的ubuntu 7.04 server,首要的事情是改更新源。原来我一直是使用台湾那个源的,速度非常快,但是最近老是出现connection reset的错误,所以改而使用了国内lupa提供的源。

deb http://cn.archive.ubuntu.com/ubuntu feisty main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu feisty-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu feisty-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu feisty-backports main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu feisty-proposed main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu feisty main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu feisty-security main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu feisty-updates main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu feisty-backports main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu feisty-proposed main restricted universe multiverse



然后sudo apt-get update && sudo apt-get upgrade,等几分钟就更新完了。

现在下面正式开始安装之路,首先我们需要的是Ruby环境,源里面自还的比较旧,才1.8.2,现在都1.86了,我们自己编绎吧。先安装编绎环境:sudo apt-get install build-essential,然后去ruby的官方主页下载安装包:

wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.6.tar.gz
tar xzvf ruby-1.8.6.tar.gz
cd ruby-1.8.6
./configure
make
sudo make install

这里应该很顺利的通过,下一步就是安装rubygems,同样的原因,源里的版本不太匹配,还是自己编绎吧。
先下载:
wget http://rubyforge.org/frs/download.php/2 ... -0.9.4.tgz
tar xzvf rubygems-0.9.4.tgz
cd rubygems-0.9.4
sudo ruby setup.rb

出错了。说找不到zlib. 我们得先安装zlib.
wget http://www.zlib.net/zlib-1.2.3.tar.gz
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
sudo make install

没问题,编绎通过。还需要rubyzlib。
wget http://www.blue.sky.or.jp/atelier/ruby/ ... 6.0.tar.gz
tar xzvf ruby-zlib-0.6.0.tar.gz
cd ruby-zlib-0.6.0
ruby extconf.rb
make
sudo make install


为了试验一下是否已经安装好,可以照以下步骤测试:
irb(main):001:0> require 'zlib'
=> true

这样就说明成功了。再运行rubygems的安装。
cd ../rubygems-0.9.4
sudo ruby setup.rb

成功了。

接下来就比较简单了。安装rails
sudo gem install rails --include-dependencies

这样ruby 和 rails都安装好了。可以运行一些命令来测试一下:irb, rake, ri, rails等。

下面来安装server.
数据库服务:

sudo apt-get install mysql-server phpmyadmin php5-cgi

本来想使用最新的lighttpd的,可是无奈能力有限,始终没有办法搞定编绎不通过的问题,只好使用源里的lighttpd 1.4.13了,特性少了些还能应付。将就一下吧。

sudo apt-get install lighttpd lighttpd-mod-mysql-vhost

这样就安装好了,现在要启用fastcgi.

sudo lighty-enable-mod fastcgi

这样就启动了fastcgi了。

先配置一下php看看fastcgi运行正常不。

sudo vim /etc/lighttpd/conf-enabled/10-fastcgi.conf

server.modules += ( "mod_fastcgi" )

## Start an FastCGI server for php4 (needs the php4-cgi package)
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php5-cgi.socket",
"max-procs" => 2,
"idle-timeout" => 20,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "4",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"bin-copy-environment" => (
"PATH", "SHELL", "USER"
),
"broken-scriptfilename" => "enable"
))
)

再在/var/www 下写个<?phpinfo();?>的文件命名为info.php,执行一下。呵呵,正常了。

试试rails工作不? 加段代码:
server.document-root = "/var/ror/dev/public"
server.error-handler-404 = "/dispatch.fcgi"
url.rewrite += ( "^/$" => "/index.html" )
url.rewrite += ( "^([^.]+)$" => "$1.html" )
fastcgi.server = (".fcgi" =>
("localhost" =>
("min-procs" => 1,
"max-procs" => 4,
"socket" => "/var/ror/dev/tmp/sockets/fcgi.socket-0",
"bin-path" => "/var/ror/dev/public/dispatch.fcgi",
"bin-environment" => ("RAILS_ENV" => "production")
)
)
)

配置好数据库连接后满怀信心的打开FF,却发现只给了我们一个500内部错误的页面,而且这页面看来还不是rails给出的,是属于lighttpd的内部出错页面。这可糟了。

开始检查:

sudo chown www-data.www-data /var/ror/dev -R
sudo chmod 777 /var/ror/dev/tmp /var/ror/dev/log /var/ror/dev/public

还是一样的错误,会不会是文件换行格式的问题呢 ?
vi打开文件,set ff=unix :wq全部保存过,还是有问题。

是不是要重新启动一下lighttpd?肯定是的。
sudo /etc/init.d/lighttpd restart
这下糟了,都启动不了了。
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.

从网上查了下就知道了,这是dispatch.fcgi不存在或者没有执行权限。试试。
sudo chmod +x /var/ror/dev/public/dispatch.*

现在lighttpd可以正常重新启动了,可是还是显示错误的页面。我们还少了什么呢?看看error.log
sudo vim /var/log/lighttpd/error.log

大部分信息像下面这样的:
2007-09-15 19:06:09: (mod_fastcgi.c.1741) connect failed: Connection refused on unix:/var/ror/dev/tmp/sockets/fcgi.socket-0-3
2007-09-15 19:06:09: (mod_fastcgi.c.2852) backend died, we disable it for a 5 seconds and send the request to another backend instead: reconnects: 0 load: 1
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- fcgi (MissingSourceFile)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/fcgi_handler.rb:1
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require'
from /var/ror/dev/public/dispatch.fcgi:22




对了,我们忘记了两件重要的事情, FCGI.搞清楚了就好办了。

FastCGI

wget http://www.fastcgi.com/dist/fcgi.tar.gz
tar zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
sudo ./configure
sudo make
sudo make install

RubyFCGI

wget http://sugi.nemui.org/pub/ruby/fcgi/rub ... 8.6.tar.gz
tar zxvf ruby-fcgi-0.8.6.tar.gz
cd ruby-fcgi-0.8.6
sudo ruby install.rb config
sudo ruby install.rb setup
sudo ruby install.rb install

测试一下:
irb(main):001:0> require 'fcgi'
=> true

成功了,再重新启动一下lighttpd,成功启动。再看看网站,呵呵。可以正常运行了。

接下来装一下ssh和FTP就算完成了。

sudo apt-get install openssh-server vsftpd

sudo vim /etc/vsftpd.conf
启用本地帐户登录,写入,禁用匿名帐号就可以了。
sfissw
帖子: 354
注册时间: 2007-06-21 1:30
来自: Shanghai
联系:

#2

帖子 sfissw » 2008-07-02 21:43

经典服务器配置
将来lighttpd+动态web后台会成为趋势
头像
Element
帖子: 3537
注册时间: 2005-09-10 16:04
来自: DG-GD-China

#3

帖子 Element » 2008-07-02 22:31

不懂这些,不过学习一下
http://element.blog.ubuntu.org.cn/
Ubuntu Jaunty Jackalope...
AMD Barton 2600+
MSI K7N2 Delta-L
Kingston DDR400 512M*2+256M*1
nVidia FX5200
Seagate 80G(Jaunty Jackalope)
Seagate 160G(XXxxXX)
SyncMaster 732N
回复