在ubuntu上搭建基于ree+nginx+passenger的rails3环境

1.安装ree

登陆ree官方网站

http://www.rubyenterpriseedition.com/download.html

找到最新版本的下载地址,然后使用wget直接下载到刚才的目录:

wget http://rubyforge.org/frs/download.php/71100/ruby-enterprise_1.8.7-2010.02_i386_ubuntu10.04.deb然后开始安装

sudo dpkg -i ruby-enterprise_1.8.7-2010.02_i386_ubuntu10.04.deb

检查安装是否成功:

ruby -v正常应输出:


ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-linux], MBARI 0x8770, Ruby Enterprise Edition 2010.02

同时使用gem list可以看到,ree默认添加了一些老版本的gem,比如rails (2.3.8),passenger (2.2.14)等。在后续步骤中,我们将更新掉这些gem。

5 安装rail并更新已经被ree默认安装的gem

gem update --system
gem install rake
gem install rails
gem update6

安装nginx and passenger
请务必注意,安装passenger之前,请使用gem list命令检查已经安装的passenger的版本。如果不是最新的版本,请务必使用gem install passenger而非gem update命令更新掉之后,才执行以下步骤。

遵从passenger官方安装指南的提示,开始安装:


passenger-install-nginx-module

按照界面提示,默认安装即可。安装成功之后,检查nginx是否成功安装:

打开nginx的默认安装目录:


sudo vi /opt/nginx/nginx.conf确保如下所示:

http {
...
passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.0;
passenger_ruby /usr/local/bin/ruby;
...
}

passenger_ruby如果不是指向ree的ruby解释器,会导致之后的gem源丢失问题,请务必确保此处指向的ruby与你所使用的ruby环境中的一致。

passenger如果不是指向3.0版本,则会报Unable to start the Phusion Passenger watchdog 错误。

启动nginx

sudo /opt/nginx/sbin/nginx重启可以使用:


sudo /opt/nginx/sbin/nginx -s reload

刷新首页,应能出来nginx的欢迎界面,如不能,则往往是需要reboot

7 配置nginx随机启动
passenger默认会将nginx安装到/opt/nginx下,与直接安装nginx的路径略有差异,请特别注意。

参考Gist525330写一个脚本到:/etc/init.d/nginx,命令如下:


cd /home/anrenserver/download/
git clone git://gist.github.com/525330.git
sudo mv 525330/nginx.sh /etc/init.d/nginx
chmod +x /etc/init.d/nginx

#此处不能使用sudo chown等其他更改权限方式让启动脚本随机启动:


/usr/sbin/update-rc.d -f nginx defaults
/etc/init.d/nginx start如果成功,则可以直接使用start,stop,restart,reload控制nginx

更多关于passenger的nginx用法,可以参考[url=http://http://modrails.com/documentation/Users%20guide%20Nginx.html]向导文件[/url]

更多关于nginx的配置文件写法可以参考[url=http://http://wiki.nginx.org/NginxChs]这里[/url]

8 测试rails应用
上传一个本地的rails应用,


tar -cpzf /backup/home.bak.tar.gz /home然后解压,

tar -xvf home.bak.tar.gz再bundle install,再运行migrate任务。

rake db:migrate RAILS_ENV=production对于有些应用来说,比如将静态文件写入到public目录,则需要赋予public目录权限:

chmod 777 public按照安装提示修改nginx的配置文件,

sudo vi /opt/nginx/conf/nginx.conf 在server配置节,倒数第二行增加:

server {
listen 80;
server_name www.yourhost.com;
root /somewhere/public; # <--- be sure to point to 'public'!
passenger_enabled on;
}nginx的passenger模块默认是生产模式,如果是在本机进行开发,请更改。示范如下:

server {
listen 80;
server_name www.yourhost.com;
root /users/ouyang/projects/psykeys/public; # <--- be sure to point to 'public'!
passenger_enabled on;
rails_env development;
}

如果是在本机而不是服务器调试,记得修改host文件,


sudo vi /etc/hosts增加:

127.0.0.1 www.yourhost.com 9 安装php并配置nginx
sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl在fastcgi进程选择上,可以使用spawn-fcgi,不过新版php已经内置php5-f更推荐使用处理方式更佳的php5-fpm.原来需要使用php-fpm,必须使用打补丁的php版本,不过现在的版本已经不需要,但是ubuntu只有10.10以后的版本的官方源才有这个软件包,因此,需要修改官方源:

sudo vi /etc/apt/sources.list在末尾增加:

deb http://ppa.launchpad.net/jdub/devel/ubuntu maverick main
deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main
deb-src http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main


然后更新源的软件包数据:


sudo apt-get upgrade然后安装:

sudo apt-get install php5-fpm修改php5-fpm的配置文件:

sudo vi /etc/php5/fpm/php.ini将_;cgi.fix_pathinfo=1_的注释取消掉:

cgi.fix_pathinfo = 1这样php-cgi方能正常使用SCRIPT_FILENAME这个变量。

以及根据自己服务器的实际情况,修改这两个参数:

pm.max_children = 1280 ;pm.max_requests = 1000



配置nginx.conf

特别注意替换多处root与index.php的增加。


location / {
root html;
index index.php index.html index.htm;
}



如果是使用passenger默认路径安装的nginx,则默认路径指向html,有的教程所说的/var/www/nginx-default路径不存在,请注意区分。

并修改一些默认的参数,使得php生效。

server {
listen [::]:80;
listen 80;
server_name xxx.xxxxx.xxx;
root /var/www/;

#access_log /var/www/log/xxx-access.log;
#error_log /var/www/logs/xxx-error.log;

location / {
index index.php index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root /var/www/nginx-default;
#}

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}



测试php文件,创建一个test.php,里面内容为:


<?php
phpinfo();
?>


上传到nginx默认安装路径指向的htm路径,正常应能出来php等环境信息。

10 安装Zend Optimizer与phpmyadmin
由于产品服务器主要运行rails程序,而最新的php5.3.2与zend Optimizer 不兼容,因此,我们可以考虑降级php版本,或者暂时不安装,改用其他php加速器。可以参考:

http://www.cnblogs.com/xiaoxing208/archive/2009/12/04/1617258.html

登陆,找到最新版的下载地址,然后上传并安装。

http://www.phpmyadmin.net/

11 其他问题
■ldconfig deferred processing now taking place提示
这句话表示刚刚安装的软件需要在重新启动后才会生效,通常出现这个提示的时候,会有一个提示,询问你是否现在重新启动电脑。

■RSA host key错误
在本地mac,连接远程ubuntu server时,出现该错误。删除之前的RSA host key

mate /Users/ouyang/.ssh/known_hosts■Unable to start the Phusion Passenger watchdog
老版本的passenger作怪,使用:

gem install passenger■No input file specified.
请使用实际路径。例如:

fastcgi_param SCRIPT_NAME /var/www/nginx-default/$fastcgi_script_name;更多可以参考:

■http://qlj.sh.cn/linux/20090815/nginx-php-no-input-file-specified/

■http://wesoho.blog.51cto.com/715082/200689

■bundle install的时候,安装mysql报错:necessary libraries and/or headers. Check the mkmf.log file for moredetails.

解决方法:

sudo apt-get install libmysqlclient15-dev
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值