• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略

    安装 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;
      }
    }
    
    

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

    您可能感兴趣的文章:
    • CentOS7下搭建ruby on rails开发环境
    • CentOS中配置Ruby on Rails环境
    • 在 Ubuntu 12.04 Server 上安装部署 Ruby on Rails 应用
    • Ubuntu上配置Ruby on Rails框架及RubyMine IDE开发环境
    上一篇:Ruby下WebDriver的相关操作指南
    下一篇:在Ruby on Rails中使用Markdown的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略 Linux,系统,上,配置,Nginx+Ruby,