ruby-on-rails 如何将Rails应用部署到VPS(或专用服务器)?

o0lyfsai  于 2023-05-08  发布在  Ruby
关注(0)|答案(3)|浏览(135)

如何将Rails应用部署到VPS(虚拟专用服务器)或专用服务器?有一个容易遵循的指南将是很好的。
我知道自动化流程的脚本,但我认为为了更好地理解流程,最好让一切都在控制之下。

rkttyhzu

rkttyhzu1#

我已经成功地将一个大型Rails应用程序部署到Linode或Digital Ocean上,使用了以下技术:

*rbenv用于Ruby安装
*nginx + Passenger应用服务器

  • 数据库服务器PostgreSQL
    *Capistrano用于自动化部署(首先在您的开发机器上使用服务器IP和设置配置它,我不会在这里介绍它)

以下是对我有效的步骤:

设置虚拟机

新建虚拟机

按照您的主机(Linode或Digital Ocean)的设置说明创建节点并进行设置。

设置日期

  • dpkg-reconfigure tzdata
    更新包
  • apt-get更新
  • apt-get升级

安全性

创建用户

  • adduser部署
  • usermod -a -G sudo deploy
  • 登出
    设置SSH密钥认证

在本地:

  • ssh-keygen
  • 复制公钥:
  • scp ~/.ssh/id_rsa.pub deploy@example.com:~

在服务器上:

  • ssh deploy@example.com
  • 启用别名以列出文件:
  • vim ~/.bashrc
  • 取消注解所有别名
  • mkdir .ssh
  • mv id_rsa.pub .ssh/authorized_keys
  • chown -R deploy:deploy .ssh
  • chmod 700 .ssh
  • chmod 600 .ssh/authorized_keys
  • 注销(测试新身份验证)
    设置SSH
  • sudo vim /etc/ssh/sshd_config
  • 将PermitRootLogin切换为no
  • sudo service ssh restart
    设置防火墙
  • sudo iptables -L(它应该显示一个空表)
  • sudo vim /etc/iptables.firewall.rules
  • Paste this:https://gist.github.com/davidmles/89fc88e48e17cf8252bfca374e46355f#file-iptables-firewall-rules
  • sudo iptables-restore < /etc/iptables.firewall.rules
  • sudo iptables -L(现在应该显示已配置的规则)
  • sudo vim /etc/network/if-pre-up.d/firewall
  • Paste this:https://gist.github.com/davidmles/89fc88e48e17cf8252bfca374e46355f#file-firewall
  • sudo chmod +x /etc/network/if-pre-up.d/firewall
    设置fail 2ban

如果你有足够的空闲内存,设置它,因为它往往会吃掉它。

  • sudo apt-get install -y fail2ban

设置Ruby

安装Git

  • sudo apt-get install -y git
    安装rbenv
  • git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
  • echo 'export PATH="$HOME/.rbenv/bin:$PATH”' >> ~/.bashrc
  • echo 'eval“$(rbenv init -)"' >> ~/.bashrc
  • source ~/.bashrc
  • git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    安装Ruby
  • sudo apt-get install -y curl gnupg build-essential
  • rbenv install -l(查找最新版本)
  • rbenv install 2.3.3(或目前可用的最新版本)
  • rbenv global 2.3.3
  • rbenv rehash
  • vim .gemrc
  • Paste this:gem:--无文档

设置服务器

安装nginx + Passenger

设置库

安装node.js

需要预编译资产。

  • sudo apt-get install -y nodejs
    安装bundler
  • get install bundler
  • rbenv rehash

设置应用

在PostgreSQL中创建用户

  • createuser用户名--pwprompt
  • createdb -Ousername -Eutf8 db_name
  • 测试它:
  • psql db_name --用户名--密码
    部署代码在服务器端: sudo mkdir -p /srv/yoursite.com * sudo chown deploy:deploy /srv/yoursite.com * 在您的开发机器上:* bundle exec cap production deploy:check(它会抛出一个错误,因为它找不到数据库)* 在服务器上:* cd /srv/yoursite.com/shared/config * vim database.yml(粘贴您的数据库配置)* vim secrets.yml(粘贴您的secrets配置)* 在您的开发机器上:* bundle exec cap production deploy * bundle exec cap production whenever:update_crontab
    配置logrotate
  • 遵循以下指南:* https://gorails.com/guides/rotating-rails-production-logs-with-logrotate
fjnneemd

fjnneemd2#

我以前用Capistrano将我的rails应用程序部署到我的生产服务器(它是一个集群),但我发现Capistrano有点复杂,有时甚至会成为麻烦制造者。所以我用bash shell脚本编写了我的部署脚本。
我把它放在Github上,并附上一个简短的指南:deploy_rails

oyt4ldly

oyt4ldly3#

作为更多的最新和未来的证明答案,我会建议官方网页在此:
Deploy Ruby on Rails

相关问题