使用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 集成
配置的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>
config.assets.precompile += %w( controllers/*.js controllers/*.css )
来手工指定 多加入的 css 和 js