这几天我搜索了很多关于"用户数据脚本不能正常工作"的话题,但直到现在,我还没有对我的案例有任何了解,请帮我弄清楚发生了什么,非常感谢!
根据AWS 用户数据说明:
在Amazon EC2中启动实例时,您可以选择将用户数据传递给可用于执行常见自动配置任务的实例,甚至可以在实例启动后运行脚本.
所以我试图在实例启动时传递我自己的用户数据,这是我的用户数据:
\#!/bin/bash
echo 'test' > /home/ec2-user/user-script-output.txt
Run Code Online (Sandbox Code Playgroud)
但是这条路径中没有文件: /home/ec2-user/user-script-output.txt
我检查过/var/lib/cloud/instance/user-data.txt
,该文件存在且与我的用户数据脚本相同.
我也检查了登录/var/log/cloud-init.log
,没有错误信息.
但是如果我用Amazon linux(2014.09.01)启动一个新实例,用户数据脚本就可以了,但是我不确定我的AMI(基于Amazon linux)和Amazon linux之间有什么区别.
我看到的唯一不同的部分是如果我运行这个脚本:
sudo yum list installed | grep cloud-init
Run Code Online (Sandbox Code Playgroud)
我的AMI:
cloud-init.noarch 0.7.2-8.33.amzn1 @ amzn-main
亚马逊linux:
cloud-init.noarch 0.7.2-8.33.amzn1已安装
我不确定这是什么原因?
如果您需要更多信息,我很高兴提供,请让我知道我自己的AMI发生了什么以及如何解决?
非常感谢
更新
刚刚从这篇文章中找到答案,
如果我在用户数据文件的顶部添加#cloud-boothook,它就可以了!
#cloud-boothook
#!/bin/bash
echo 'test' > /home/ec2-user/user-script-output.txt
Run Code Online (Sandbox Code Playgroud)
但仍不确定原因.
当我尝试调用由 PHP 编程的 GET API 时,我多次遇到 http 504 网关超时错误。
这是我的服务器和 AWS 环境。
从一些关于 504 网关超时的文章中,我已经尝试修改这些设置:
# ELB
idle timeout => 300
# php.ini
max_execution_time => 301
max_input_time => 301
# httpd conf
MaxKeepAliveRequests => 100
KeepAliveTimeout => 30
Run Code Online (Sandbox Code Playgroud)
但是所有这些对我都没有帮助,有时仍然会出现 504 网关超时。
我的php脚本不是一个长脚本,它只是从3个表中的mysql数据库(AWS RDS)中获取数据并将数据返回给客户端,没有上传文件或生成大文件,所以我认为执行时间不是问题。
奇怪的是,504网关超时错误并不总是发生,大多数时候是正常的,只是偶尔发生,现在,我仍然不明白504错误什么时候会发生,真的很奇怪,如果有人能给我一些关于如何解决这个问题的建议,这对我来说真的是一个很大的帮助。
=== 新更新 ===
我刚刚在我的 php 代码中发现了一个问题,我认为这是带有自动加载问题的命名空间。
我在同一个文件夹中有 2 个 php 文件,这意味着 …