我正在使用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 `/www/myapp/releases'. (ec2-XX-XXX-XXX-XX.compute-1.amazonaws.com)
怎么可能?我可以通过SSH连接到EC2作为用户 bitnami ,但当我尝试用户 root 时,我收到的消息是我应该使用 bitnami 用户登录,连接已关闭。
如果我尝试更改部署文件,请为 root 更改 bitnami 用户,整个部署过程都可以,但是当我通过SSH登录时(如 bitnami 用户)到EC2,我没有看到任何应该部署的文件,最终目录只是空的。
这种情况有什么问题?
非常感谢
答案 0 :(得分:1)
sudo chown -R <user> <folder path>
做了这个伎俩。用户不是文件夹的所有者,因此上限检查是错误。
答案 1 :(得分:0)
您是否已创建/ www / myapp目录并且bitnami用户是否具有写入权限?
假设您的应用程序名为“myapp123”,并且您希望将其部署到/ opt / bitnami / apps / myapp123。
创建应用程序目录并设置适当的权限:
mkdir -p /opt/bitnami/apps/myapp123
chown -R bitnami /opt/bitnami/apps/myapp123
将以下选项添加到部署配置文件中:
set :application, "myapp123"
set :deploy_to, "/opt/bitnami/apps/#{application}"
你打算使用Phussion Passenger吗?在这种情况下,您还需要将以下内容添加到Capistrano配置中:
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
end
你使用哪种BitNami AMI?
答案 2 :(得分:0)
Bitnami堆栈通常在
处有默认的webroot /opt/bitnami/apache2/htdocs
尝试写入该文件夹(使用bitnami用户)。
如果您想将webroot更改为其他目录,则需要创建目录并设置适当的权限,并告诉apache您已更改了Web根目录(click for more on how to do that)。
如果您在创建目录或应用权限时遇到问题,请在命令前添加sudo
sudo mkdir www
,如<{1}}。
答案 3 :(得分:0)
你有这个:
ssh_options[:auth_methods] = ["publickey"]