前言:作 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登陸就能夠免掉密碼了