karidyang 发表于 2013-1-15 14:06:03

Ubuntu部署nginx+passenger+rails3

1、先安装各种支持包
 
sudo apt-get install gcc build-essential sqlite3 libsqlite3-devsudo apt-get install libcurl4-openssl-dev libssl-dev zlib1g-dev libreadline5-dev libmysqlclient-dev   
2、下载ruby-1.9.2-p0并解压
3、安装ruby
./configure --prefix=/usr/local/rubysudo make && make install 4、把ruby/bin加入PATH环境变量
export PATH=/usr/local/ruby/bin:$PATH 5、使用ruby -v , gem -v查看版本
 6、安装rails3
sudo gem install rails3 7、如果使用sqlite3数据库,则要安装
sudo gem install sqlite3-ruby 8、安装mysql驱动,下载mysql-ruby驱动
 
cd mysql-ruby-2.7.3sudo ruby extconf.rbsudo make && make install   注意:如果报错,需要先安装
libmysqlclient-dev9、安装mysql2
sudo gem install mysql210、安装passenger+nginx
sudo gem install passengersudo passenger-install-nginx-module安装nginx时,可以选择默认安装位置(/opt/nginx)或者自己指定 11、修改nginx.conf
#user nobody; worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pid      logs/nginx.pid;events {    worker_connections1024;}http {    passenger_root /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.1;    passenger_ruby /usr/local/ruby/bin/ruby;    include       mime.types;    default_typeapplication/octet-stream;    #log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '    #                  '$status $body_bytes_sent "$http_referer" '    #                  '"$http_user_agent" "$http_x_forwarded_for"';    #access_loglogs/access.logmain;    sendfile      on;    #tcp_nopush   on;    #keepalive_timeout0;    keepalive_timeout65;    gzipon;    server{          listen 3000;          server_namelocalhost;          root /var/www/myapp/public;#一定要指定到public目录          passenger_enabled on;          location ~ ^/(images|javascripts|stylesheets)/{                  root /var/www/myapp/public;                         expires 30d;    }}}  
12、编写便捷启动方式 /etc/init.d/nginx
#! /bin/sh ### BEGIN INIT INFO # Provides:          nginx # Required-Start:    $local_fs $remote_fs $network $syslog # Required-Stop:   $local_fs $remote_fs $network $syslog # Default-Start:   2 3 4 5 # Default-Stop:      0 1 6 # Short-Description: starts the nginx web server # Description:       starts nginx using start-stop-daemon### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/nginx/sbin/nginx NAME=nginx DESC=nginx   test -x $DAEMON || exit 0   # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then   . /etc/default/nginx fiset -e. /lib/lsb/init-functionstest_nginx_config() {   if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1   then   return 0   else   $DAEMON -t $DAEMON_OPTS   return $?   fi }case "$1" in   start)   echo -n "Starting $DESC: "         test_nginx_config   start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \         --exec $DAEMON -- $DAEMON_OPTS || true   echo "$NAME."   ;;   stop)   echo -n "Stopping $DESC: "   start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \         --exec $DAEMON || true   echo "$NAME."   ;;   restart|force-reload)   echo -n "Restarting $DESC: "   start-stop-daemon --stop --quiet --pidfile \         /var/run/$NAME.pid --exec $DAEMON || true   sleep 1         test_nginx_config   start-stop-daemon --start --quiet --pidfile \         /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true   echo "$NAME."    ;;   reload)         echo -n "Reloading $DESC configuration: "         test_nginx_config         start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \             --exec $DAEMON || true         echo "$NAME."         ;;   configtest)         echo -n "Testing $DESC configuration: "         if test_nginx_config         then         echo "$NAME."         else         exit $?         fi         ;;   status)   status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?   ;;   *)   echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2   exit 1   ;; esacexit 0 13、执行 sudo /etc/init.d/nginx start 启动
14、访问http://localhost:3000/
 
PS:在rails3项目中,需要在Gamfile中加入passenger
 
gem 'passenger' 
PS2:
其中如果遇到no such file to load -- zlib
cd ruby-1.9.2-p0/ext/zlibruby extconf.rbmake && make install 

解决openssl not found问题
apt-get install libssl-devapt-get install libopenssl-rubycd ext/opensslruby extconf.rbmake && make install  
 
页: [1]
查看完整版本: Ubuntu部署nginx+passenger+rails3