设为首页 收藏本站
查看: 1380|回复: 0

[经验分享] Ubuntu Server配置Ruby企业版+Nginx+passenger+rails3+PHP+FPM运行环境

[复制链接]

尚未签到

发表于 2018-5-6 07:44:45 | 显示全部楼层 |阅读模式
  rails的很多资料,都是用Apache做的举例,我还是比较喜欢性能更高的Nginx,于是找了一番资料并亲手逐步试验之下,修正了资料中的一些错误,形成了下面正式的文档。感谢网络、感谢众多资料文档原作者:)

  实际安装与测试版本为ubuntu server 10.04 32位X86版,不过理论上,以下步骤也适用于ubuntu server9.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

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;
       server_name  xxx.xxxxx.xxx;
        
       #access_log  /var/www/log/xxx-access.log;
       #error_log   /var/www/logs/xxx-error.log;

       location / {
            root /users/shuqi888/projects/demo/public;
          passenger_enabled on;
          rails_env development;
       }

       #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$ {
root /var/www/;
               fastcgi_pass   127.0.0.1:9000;
               fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
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



//20111011增加
    在此服务器上运行rails new appname生成新的rails3应用之后,通过浏览器访问rails程序,出现2个错误,解决如下:
1、报错Could not find a JavaScript runtime解决办法就是安装一个js环境
sudo apt-get install python-software-properties

sudo add-apt-repository ppa:jerome-etienne/neoip

sudo apt-get update

sudo apt-get install nodejs

2、上述问题解决后,rails程序依然无法正常显示,用自带的webrick启动却可以正常访问,判断应该是passenger的问题
解决办法:进入rails程序目录  cd appname
输入:passenger start -a 127.0.0.1 -p 3001 -d重新启动nginx,再次从浏览器访问rails应用地址,一切正常。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-456369-1-1.html 上篇帖子: Dell R710安装ubuntu10.04初次引导错误 下篇帖子: ubuntu下 ls: error initializing month strings
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表