IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在Ubuntu上用thin发布ROR应用

    发表于 2015-01-09 09:02:50
    love 0

    How to deploy ruby on rails with thin on Ubuntu

    Create a deploy user

    sudo adduser deploy
    sudo adduser deploy sudo
    su deploy
    

    update and install packages

    sudo apt-get update
    sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties
    

    Install RVM

    sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
    curl -L https://get.rvm.io | bash -s stable
    source ~/.rvm/scripts/rvm
    echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
    rvm install 2.1.5
    rvm use 2.1.5 --default
    ruby -v
    
    echo "gem: --no-ri --no-rdoc" > ~/.gemrc
    

    Git Server

    RoR比较流行的是使用git,我们来配置一下Git Server,首先我们需要新建一个名为git的用户并且为它添加公钥。

    $ sudo adduser git
    $ sudo vi /home/git/.ssh/authorized_keys
    

    我这里假设你的项目名称是project和准备把git仓库的目录设定为/opt/git,如果你没有一个/opt/git目录,需要切换到root新建并且把这个目录的所有者改为git:

    $ su - root
    # cd /opt
    # mkdir git
    # chown git git
    $ cd /opt/git
    $ mkdir project.git
    $ cd project.git
    $ git --bare init
    

    本地电脑

    $cd /git/project
    $git remote add alt alt-machine:/path/to/repo
    $git push alt master
    

    这样会把本地项目同步到git server

    Installing MySQL

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

    创建用户

    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
    FLUSH PRIVILEGES;
    

    更改用户密码

    mysqladmin -u USER -p password NEWPASSWORD 
    

    创建数据库

    CREATE DATABASE database name;
    

    mysql.sock

    vi /etc/mysql/my.cnf
    You will find the lines below top in your configuration file
    
    [client]
    port            = 3306
    socket          = /var/run/mysqld/mysqld.sock
    

    install thin

    gem install thin    
    thin config -C /etc/thin/myapp.example.com -c /var/www/myapp.example.com --servers 3 -e development # or: -e production for caching, etc
    

    install nginx

    sudo apt-get install nginx
    

    nginx configuration

    #/etc/nginx/sites-enabled/myapp.example.com
    upstream myapp {
      server 127.0.0.1:3000;
      server 127.0.0.1:3001;
      server 127.0.0.1:3002;
    }
    server {
      listen   80;
      server_name .example.com;
    
      access_log /var/www/myapp.example.com/log/access.log;
      error_log  /var/www/myapp.example.com/log/error.log;
      root     /var/www/myapp.example.com;
      index    index.html;
    
      location / {
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $http_host;
        proxy_redirect  off;
        try_files /system/maintenance.html $uri $uri/index.html $uri.html @ruby;
      }
    
      location @ruby {
        proxy_pass http://myapp;
      }
    }
    
    ln -nfs /etc/nginx/sites-available/myapp.example.com /etc/nginx/sites-enabled/myapp.example.com
    

    Start app

    thin start -C ~/myapp.example.com 
    /etc/init.d/nginx reload
    /etc/init.d/nginx restart
    

    用git更新项目

    ps -aux
    cd your_project_dir
    git fetch https://github.com/xxx/yyy.git
    git pull https://github.com/xxx/yyy.git
    thin start -C ~/myapp.example.com 
    /etc/init.d/nginx reload
    /etc/init.d/nginx restart
    


沪ICP备19023445号-2号
友情链接