前言:作 java 的时候,有接触过服务器部署,当时是把 java 项目打成 war 包,而后上传到服务器。接触 ruby 语言以后,只局限于开发模块,实现功能,工做环境中尝试折腾下服务器的机会不多,因此本身买了个服务器,本身找了个rails项目,是一个小的博客,想着弄个我的域名,挂在网上。并且正好能够学下部署,才有了这个笔记。java
sudo apt-get update sudo apt-get install -y curl curl -sSL https://git.io/vVHhe | bash
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.rvm.io | bash -s stable source ~/.bashrc source ~/.bash_profile
rvm list known
rvm install 2.3.1
这里安装了2.3.1,rvm list known列表里面的均可以拿来安装node
rvm use 2.3.1
若是想设置为默认版本,这样一来之后新打开的控制台默认的 Ruby 就是这个版本mysql
rvm use 2.3.1 --default
rvm list
rvm remove 2.2.0
gem install rails -v 5.1.4
成功以后是这样的 linux
scp -r folder root@ip:/root/ #folder是要复制的目录 #ip是新服务器的ip
#二:安装mysql、nginix、thinnginx
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
Thin是Rails的服务器,它实现了event machine,理论上能够达到node同样的效果,不过要看具体的业务逻辑。git
thin命令的基本用法 thin start|stop|restart 开启|关闭|重启sql
gem install thin
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浏览器
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 测试一下配置文件是否成功
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登陆就能够免掉密码了