deploy
最近弄了个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