CLOUD PAAS / ADDITIONAL GUIDES

การจัดการข้อมูลเขตเวลา

คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ

คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน การจัดการข้อมูลเขตเวลา บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และทรัพยากรเป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

คอนเทนเนอร์ทั้งหมดที่สร้างภายใน Ruk-Com Cloud PaaS โดยเริ่มต้นใช้เขตเวลา UTC อย่างไรก็ตามคุณสามารถเปลี่ยนเขตเวลาที่คุณต้องการได้อย่างง่ายดายโดยเพิ่ม add-onการเปลี่ยนแปลงเขตเวลา คุณสามารถทำตามขั้นตอนที่ระบุไว้เพื่อสลับเขตเวลาในอินสแตนซ์ของคุณ

อีกวิธีหนึ่งคุณสามารถเปลี่ยนแปลงได้ด้วยตนเอง ตัวอย่างเช่น Java และ PHP application servers ที่มาพร้อมกับแพ็คเกจเขตเวลาพิเศษซึ่งรวบรวมข้อมูลเกี่ยวกับประวัติของเวลาท้องถิ่นในสถานที่ต่างๆทั่วโลกและกฎเขตเวลาปัจจุบัน ข้อมูลนี้จำเป็นสำหรับซอร์ฟแวร์ที่ทำงานภายในคอนเทนเนอร์และได้รับการอัปเดตอย่างสม่ำเสมอภายในเซิร์ฟเวอร์ที่เกี่ยวข้อง

นอกจากนั้นคุณสามารถอัปเดต timezone ด้วยตนเองได้ทันทีหากจำเป็นหรือเปลี่ยน TZ ที่ใช้อยู่ในปัจจุบันตามตำแหน่งที่ต้องการ ดังนั้นด้านล่างนี้เราจะอธิบายเกี่ยวกับการจัดการข้อมูล timezone สำหรับแอปพลิเคชันเซิร์ฟเวอร์ของโปรแกรมภาษาที่กล่าวถึงข้างต้น:

โปรแกรมเสริมโซนเวลา

โปรแกรมเสริมการเปลี่ยนแปลงเขตเวลาสามารถติดตั้งบน environment ของคุณโดยจะเปลี่ยนเขตเวลาสำหรับคอนเทนเนอร์ทั้งหมดในเวลาไม่กี่นาที

1. ก่อนดำเนินการติดตั้ง ให้ตรวจสอบเขตเวลาบนคอนเทนเนอร์ของคุณโดยใช้คำสั่งวันที่

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

อย่างที่คุณเห็นค่าเริ่มต้นคอนเทนเนอร์จะใช้เวลาสากลเชิงพิกัดโซน

2. ไปที่ TimeZonอีเปลี่ยนadd-on repository ภายใน Ruk-Com Cloud JPS Collection ที่ GitHub คัดลอกลิงก์ไปยังไฟล์manifest.jpsและนำเข้าผ่านแดชบอร์ด:https://github.com/jelastic-jps/time-zone-change/blob/master/manifest.jps

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เคล็ดลับ:ขึ้นอยู่กับการตั้งค่าของผู้ให้บริการโฮสติ้งโดยเฉพาะ add-on สามารถใช้งานได้ผ่านตลาด

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. ภายในเฟรมที่เปิดขึ้น เลือกสิ่งแวดล้อมที่คุณต้องการเปลี่ยนเขตเวลาและพิมพ์ชื่อเขตเวลาที่ต้องการ (รายการ time zones)

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
คลิก Install เพื่อใช้การเปลี่ยนแปลง

4. หลังจากติดตั้ง add-on แล้ว คุณสามารถตรวจสอบการเปลี่ยนแปลงเขตเวลาโดยพิมพ์คำสั่งวันที่

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

กฏของ Timezone สำหรับ Java

กฏของเขตเวลาภายใน Java การประมวลผลโหนดจะส่งโดย TZdata package โดยเฉพาะซึ่งประกอบด้วยคอนเทนเนอร์ที่เหมาะสมแต่ละรายการ คุณสามารถทำตามคำแนำนำด้านล่าง:

  • การอัปเดตข้อมูล Timezone
  • การเปลี่ยน Timezone ปัจจุบัน

