AWS EC2 DNS 未响应使用 capistrano 在 CentOS 6 上部署 Rails 应用程序

AWS EC2 DNS 未响应使用 capistrano 在 CentOS 6 上部署 Rails 应用程序

我正在尝试使用 capistrano 将一个带有 sqlite3 的小型 rails 应用程序部署到微型 AWS EC2 CentOS 6 实例(在使用 nginx 和 Passenger 后没有取得太大成功)。我按照此网站部署我的应用程序

https://mattbrictson.com/build-and-deploy-a-rails-vps-part-2

部署成功,但 AWS 实例 DNS 响应 和page isn’t workingERR_EMPTY_RESPONSE奇怪的是,当我导航到我的 DNS 时,控制台显示Navigated to data:text/html,chromewebdata不对。我尝试用 Google 搜索该问题,但没有多少人遇到类似的问题。当我bundle exec cap production deploy从我的 Mac(不在 AWS 服务器内)运行部署程序时,很难跟踪这一点,因为部署程序成功了,并且没有错误。有没有人遇到过类似的问题,并且知道这个静默部署问题的解决方法?

deployer我以用户身份在路径上部署了该应用程序/var/www/texter/,并且该用户可以访问 AWS ec2 实例内的这个文件夹。

我的 AWS 安全组设置中端口 80 和 8080 是打开的,所以我也不认为这是个问题。我使用下面的命令 (如果我错了请纠正我) 告诉我的防火墙接受端口 8080 和 80,但这没有任何作用。

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

以下是我以用户身份设置服务器的操作deployer,这是 Rails 应用程序的标准:

sudo yum install -y git-core zlib zlib-devel gcc-c++ patch readline readline-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison curl sqlite-devel

# preparring rbenv, ruby, rails, nodejs
git clone git://github.com/sstephenson/rbenv.git .rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc

exec $SHELL
rbenv install -v 2.1.0
rbenv global 2.1.0
echo "gem: --no-document" > ~/.gemrc
gem install bundler
gem install rails -v 4.2.6 -V
rbenv rehash
sudo yum -y install epel-release
sudo yum install nodejs

之后,我使用、、中的这些内容通过 capistrano 设置了我的 rails (config/deploy.rb它们都与我上面发布的教程链接相同,但仅供参考)。Capfile/config/deploy/production.rb

里面config/deploy.rb

set :application, "texter"
set :repo_url, "my_github_repo"
set :linked_dirs, %w(
  bin log vendor/bundle public/system
  tmp/pids tmp/cache tmp/sockets
)
set :puma_bind, "tcp://0.0.0.0:8080"

Capfile

# Load DSL and set up stages
require "capistrano/setup"

# Include default deployment tasks
require "capistrano/deploy"

# Include tasks from other gems included in your Gemfile
#
# For documentation on these, see for example:
#
#   https://github.com/capistrano/rvm
#   https://github.com/capistrano/rbenv
#   https://github.com/capistrano/chruby
#   https://github.com/capistrano/bundler
#   https://github.com/capistrano/rails
#   https://github.com/capistrano/passenger
#
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require "capistrano/puma"
# require 'capistrano/passenger'

# Load custom tasks from `lib/capistrano/tasks` if you have any defined
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }

我的内容在/config/deploy/production.rb

server "PUBLIC-IP-FROM-AWS",
       :user => "deployer",
       :roles => %w(web app db)

答案1

我在此页面的帮助下解决了问题

无法通过 IP 地址访问 EC2 服务器

选项 #2 解决了我的问题,希望它也能帮助其他人。但是出现了另一个问题。我让服务器在公共 IP 中运行,但puma并未运行;部署消息声称一切正常。我通过绕过这个问题并以 root 身份在路径bundle exec passenger start内运行解决了这个/var/www/myappName/current问题,然后启动了 nginx 引擎来代理本地主机服务器。解决 puma 服务器是一个完全不同的问题,我可能会在另一篇文章中提出这个问题。

相关内容