最近弄了个VPS在服务器上部署Rails项目,也做一个部署的笔记:

主要参考资料:Ubuntu 12.04 上使用 Nginx Passenger 部署 Ruby on Rails

###服务器配置

服务器使用 Linode 或者 DigitalOcean,选择安装 Ubuntu 12.04, 然后启动服务器,在本地终端通过

"ssh root@yourvpsip"

输入vps提供的root帐号密码,就可以远程登陆服务器了。

添加 deploy 用户 useradd -m -s /bin/bash deploy

将用户加入 sudo 群组,以便使用 sudo 命令: adduser deploy sudo

为 deploy 用户设置密码: passwd deploy

退出当前 SSH 链接,用 deploy 帐号重新登陆。

配置ssh公钥登陆

在本地终端通过scp命令将本地公钥上传的服务器:

scp ~/.ssh/id_rsa.pub deploy@yourvpsip:

(注意保留命令末尾的冒号)

在远程服务器执行:

mkdir .ssh

mv id_rsa.pub .ssh/authorized_keys

最后修改公钥文件的权限

chown -R deploy:deploy .ssh

chmod 700 .ssh

chmod 600 .ssh/authorized_keys

禁用 ssh 密码登陆: 在远程服务器执行:

sudo vi /etc/ssh/sshd_config

打开SSH配置文件, 将 PasswordAuthentication 设置为“No” 保存退出,重启 ssh 服务:

sudo service ssh restart

现在就可以通过

ssh deploy@yourvpsip

直接登陆远程服务器了 :)

###搭建 Ruby on Rails 环境 这一步和在本机搭建Ruby on Rails 环境没多大区别,可参考如何快速正确的安装 Ruby, Rails 运行环境

安装 Passenger

按照 安装 Passenger 的步骤即可方便地安装好 Passenger 在安装完 Passenger 后记得修改 nginx 配置 /etc/nginx/nginx.conf

加入

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /home/deploy/.rvm/wrappers/default/ruby;

###站点文件

创建站点文件夹:

sudo mkdir -p /var/www/example.com

sudo chown deploy:deploy /var/www/example.com

在远端服务器安装git

sudo apt-get install git

生成服务器的SSH key

cd ~/.ssh

ssh-keygen -t rsa -C "your_email@example.com"~/.ssh/id_rsa.pub 的内容加到 Github 的SSH keys里

Nginx 配置

新建并编辑/etc/nginx/sites-enabled/example.com.conf

server {
	listen 80 default;
	server_name localhost;
	root /var/www/example.com/current/public;
	passenger_enabled on;
} 重启 nginx:

$ sudo service nginx restart

通过Capistrano部署

Gemfile 里加入

gem 'capistrano-rails', '~> 1.1.1', group: :development

使用 cap install 生成 Capfile 相关文件 修改production.rb 里 example.com 为 yourvpsip 并将user 设置为 deploy 在deploy.rb 里 , 将 repo_url 设置为你在Github的项目 并将set :deploy_to 的注释去掉,设置为 deploy_to 的位置

执行 cap production deploy 就可以自动部署了 XD