ถึงแม้ว่าความจริงแล้ว TZdata package edition ใหม่ล่าสุดจะรวมเข้ากับโหนดในระหว่างการสร้างแต่บางครั้งก็ล้าสมัยเนื่องจากการเปลี่ยนแปลงข้อมูลภายในเป็นระยะ ดังนั้น คอนเทนเนอร์เก่าอาจต้องมีการอัปเดตที่สอดคล้องกันเป็นครั้งคราว (โดยเฉพาะเพื่อที่จะไม่ต้องสร้างใหม่ทุกครั้งที่ต้องการ) ด้วยเหตุนี้จึงใช้เครื่องมือTZUpdaterแบบฝังพิเศษที่มีวัตถุประสงค์เพื่อให้ข้อมูลเขตเวลาของคุณถูกต้องและเป็นปัจจุบันซึ่งค่อนข้างใช้งานง่ายและสามารถรันได้เพียงใช้คำสั่งบรรทัดเดียว:

1. เชื่อมต่อ Java environment ผ่าน SSH เช่นการใช้เว็บ SSHที่หน้าแดชบอร์ด

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. คุณสามารถตรวจสอบเวอร์ชันTZdataที่ใช้อยู่ในปัจจุบันได้โดยรันคำสั่งต่อไปนี้:

java -jar /usr/java/utils/tzupdater.jar -V
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. นอกจากนี้คุณสามารถอัปเดตข้อมูล timezone โดยใช้เครื่องมือTZUpdater

java -jar /usr/java/utils/tzupdater.jar -u

การเปลี่ยน Timezone

ในหัวข้อนี้มาดูการเปลี่ยนแปลงเขตเวลากัน ซึ่งในตัวอย่างนี้เราจะใช้ Tomcat 10.0.12 server

1. ตั้งค่าการประทับเวลาเวลาปัจจุบันให้แสดงที่หน้าเริ่มต้นของเซิร์ฟเวอร์ - เพื่อให้แน่ใจว่าการตั้งค่าเขตเวลาใหม่ได้ถูกปรับใช้สำเร็จ

