热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UbuntuServer配置Ruby企业版+Nginx+passenger+rails3+PHP+FPM运

rails的很多资料,都是用Apache做的举例,我还是比较喜欢性能更高的Nginx,于是找了一番资料并亲手逐步试验之下,修正了资料中的一些错误,形成了下面正式的文档。感谢网络、感谢众多资料文档原作者:)实际安装与测试版本为UbuntuServer10.0432位X86版,

rails的很多资料,都是用Apache做的举例,我还是比较喜欢性能更高的Nginx,于是找了一番资料并亲手逐步试验之下,修正了资料中的一些错误,形成了下面正式的文档。感谢网络、感谢众多资料文档原作者:)

实际安装与测试版本为Ubuntu Server 10.04 32位X86版,不过理论上,以下步骤也适用于Ubuntu Server 9.04与桌面版。主要安装目标是搭建一个基于ruby企业版的rails3的高速运行环境,同时在该台服务器上支持php及相关工具。为什么要用ruby企业版呢?唔,根据官网资料,ruby企业版更加稳定,而且内存性能有33%以上的提升。
主要安装步骤如下所述:

1 安装ubntun

创建一个非root用户

adduser shuqi888
更新源

sudo apt-get update
sudo apt-get upgrade
校正时区

sudo dpkg-reconfigure tzdata
选择Asia,然后再选择自己所在的时区【chongqing】。再查看是否设置正确:

date
2 安装一些通用包

passenger等很多程序安装的时候都需要,干脆提前安装好.

最重要的是gcc等编译环境。

sudo apt-get install gcc
sudo apt-get install build-essential
其次重要的是git.

sudo apt-get install git-core
还有先下载,解压等功能的包。

sudo apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libreadline5-dev
最后是图片库imagemagick

sudo apt-get install imagemagick
创建管理下载文件的目录

进入自己的home目录,并且创建一个临时文件夹,用于管理未来下载的一些文件。

cd /home/shuqi888
mkdir download

3 安装mysql

sudo apt-get install mysql-server mysql-client
请牢记安装过程中输入的密码。

4 安装ree

进入之前创建的下载目录,

cd /home/shuqi888/download
登陆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 update

6 安装nginx and passenger

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

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

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

打开nginx的默认安装目录:

sudo nano /opt/nginx/conf/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等其他更改权限方式
让启动脚本随机启动:

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

更多关于passenger的nginx用法,可以参考向导文件

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

8 测试rails应用

Rails3默认使用SQLite3,所以如果没有,需要先安装一下。
sudo apt-get install sqlite3 libsqlite3-dev
sqlite3 --version
看到3.6.22,正常安装了。

上传一个本地的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/shuqi888/projects/demo/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


推荐阅读
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
author-avatar
双鱼2502858483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有