在服务器上部署 rails 项目笔记

前言:作 java 的时候,有接触过服务器部署,当时是把 java 项目打成 war 包,而后上传到服务器。接触 ruby 语言以后,只局限于开发模块,实现功能,工做环境中尝试折腾下服务器的机会不多,因此本身买了个服务器,本身找了个rails项目,是一个小的博客,想着弄个我的域名,挂在网上。并且正好能够学下部署,才有了这个笔记。java

一:安装rvm、ruby、rails

安装常见的系统依赖

sudo apt-get update
sudo apt-get install -y curl
curl -sSL https://git.io/vVHhe | bash

2.安装 rvm

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
source ~/.bashrc
source ~/.bash_profile

3.Ruby的安装与切换

列出已知的Ruby版本

rvm list known

安装一个Ruby版本

rvm install 2.3.1

这里安装了2.3.1,rvm list known列表里面的均可以拿来安装node

切换Ruby版本

rvm use 2.3.1

若是想设置为默认版本,这样一来之后新打开的控制台默认的 Ruby 就是这个版本mysql

rvm use 2.3.1 --default

查询已经安装的ruby

rvm list

卸载一个已安装版本(这步不要执行,只是告诉你rvm有这个操做)

rvm remove 2.2.0

4.安装Rails

gem install rails -v 5.1.4

成功以后是这样的 deploy_1.pnglinux

5.把本地项目上传到服务器

scp -r folder root@ip:/root/

#folder是要复制的目录
#ip是新服务器的ip

#二:安装mysql、nginix、thinnginx

1.安装mysql数据库

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

2.rails服务器thin的安装

Thin是Rails的服务器,它实现了event machine,理论上能够达到node同样的效果,不过要看具体的业务逻辑。git

thin命令的基本用法 thin start|stop|restart 开启|关闭|重启sql

安装thin的gem包

gem install thin

在4000端口启动

bundle exec thin start -p 4000

这里使用配置文件来启动,在config下建立 thin.yml数据库

chdir: '/root/RBlog' #这里须要修改为实际你项目的地址(好比我如今的项目地址是/root/RBlog)
environment: development
address: 0.0.0.0
port: 6661
timeout: 30
log: log/thin.log
pid: tmp/pids/thin.pid
max_conns: 1024
max_persistent_conns: 512
require: []
wait: 30
servers: 4
daemonize: true

执行命令:ubuntu

bundle exec thin start -C config/thin.yml

上面的意思是, 让你的Rails应用(部署在 /opt/app/current 目录下), 启动在 4个端口(6661~6664)上,而且都是已 daemon 的形式来运行中止时,可使用 thin stop -C config/thin.yml, 也能够直接kill all thin浏览器

3.安装nginx

server {
   listen 80;
   charset utf-8;
   location / {
       proxy_pass          http://rails_servers;
       proxy_redirect      default;
       proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header    X-Real-IP $remote_addr;
       proxy_set_header    Host $http_host;
       proxy_next_upstream http_502 http_504 error timeout invalid_header;
  }
}
upstream rails_servers{
      server 127.0.0.1:6661;
      server 127.0.0.1:6662;
      server 127.0.0.1:6663;
      server 127.0.0.1:6664;
}

执行rails -t 测试一下配置文件是否成功 ubuntu_2.png

4.重启nginx

nginx -s reload

这里简单说下nginx+thin

nginx至关于一个代理,当你在浏览器输入:http://sai.com (我本身随便模拟的域名,这个域名不存在) 的时候,先经过dns找到这个域名对应的ip,而后经过路由到达ip所在的服务器上,服务器发现用户请求的是sai.com,而后nginx就根据配置文件里配置sai.com,找到对应的项目,这个rails项目是由thin启动的,而后nginx就把这个事交给thin,thin收到后就根据路由去到对应的controller,而后返回对应的页面给到浏览器。

三:最后,再说下怎么免输入密码登录

ssh 无密码登陆要使用公钥与私钥。linux下能够用用ssh-keygen生成公钥/私钥对。

好比有机器A(192.168.1.155),B(192.168.1.181),现想A经过ssh免密码登陆到B。

1.在A机下生成公钥/私钥对。

ssh-keygen -t rsa -P ''

-P表示密码,-P '' 就表示空密码,也能够不用-P参数,这样就要三车回车,用-P就一次回车。 它在家(/home/用户名)下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

2.把A机下的id_rsa.pub的内容复制到B机下的.ssh/authorized_keys文件里。

再从新ssh登陆就能够免掉密码了

相关文章
相关标签/搜索