โดยการวางโค้ดด้านล่างนี้แทนค่าเริ่มต้นที่ไฟล์/opt/tomcat/webapps/ROOT/index.jsp((วิธีที่ง่ายที่สุดคือการใช้ตัวจัดการไฟล์ภายในแพลตฟอร์ม)

<%@page import="java.util.*"%>
<html>
   <head>
       <title>TZ Page</title>
   </head>
   <body>
       <%=new Date(System.currentTimeMillis()).toString()%>
   </body>
</html>
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. บันทึกการเปลี่ยนแปลงและเปิดเบราว์เซอร์ใน environment ของคุณโดยคลิกที่ปุ่มเปิดในเบราว์เซอร์

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. การเปลี่ยนเขตเวลาจริงสำหรับเซิร์ฟเวอร์ใดโดยเฉพาะ คุณสามารถทำได้ตามขั้นตอนนี้

  • สำหรับTomcat, TomEE, Payara, Spring Bootและท่าเทียบเรือ
    สลับไปที่หน้าการกำหนดค่าไฟล์ตัวแปร.confและเพิ่มตัวแปร -Duser.timezone พร้อมกับค่าโซนที่ต้องการ เช่น -Duser.timezone=Asia/Bangkok

เพิ่มเติม:ตำแหน่งที่อยู่ของไฟล์อาจแตกต่างกันขึ้นอยู่กับแอปพลิเคชันเซิร์ฟเวอร์ที่ใช้:
- Tomcat 7, 8, 9, TomEE - /opt/tomcat/conf/variables.conf
- ท่าเทียบเรือ 9 - /opt/jetty/etc/variables.conf
- Payara 4, 5 - /opt/payara/glassfish/domains/domain1/กำหนดค่า/variables.conf
- Spring Boot 1, 2 - /opt/shared/conf/variables.conf

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  • สำหรับ GrassFish เข้าถึงผ่าน GF admin panel ไปที่ส่วนการกำหนดค่า > gfcluster-กำหนดค่า (หรือเซิร์ฟเวอร์ กำหนดค่า สำหรับ GF 4) > การตั้งค่า JVM > ตัวเลือก JVMและคลิกปุ่มเพิ่มตัวเลือก JVMวางสตริงที่เกี่ยวข้อง (เช่น -Duser.timezone=Asia/Bangkok) ในช่องป้อนข้อมูลที่ปรากฏ
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  • สำหรับแมลงวันป่าให้สลับไปที่ไฟล์/opt/wildfly/bin/standalone.confหรือหากเซิร์ฟเวอร์ปรับขนาดแบบ horizontal ให้ไปที่/opt/wildfly/bin/domain.confและประกาศตัวแปรที่เกี่ยวข้องโดยใช้รูปแบบต่อไปนี้: export JAVA_OPTS="-Duser.timezone=Asia/Bangkok"
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

4. บันทึกการเปลี่ยนแปลงและรีสตาร์ทเพื่อใช้การตั้งค่าใหม่ จากนั้น Refresh หน้า timezone หรือคลิก Open in Browser อีกครั้งเพื่อดูเวลาท้องถิ่นที่อัปเดต

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ด้วยวิธีนี้ คุณสามารถตั้งค่าตำแหน่งเวลาที่ต้องการสำหรับเซิร์ฟเวอร์ของคุณโดยไม่มีปัญหาภายในเวลาไม่กี่นาที

กฏของ Timezone สำหรับ PHP

การจัดการตั้งค่า timezone สำหรับ PHP แอปพลิเคชันเซิร์ฟเวอร์ (Apache และ NGINX) จะดำเนินการในส่วน[วันที่]ของไฟล์การกำหนดค่าหลักphp.ini

การเข้าถึงไฟล์คลิกที่ปุ่มการกำหนดค่าถัดจากโหนดที่ต้องการและเข้าไปที่ไฟล์/etc/php.ini

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ในส่วนนี้จะสามารถทำได้สองส่วนคือ:

  • รับข้อมูลเขตเวลาล่าสุด
  • ตั้งค่าเขตเวลาด้วยตนเอง

การตรวจสอบ Timezone Data

การตั้งค่าแบบแรกอนุญาตให้คุณใช้ Timezone Database อื่นๆภายนอกได้ (กล่าวคือ -โอลสัน) ในกรณีที่ฐานข้อมูลภายในล้าสมัย

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

โดยการ uncomment ลบสัญลักษณ์อัฒภาค (;) บรรทัดที่ 266 และกดปุ่ม Save เพื่อบันทึกการเปลี่ยนแปลง จากนั้นรีสตาร์ทแอปเซิร์ฟเวอร์ของคุณ

ตอนนี้คุณสามารถคลิกเปิดในเบราว์เซอร์และเลื่อนไปที่ส่วนวันที่ในหน้าphp.infoที่เปิดขึ้น คุณจะเห็น timezone package เวอร์ชันล่าสุดพร้อมระบุการใช้ DB ภายนอก:

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การเปลี่ยน Timezone

ตัวเลือกที่สองในส่วนของ [date] มีไว้สำหรับการกำหนดตำแหน่งเขตเวลาปัจจุบันของโหนดนั้นๆ (โดยค่าเริ่มต้นจะชี้ไปที่ UTC zone) ตัวอย่างด้านล่างเราจะแก้ไขค่าเริ่มต้นหน้าแรกของเซิร์ฟเวอร์ที่ไฟล์/var/www/webroot/ROOT/index.php ด้วยโค้ดต่อไปนี้:

<?php
echo date("h:i:sa");
?>
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

จากนั้นกดปุ่มบันทึกอัปเดตไฟล์แล้วเปิดในเบราว์เซอร์คุณจะเห็นผลลัพธ์เวลา

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

กลับไปที่ Ruk-Com Cloud Dashboard และระบุเขตเวลาที่ต้องการเป็นค่าสำหรับพารามิเตอร์ date.timezone ภายในไฟล์ php.ini เช่น (Asia/Bangkok)

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

บันทึกการกำหนดค่าใหม่อีกครั้งและรีสตาร์ทPHP compute node และ refresh หน้าแสดงเวลาปัจจุบันอีกครั้ง

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เมื่อดำเนินการครบแล้วคุณจะเห็น timezone ที่เปลี่ยนแปลงสำเร็จแล้วและตอนนี้สอดคล้องกับตำแหน่งที่ต้องการแล้ว