CentOS 6.4 64位 安装 rails 环境

使用rvm 安装

参考 http://www.zhuyinghao.com/2013/03/14/installing-rvm-ruby-rails-passenger-nginx-on-centos/ 

第一步:安装rvm

增加专属用户
用root登录 , 修改/etc/sudoers 文件 增加 “用户名 ALL=(ALL) ALL“,使得此用户可以做sudo 命令
用普通用户登录sudo yum update
sudo yum install curl

确定现在是普通用户登录!!!(rvm implode 是卸载 rvm)

curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm

rvm requirements

sudo yum install gcc-c++ mysql-devel postgresql postgresql-devel sqlite sqlite-devel curl-devel openssl-devel zlib-devel ImageMagick ImageMagick-devel libtool
sudo yum install subversion bash curl git patch
sudo yum install libxml2 libxml2-devel libxslt libxslt-devel
sudo yum install libyaml*

第二步:安装ruby

rvm list known 
rvm get branch rys/features/centos-epel-rep
rvm autolibs enable
rvm reload
rvm install 2.0.0

ruby -v
gem list
gem sources -l
gem sources --remove 要删除的源
gem sources -a https://ruby.taobao.org/

第三步:安装rails

gem install rails --version 4.1.6
rails -v

第四步:安装 node.js

wget http://nodejs.org/dist/v0.10.21/node-v0.10.21.tar.gz
tar zxvf node-v0.10.0.tar.gz
cd node-v0.10.0.tar.gz
./configure
make
make install


第五步: 安装passenger(App Server)

gem install passenger
passenger -v

找到passenger的bin目录

./passenger-2.2.14/bin/passenger-install-nginx-module
或者通过(自己一直采用这个方法)cd ./.rvm/gems/ruby-2.0.0-p0/gems/passenger-3.0.19/bin/

rvmsudo passenger-install-nginx-module

来安装所需要的 pcre 和  openssl(在ruby 2.0下 好像又问题,会产生 cannot load such file -- rubygems/builder 这种错误)

第六步:安装nginx(WebServer)

nginx安装需要pcre and openssl

官网:http://www.pcre.org/

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz
tar zxvf pcre-8.32.tar.gz
cd pcre-8.32
./configure
make
make install

官网:http://www.openssl.org

wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
tar zxvf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config
make
make install
wget http://nginx.org/download/nginx-1.3.16.tar.gz
tar zxvf nginx-1.3.16.tar.gz
./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/lib
make
make install
 运行 nginx
/usr/local/nginx/sbin/nginx 
如果出现 error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 
解决办法:
1.  ldd $(which /usr/local/nginx/sbin/nginx)
出现 
linux-vdso.so.1 =>  (0x00007fff9e7ff000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6d3cece000)
	libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f6d3cc97000)
	libpcre.so.1 => not found
	libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f6d3c8fc000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f6d3c6e6000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f6d3c352000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f6d3d0f5000)
	libfreebl3.so => /lib64/libfreebl3.so (0x00007f6d3c0f0000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f6d3beec000)
可以看见 libpcre.so.1 没有被发现 

通过 find / -name libpcre.so.1 命令 发现文件存在
/usr/local/lib/libpcre.so.1
然后 通过cp 或者 ls 建立一个链接。即可解决这个问题。

修改nginx的端口的方法

vim /usr/local/nginx/conf/nginx.conf

server {
listen       8081;

...


第七步:自动启动nginx 

第一步
先运行命令关闭nginx
#sudo kill `cat /usr/local/nginx/logs/nginx.pid`

第二步
#vi /etc/init.d/nginx
输入以下内容(如何使用vi命令请查阅:http://blog.javawind.net/p98)
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /opt/nginx/conf/nginx.conf
# pidfile:     /opt/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    configtest || return $?
    stop
    start
}

reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}

force_reload() {
    restart
}

configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
</pre><pre code_snippet_id="291188" snippet_file_name="blog_20140414_5_4872524" name="code" class="plain">保存退出

第三步
#chmod +x /etc/init.d/nginx

第四步
#/sbin/chkconfig nginx on

检查一下
#sudo /sbin/chkconfig --list nginx
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off

完成!
之后,就可以使用以下命令了
service nginx start
service nginx stop
service nginx restart
service nginx reload
/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart
/etc/init.d/nginx reload


第八步:安装nginx 和 passenger 集成


  vim /usr/local/nginx/conf/nginx.conf

配置的sample
user  admin;
worker_processes  2;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    passenger_root /home/admin/.rvm/gems/ruby-1.9.3-p327-falcon/gems/passenger-3.9.1.beta;
    passenger_ruby /home/admin/.rvm/wrappers/ruby-1.9.3-p327-falcon/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        
	root /home/admin/itravels_deploy/current/public;
       	passenger_enabled on;
        rails_env production;
	client_max_body_size 200M;
        location ~ ^/(assets)/  {
                root /home/admin/itravels_deploy/current/public;
                gzip_static on; # to serve pre-gzipped version
                expires max;
        	add_header Cache-Control public;
        }

     }
}
注意其中的 
passenger_root /home/admin/.rvm/gems/ruby-1.9.3-p327-falcon/gems/passenger-3.9.1.beta;
passenger_ruby /home/admin/.rvm/wrappers/ruby-1.9.3-p327-falcon/ruby;
passenger_enabled on;

第九步:安装mysql

系统自带mysql yum install mysql-devel gem install mysql2

第十步: 按照Oracle 客户端和适配器

http://blog.csdn.net/remote_roamer/article/details/10456459

gem 'activerecord-oracle_enhanced-adapter'

或者 在rails 4.0.0 下

gem 'activerecord-oracle_enhanced-adapter', git: 'https://github.com/yahonda/oracle-enhanced.git', branch: 'rails4'


如果在bundle install的时候,安装 ruby-oci8 出错,请检查 环境变量 

LD_LIBRARY_PATH 和 进行 libclntsh.so 的链接建立

If /opt/oracle/instantclient10_1/libclntsh.so is not found, make a symbolic link to link the library.

<code>cd /opt/oracle/instantclient10_1
ln -s libclntsh.so.10.1 libclntsh.so</code>

第十一步:发布 rails 应用的 assets 预编译


如果在 assets/javascripts 和  assets/stylesheets 下还有多级目录 包含 js 和 css ,那么需要做如下处理的方式 
1. 在config/environments/productions.rb 里面加入  
config.assets.precompile += %w( controllers/*.js controllers/*.css )
来手工指定 多加入的 css 和 js

2.手工预编译 css和js文件,
RAILS_ENV=production bundle exec rake assets:precompile

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值