`
mike.gao
  • 浏览: 48521 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

在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用法,可以参考向导文件

更多关于nginx的配置文件写法可以参考这里

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
分享到:
评论

相关推荐

    REE 元素配分模式图的绘制

    REE 元素配分模式图的绘制 REE 元素配分模式图是地质学中一种重要的研究手段,用于分析和描述地质样品中的稀土元素组成和变化规律。REE 配分模式图的绘制可以帮助研究人员更好地理解地质样品的地球化学特征和演化...

    post3ree-boilerplate:使用3REE堆栈+ PostCSS的nodejs通用应用程序的样板

    【标题】"post3ree-boilerplate"是一个基于Node.js的通用应用程序模板,它整合了3REE堆栈(Express、React、Redux、Express)以及PostCSS技术,为开发者提供了一个快速启动新项目的基础框架。这个模板是专为构建高效...

    3ree:使用3REE堆栈React + Redux + RethinkDB + Express编写的示例通用JS应用程序。 仅使用Javascript即可构建前端和后端应用程序的堆栈

    3REE 用3REE堆栈编写的示例通用JS应用程序, Re act + Re dux + Re thinkDB + E xpress。 仅使用Javascript即可构建前端和后端应用程序的堆栈。 该项目最初被构想为将这些技术与另一种技术一起使用进行试验。 我写...

    论文研究 - 图的无限族的Mayer和Ree-Hoover权重的新公式

    在统计力学中,病毒式扩展利用n个顶点上所有2个连通图的Mayer权重之和。 我们研究了由一维硬核连续气体引起的二连通图c的第二Mayer权重ωM(c)和Ree-Hoover权重ωRH(c)。 使用与图c自然相关的凸多面体的有符号...

    REE:展示电动汽车创新平台.pdf

    REE的核心创新在于其REE Board和REE Corners技术,这两项技术在2021年的消费电子展(CES)上进行了展示。 REE Board是电动汽车平台的基础,它包含电池组和必要的电子设备,提供转向、制动和四个车轮电机的连接。它...

    现代长江主要支流与干流沉积物的REE组成

    研究者通过对长江沉积物中稀土元素的分布、迁移和富集规律的研究,可以更有效地理解长江流域的物质循环过程,评估流域的环境变化,以及在全球变化背景下,研究长江流域对东亚乃至全球环境的影响。 总结来说,长江...

    ruby-enterprise-1.8.6-20090201

    4. **Enterprise Features(企业级特性)**:REE还包含了一些额外的库和工具,如 Passenger(又名Mod_Ruby,一个流行的Ruby on Rails部署解决方案),这些工具和库旨在简化服务器部署和管理,提高生产环境的稳定性。...

    OPEN-TEE 3.12 环境安装.pdf

    在本文档中,将详细介绍OPEN-TEE 3.12环境在Ubuntu 18.04操作系统上的安装过程。OPEN-TEE是一种可信执行环境(Trusted Execution Environment,TEE)的开源实现,它为安全相关的计算任务提供了隔离的执行环境,以便...

    PyPI 官网下载 | ree-2.2.2.tar.gz

    标题中的"PyPI 官网下载 | ree-2.2.2.tar.gz"表明这是一个在Python Package Index(PyPI)官方源上发布的软件包,名为"ree",版本为2.2.2,其打包格式是tar.gz。PyPI是Python开发者发布和管理他们自己创建的Python库...

    rails-perftest:对Rails应用进行基准测试和配置

    性能测试Rails应用 本指南涵盖了各种性能测试Ruby on Rails应用程序的方法。 阅读本指南后,您将知道: 各种类型的基准测试和性能分析指标。 如何生成性能和基准...如果要在MRI或REE下进行基准测试/轮廓分析,请同

    论文研究 - ICP-MS分析硅酸盐岩中微量元素和REE干扰校正的一种实用方法

    由于基质效应,在充满氦气的八极杆碰撞池下在强大的等离子体条件下(1550 W)操作Agilent 7700X ICP-MS光谱仪并分析溶液(总溶解固体&lt;2000μg·g-1)仍然受到分析物峰抑制。 国际参考岩石BCR-1,BHVO-1,AGV-1,G...

    垃圾:告知StatsD请求时间,GC,对象等信息。 最新的Rails 4和Ruby 2.1支持,以及古老的Rails 2和Ruby 1.8支持

    在Rails 5(以及Rails 3和4)上,将其添加到config/application.rb的顶部: require 'trashed/railtie' 并在您的应用程序配置主体中: module YourApp class Application &lt; Rails::Application config....

    论文研究 - 2连通图族的Ree-Hoover和Mayer权重的其他公式

    我们研究了在不完全气体的情况下,Mayer理论和Ree-Hoover理论自然发生的图权,用于病毒式膨胀。 对于一维硬核连续气体,我们特别注意2连通图的Mayer权重和Ree-Hoover权重。 这些权重是根据与图形关联的凸多面体的有...

    一种变步长AP-REE算法的研究

    AP-REE算法(Affine Projection Algorithm Using Regressive Estimated Error)基于最小均方(LMS)算法,但在步长的调整上,它使用了回归估计误差来动态地改变步长,从而提高了算法的收敛速度和稳态性能。...

    车联网之基于 TEE 的 TBOX 安全技术.docx

    TEE在同一个CPU芯片上创建了一个与REE隔离的可信执行环境,通过硬件配置实现不同IP组件的访问控制,提供一个高度隔离的安全运行空间。GlobalPlatform的TEE架构定义了标准,使得TEE技术能够在多种平台上移植。 TEE...

    车联网之基于 TEE 的 TBOX 安全技术.pdf

    TEE 是一种增强移动设备安全性的技术,由 ARM 公司的 TrustZone 实现,它将系统分为 REE 和 TEE 两部分,通过硬件隔离确保 TEE 的独立安全执行环境。TEE 具有以下特性: 1. 硬件保护:TEE 与 REE 隔离,只有特定入口...

    On2 Technologies与韩国Boo-Ree合作在Tachyon-I多媒体处理器中提供On2视频播放功能.pdf

    【标题】和【描述】提及的是On2 Technologies与韩国Boo-Ree公司的合作,他们在Tachyon-I多媒体处理器中集成了On2视频播放功能。这个合作使得Tachyon-I处理器能够在各种设备上,如手机、个人媒体播放器和电视机顶盒上...

    基于图像对比度增强的可逆信息隐藏.rar

    包括直方图,信息隐藏和信息提取,所设计的基于图像对比度增强的可逆信息隐藏算法包含图像的对比度增强和可逆信息隐藏两个部分,主要是在灰度直方图上实现的,它并不是以追求高PSNR为目标,而是旨在实现载体图像的对比...

    七牛RubySDK.zip

    此 Ruby SDK 适用于 Ruby 1.8.x, 1.9.x, jruby, rbx, ree 版本,基于 七牛云存储官方API 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个...

Global site tag (gtag.js) - Google Analytics