Tag: amazon ec2

从AWS EC2实例发送电子邮件(SES是强制性的?)

我写这篇文章只是为了看看我是否可以对AWS EC2实例中的电子邮件发送概念做出一些澄清。 这与其他post相关Rails不会在AWS上发送电子邮件 我正在开发一个向客户发送电子邮件的Rails应用程序(例如确认或信息电子邮件)。 我不确切知道哪个电子邮件服务正在使用Rails。 我没有安装任何特定的gem。 但是电子邮件已经在开发环境(Ubuntu)中完美发送。 当我部署到我的生产环境(AWS EC2实例)时。 此function无效。 您可以在我上面提供的post中看到错误详细信息。 该错误与某些smtp connection refused 。 所以,我已经阅读了其他一些post,但我很困惑。 是否必须使用AWS SES服务才能从EC2实例发送电子邮件? 或者它只是与安全凭证相关的问题(也许我只需要打开smtp 25端口)。 我是否需要安装任何电子邮件客户端或服务器?

HTTP调用在本地与AWS的行为不同 – 是ruby还是AWS?

我写的API有一个奇怪的问题。 API已经使http获取对其他服务的请求,并在某些情况下超时 – 在大多数情况下,其他服务关闭/无法访问。 我正在尝试完全在AWS上运行系统,但是当在那里运行API时,我会经常尝试访问同一实例上的服务。 API是用ruby + sinatra编写的; 我从来没有遇到过它的python前辈的问题。 如果我从AWS实例命令行curl其他服务的URL,我永远不会得到超时。 当我在本地运行API(AWS上的其他服务)时,它每次运行都很好。 最初我认为它可能是我正在使用的http库 – net / http,甚至在本地也存在问题。 切换到open-uri或rest-client修复了所有本地问题,但是当我在AWS上运行时,我仍然会有20%的时间超时。 API是ruby + sinatra,使用open-uri来执行http请求。 其他服务是ruby + sinatra或java。 我正在运行一个32位的Amazon Linux小实例,ruby 1.9.3,java 1.6; 我的本地机器是Mac with Snow Leopard,带有ruby 1.9.3和java 1.6。 任何想法或提示,以进一步缩小可能发生的事情? 更新:我的大sinatra应用程序和小sinatra应用程序表现不同!? 我的sinatra应用程序的测试版本调用我的java服务,都在AWS上运行……工作正常。 require ‘rubygems’ require ‘uri’ require ‘open-uri’ require ‘sinatra’ set :port, 6969 get ‘/wtf’ do xid = params[:xid] state = […]

无法让nginx在生产中使用Rails应用程序

我有一个Rails应用程序,它在Webrick的本地机器上运行良好。 我尝试将其部署到AWS EC2。 我已将我的应用程序源从bitbucket复制到/home/ubuntu并通过此命令安装了nginx和passenger(以及其他所需的所有内容,如gem,ruby等): rvmsudo passenger-install-nginx-module 然后我这样做了: $ git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git $ sudo mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx $ sudo chown root:root /etc/init.d/nginx Nginx本身运行良好(!),例如: $ sudo /etc/init.d/nginx restart * Stopping Nginx Server… [ OK ] * Starting Nginx Server… [ OK ] 它安装在/ opt / nginx中,即使这样我也必须使用/etc/init.d/nginx来控制它的状态。 这是我的/opt/nginx/nginx.conf文件: server { listen 80; server_name localhost; root /home/ubuntu/my_app/public/; passenger_enabled on; […]

使用ubuntu ec2实例的capistrano在rails上部署ruby

我正在尝试使用Capistrano在rails应用程序上实现ruby,我在staging服务器中运行apache rvm,在生产服务器中运行nginx REE版本。 我也在使用git。 我一直试图整合Capistrano,但我收到了这个错误 (Net::SSH::AuthenticationFailed: ubuntu) 这是我的deploy.rb文件 set :application, “capify” # The directory on the EC2 node that will be deployed to set :deploy_to, “/home/ubuntu/apps/#{application}” set :keep_releases, 3 # deploy with git set :scm, :git set :repository, “git@github.com:username/capify.git” set :git_shallow_clone, 1 set :branch, “master” set :use_sudo, false set :user, “ubuntu” ssh_options[:keys] = [“/path/tp/key.pem”] ssh_options[:forward_agent] […]

Postgres rails无法识别用户

所以我的rails应用程序给了我“我们很抱歉,但出了点问题。” 当我查看日志时,我明白了 PG::Error (FATAL: role “ubuntu” does not exist ): 但是,当我这样做时(注意我相信我从来没有为角色ubuntu添加密码): sudo -u postgres createuser ubuntu Shall the new role be a superuser? (y/n) y createuser: creation of new role failed: ERROR: role “ubuntu” already exists 我在使用nginx服务器的ubuntu ec2实例上运行它。 编辑:我只是尝试卸载并重新安装postgres,并完全打破它,所以我将无法接受任何答案。

EC2 – 无法部署为“bitnami”用户

我正在使用Capistrano将Rails应用程序部署到Amazon EC2。 在部署文件中,我有以下凭据连接到Amazon EC2: set :user, “bitnami” #set :user, “root” server “ec2-XX-XXX-XXX-XX.compute-1.amazonaws.com”, :app, :web, :db, :primary => true ssh_options[:keys] = [“/Users/ada/my_amazon_ec2.pem”] 当我运行cap deploy:setup和cap deploy:check ,我得到以下信息: The following dependencies failed. Please check them and try again: –> You do not have permissions to write to `/www/myapp’. (ec2-XX-XXX-XXX-XX.compute-1.amazonaws.com) –> You do not have permissions to write to […]

如何枚举运行ec2实例并使用ruby将它们加载到数据库中?

我正在使用aws-sdk gem,我无法想出如何列出所有正在运行的ec2实例并将它们加载到数据库中。 我需要一个如何做到这一点的方法。

Ruby AWS – 以编程方式生成可用AWS实例类型的列表

我最近开始在Sinatra Web应用程序中使用aws gem,其目的是为实例管理提供定制的前端(集成非AWS工具)。 我目前正在处理表单,允许用户设置可能需要设置的所有选项,其中一个选项是实例类型(m1.small,c1.medium等)。 我想要的是能够联系某些来源以获取可用类型列表。 我查看了AWS :: EC2文档,但未找到符合此描述的任何内容。 我没有必要坚持认为解决方案是aws gem的一部分,但如果是,那就更好了,因为那是我已经使用的工具。 您是否知道以编程方式收集此信息的方法?

加载两个名称相同的Ruby Modules / Gems

我正在尝试使用两个Gems来访问Amazon Web Services(AWS)。 一个是亚马逊’aws-sdk’,另一个是’amazon-ec2’。 我正在使用第二个,因为aws-sdk没有涵盖亚马逊服务的cloudwatch部分。 问题是两者都加载到同一名称空间。 require ‘aws-sdk’ # aws-sdk gem require ‘AWS’ # amazon-ec2 gem config = {:access_key_id => ‘abc’, :secret_key => ‘xyz’} # start using the API with aws-sdk ec2 = AWS::EC2.new(config) # start using the API for anazon-ec2 cw = AWS::Cloudwatch::Base.new(config) 现在,这可以理解地在最后一行引发错误,因为AWS模块指向第一个必需的库,在本例中为aws-sdk。 NameError: uninitialized constant AWS::Cloudwatch 那么,我可以将其中一个加载到另一个名称空间中吗? 就像是 require ‘aws-sdk’, ‘AWS_SDK’ require […]