我通过 AWS Elastic Beanstalk 运行EC2实例。不幸的是,它有不正确的时区 - 比它应该提前2小时,因为时区设置为UTC。我需要的是GMT + 1。
有没有办法设置.ebextensions配置,以强制EC2实例使用正确的时区?
答案 0 :(得分:29)
是的,你可以。
只需使用以下内容创建文件/.ebextensions/00-set-timezone.config
commands:
set_time_zone:
command: ln -f -s /usr/share/zoneinfo/Australia/Sydney /etc/localtime
这假设您使用的是默认的Amazon Linux AMI映像。如果您使用其他Linux发行版,只需将命令更改为在该Linux中设置时区所需的任何内容。
答案 1 :(得分:15)
这是来自aws支持业务的回复,这有效!
----原帖----
如何将环境的时区或更改为Elastic Beasntalk的环境实例更改为UTC / GMT -3小时(阿根廷布宜诺斯艾利斯)? 我目前正在使用Amazon Linux 2016.03。在此先感谢您的帮助。 问候。
----------回应----------
您好,感谢您就修改Elastic Beanstalk实例时区以使用UTC / GMT -3小时(阿根廷布宜诺斯艾利斯)联系AWS支持,请参阅下面有关如何执行此修改的步骤。
以下示例显示如何使用.ebextensions为Amazon Linux OS修改Elastic Beanstalk环境的时区:
为示例00-set-timezone.config文件创建.config文件,并以yaml格式添加以下内容。
container_commands:
01changePHP:
command: sed -i '/PHP_DATE_TIMEZONE/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/php.d/environment.ini
01achangePHP:
command: sed -i '/aws.php_date_timezone/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/php.d/environment.ini
02change_AWS_PHP:
command: sed -i '/PHP_DATE_TIMEZONE/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/httpd/conf.d/aws_env.conf
03php_ini_set:
command: sed -i '/date.timezone/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/php.ini
commands:
01remove_local:
command: "rm -rf /etc/localtime"
02link_Buenos_Aires:
command: "ln -s /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime"
03restart_http:
command: sudo service httpd restart
将应用程序部署到Elastic Beanstalk,包括.ebextensions,时区将按照上述内容进行更改。
我希望有帮助
问候!
答案 2 :(得分:6)
如果您在eb环境中运行Windows ... 。
在项目的根目录中创建名为.ebextensions的文件夹..
在该文件夹中创建一个名为timezone.config的文件
在该文件中添加以下内容:
commands:
set_time_zone:
command: tzutil /s "Central Standard Time"
根据需要设置时区
答案 3 :(得分:2)
我在php.d文件夹中使用自定义.ini文件以及http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#change_time_zone的常规推荐:
ax.set_title(label)
答案 4 :(得分:1)
使用Elastic Beanstalk更改EC2的时区很简单:
.ebextensions
文件夹
timezone.config
)文件内
container_commands:
time_zone:
command: ln -f -s /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime
然后你就完成了。
请注意,container_commands
与commands
的不同之处在于它所声明的文档:
在应用程序和Web服务器设置之前运行
commands
提取应用程序版本文件。
由于服务器尚未启动,因此您的时区命令无法正常工作。
container_commands
在应用程序和Web服务器运行之后运行 设置和应用程序版本文件已被提取,但之前 部署了应用程序版本。
答案 5 :(得分:0)
这些变通办法仅修复了应用程序的时区。但是当你有像cron run这样的系统服务时,它会查看/etc/sysconfig/clock
,而且始终是UTC
。如果你拖尾cron日志或aws-sqsd日志会发现时间戳仍然落后2小时 - 在我的情况下。并且时钟设置的更改需要重新启动才能生效 - 如果您已进行自动缩放,或者您希望使用ebextensions
来更改系统时钟,则无法考虑此选项配置。
答案 6 :(得分:0)
答案 7 :(得分:0)
如果您的EB应用程序正在使用Java / Tomcat容器,则可以将JVM时区选项添加到Procfile configuration。示例:
web: java -Duser.timezone=Europe/Berlin -jar application.jar
确保在-jar选项之前添加所有配置选项,否则它们将被忽略。
答案 8 :(得分:0)
迁移到 AWS Linux 2 具有挑战性。我花了一段时间才弄清楚如何在 .ebextensions 中轻松做到这一点。
我在 another stackoverflow question 中编写了简单的解决方案 .. 但对于任何需要即时满足的人.. 将以下命令添加到文件 .ebextensions/xxyyzz.config 中:
container_commands:
01_set_bne:
command: "sudo timedatectl set-timezone Australia/Brisbane"
command: "sudo systemctl restart crond.service"
答案 9 :(得分:-2)
通过 putty 或 ssh 连接 AMI ( amazon linux实例)并执行以下命令;
sudo rm /etc/localtime
sudo ln -sf /usr/share/zoneinfo/Europe/Istanbul /etc/localtime
sudo reboot
上述程序的说明很简单;
请通知我已将我的时区更改为土耳其当地时间,您可以通过以下命令列出zoneinfo目录找到您的时区;
ls /usr/share/zoneinfo
或者只是通过维基百科检查时区abbrevetaions;
http://en.wikipedia.org/wiki/Category:Tz_database
您还可以查看相关的Amazon AWS文档;
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html
注意:我不确定这是否是最佳做法(可能不是),但是我已经应用了我上面写的程序并且它正在努力我