手机
当前位置:查字典教程网 >脚本专栏 >ruby专题 >Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略
Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略
摘要:安装RVM通常使用RVM或rbenv来安装Ruby,这里选用RVM。$curl-sSLhttps://get.rvm.io|bash-sst...

安装 RVM

通常使用 RVM 或 rbenv 来安装 Ruby,这里选用 RVM。

$ curl -sSL https://get.rvm.io | bash -s stable

载入 RVM :

$ source /home/libuchao/.rvm/scripts/rvm $ rvm -v rvm 1.25.12 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com> ......

再执行以下命令:

$ type rvm rvm is a function ......

说明 RVM 安装正确。

安装 Ruby

用 RVM 安装 Ruby

$ rvm install 2.1.0 $ rvm use 2.1.0 --default $ ruby -v ruby 2.1.0p0

国内服务器推荐替换 RubyGems 的到淘宝镜像

$ gem sources -r https://rubygems.org/ $ gem sources -a http://ruby.taobao.org/

否则安装 Gem 可能会非常非常慢。

安装 Rails

其实 Rails 也是一个 Gem

$ gem install rails --no-ri --no-rdoc -V ...... $ rails -v Rails 4.0.2

至此,Rails 环境已经安装完成。

安装 MySQL

安装 Mysql 及相应的库文件:

$ sudo apt-get install mysql-server libmysqlclient-dev

然后进行一些安装方面的设置:

$ /usr/bin/mysql_secure_installation

创建相应的数据库,并为它新建一个权限小一些的用户:

mysql> CREATE DATABASE blix_production; mysql> GRANT ALL PRIVILEGES ON blix_production.* TO blix@localhost IDENTIFIED BY "123456"; mysql> flush privileges; mysql> exit

导入数据:

$ mysql -u blix -p blix_production < database.sql

安装 Nginx

Nginx 专门处理静态请求,并作为 Unicorn 的反向代理

编辑 /etc/apt/sources.list,末尾处添加以下两行

deb http://nginx.org/packages/ubuntu/ precise nginx deb-src http://nginx.org/packages/ubuntu/ precise nginx

添加 Nginx 签名

$ wget http://nginx.org/keys/nginx_signing.key $ sudo apt-key add nginx_signing.key

安装 Nginx

$ sudo apt-get update $ sudo apt-get install nginx

安装完成后可以在浏览器中输入 http://server-ipaddress 查看是否安装正确。

配置 Unicorn

首先编译一下静态文件:

$ RAILS_ENV=production rake assets:clean $ RAILS_ENV=production rake assets:precompile

Unicorn 配置参考:

worker_processes 2 timeout 30 APP_PATH = File.expand_path("../..", __FILE__) working_directory APP_PATH listen 8080, :tcp_nopush => true listen "/tmp/unicorn.sock", :backlog => 64 stderr_path APP_PATH + "/log/unicorn.stderr.log" stdout_path APP_PATH + "/log/unicorn.stdout.log" pid APP_PATH + "/tmp/pids/unicorn.pid"

Unicorn 自启动脚本:

#!/bin/sh set -e # Example init script, this can be used with nginx, too, # since nginx and unicorn accept the same signals # Feel free to change any of the following variables for your app: TIMEOUT=${TIMEOUT-60} APP_ROOT=/home/libuchao/blix APP_USER=libuchao PID=$APP_ROOT/tmp/pids/unicorn.pid CMD="unicorn_rails -D -E production -c $APP_ROOT/config/unicorn.rb" action="$1" set -u old_pid="$PID.oldbin" cd $APP_ROOT || exit 1 sig () { test -s "$PID" && kill -$1 `cat $PID` } oldsig () { test -s $old_pid && kill -$1 `cat $old_pid` } case $action in start) sig 0 && echo >&2 "Already running" && exit 0 su -c "$CMD" - $APP_USER ;; stop) sig QUIT && exit 0 echo >&2 "Not running" ;; force-stop) sig TERM && exit 0 echo >&2 "Not running" ;; restart|reload) sig HUP && echo reloaded OK && exit 0 echo >&2 "Couldn't reload, starting '$CMD' instead" su -c "$CMD" - $APP_USER ;; upgrade) if sig USR2 && sleep 2 && sig 0 && oldsig QUIT then n=$TIMEOUT while test -s $old_pid && test $n -ge 0 do printf '.' && sleep 1 && n=$(( $n - 1 )) done echo if test $n -lt 0 && test -s $old_pid then echo >&2 "$old_pid still exists after $TIMEOUT seconds" exit 1 fi exit 0 fi echo >&2 "Couldn't upgrade, starting '$CMD' instead" su -c "$CMD" - $APP_USER ;; reopen-logs) sig USR1 ;; *) echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>" exit 1 ;; esac

将这个 shell 在/etc/init.d/下做一个软连接,并使其开机自启动:

$ chmod +x /home/libuchao/blix/config/unicorn_init.sh $ sudo ln -s /home/libuchao/blix/config/unicorn_init.sh /etc/init.d/unicorn $ sudo update-rc.d unicorn defaults

启动 Unicorn:

$ service unicorn start

在浏览器中输入 http://server_ipaddress:8080 查看效果。

配置 Nginx

Nginx 配置参考:

upstream blix_backend { server unix:/tmp/unicorn.sock fail_timeout=0; } gzip on; gzip_disable "msie6"; client_max_body_size 150m; server { listen 80 default; return 403; } server { listen 80; server_name libuchao.com www.libuchao.com; root /home/libuchao/blix/public; try_files $uri/index.html $uri.html $uri @httpapp; location @httpapp { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering on; proxy_pass http://blix_backend; } location ~ ^(/assets) { access_log off; expires max; } }

此时应该可以通过域名直接访问了。

【Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略】相关文章:

在Ruby on Rails中使用Markdown的方法

深入理解Ruby on Rails中的缓存机制

Ruby on Rails中Rack中间件的基础学习教程

Ruby与Ruby on Rails框架环境搭建的简明教程

对Ruby on Rails进行高效的单元测试的教程

简单介绍Ruby on Rails对PostgreSQL数组类型的支持

使用Ruby on Rails和PostgreSQL自动生成UUID的教程

CentOS中配置Ruby on Rails环境

快速安装Ruby on Rails的简明指南

详解Ruby on Rails中的Cucumber使用

精品推荐
分类导航