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]