Tuesday, August 30, 2022

Gedit กับ file ภาษาไทย Ubunut 22.04

  • ประเด็นมีอยู่ว่า ได้รับไฟล์ file.txt จากระบบ Line app
  • เค้าพิมพ์ไทยมา แต่เปิดอ่านเป็นภาษาต่างดาวซะงั้น

  • ไฟล์ต้นทางเค้าน่าจะสร้างไฟล์โดยการเข้ารหัส TIS-620 มา แล้วส่งถึงเรา

Solved

$ gedit --encoding=TIS-620 file.txt

  • จากนั้น save as เป็นไฟล์ใหม่ เลือกเข้ารหัส UTF-8 นะ

Friday, August 26, 2022

ว่าด้วยเรื่อง crontab ทำงานทุกๆ 5 นาที และมันไม่ทำงาน ที่ 23:59

  • Ubuntu 18.04
  • ใช้คำสั่งฝังใน crontab ณ เวลา 23:59 มันไม่ทำงาน
  • เปลี่ยนไปรันที่  06:08 มันทำงานเฉย งง ล่ะสิคับ
  • หรือ เราจัดงานให้ ณ เวลานั้น หลายงาน ทำให้บางงานไม่ทำงานหรือป่าวไม่แน่ใจ
เพิ่มเติม
  • Execute a cron job every 5 Minutes
*/5 * * * * /home/ramesh/backup.sh
  • Execute a cron job every 5 Hours
0 */5 * * * /home/ramesh/backup.sh
  • Execute a job every 5 Seconds
  • Create a shell script every-5-seconds.sh using bash while loop as shown below.
$ cat every-5-seconds.sh
#!/bin/bash
while true
do
 /home/ramesh/backup.sh
 sleep 5
done
Ref
  • https://www.thegeekstuff.com/2011/07/cron-every-5-minutes/#:~:text=Cron%20job%20cannot%20be%20used,sleep%205'%20command%20in%20it.

Friday, August 19, 2022

Change timezone on Ubuntu 22.04

  • ดูวัน/เวลาปัจจุบันก่อน Set Time Zone

$ date 

  • ดูว่าปัจจุบันเครื่องใช้ Time Zone อะไร

$ timedatectl 

  • ดูว่าเราสามารถเปลี่ยน Time Zone เป็นอะไรได้บ้าง

$ timedatectl list-timezones

  • เปลี่ยน Time Zone ตามที่อยากจะให้เป็น

$ timedatectl set-timezone Asia/Bangkok

  • ตรวจสอบ Time Zone เครื่องอีกครั้ง

$ timedatectl 

ปัญหาที่เจอถ้าเราไม่ดูแลเรื่องนี้

  • ตอนเขียน PHP ปริ้น เวลาออก มามันจะใช้ timezone ของ  OS
  • ซึ่งถ้าเราไม่เปลี่ยน timezone ให้ถูกต้อง เวลาคำนวนเรื่องเวลาจะเพื้ยนไปหมด
  • วิธีแก้เบื้องต้น กำหนดค่าในโค้ด php  ให้ใช้ timezone ที่ถูกต้อง หรือ แก้ไข php.ini
  • หรือแก้ที่ Host OS เลยด้วยคำสั่ง timedatectl
*** เพิ่มเติม กรณี sync แล้วแต่เพี้ยน
  • ปิด sync $ sudo timedatectl set-ntp no
  • และตั้งเองเลย
$ sudo timedatectl set-time 15:30:00
$ sudo timedatectl set-time 2019-04-25

Ref

  • https://www.jittagornp.me/blog/set-timezone-for-ubuntu20.04/
  • https://phoenixnap.com/kb/how-to-set-or-change-timezone-date-time-ubuntu

barrier on Ubuntu 22.04 LTS (Jammy Jellyfish)

Install

$ sudo apt update

$ sudo apt install barrier

Remove

$ sudo apt remove barrier

$ sudo apt remove barrier

Ref

  • https://linux-packages.com/ubuntu-jammy-jellyfish/package/barrier

รื้อ Rsync ซะหน่อย

Env

  • Server Ubuntu18.04
  • Client Ubuntu 22.04

Pattern basic

$ rsync -av -e ssh /src/ user@remote:/path/to/dst

  • ในที่นี้ เครื่อง client จะรันคำสั่ง rsync  เพื่อ backup file จาก server ลงมา client

# rsync -av -e ssh user@remote:/path/from/source_folder /local/path/destination_folder

  • ในกรณีเราจะเอาไฟล์จาก client ขึ้นไปวางบน server แต่ใช้คำสั่งจาก client 

# rsync -av -e ssh /local/path/source_folder user@remote:/path/from/destination_folder 

  • กรณีใช้ private key authen

 # rsync -av -e "ssh -i /path/private_key" user@remote:/path/from/source_folder /local/path/destination_folder

  • กรณีเปลียน port remote

 # rsync -av -e 'ssh -p 2200' user@remote:/path/from/source_folder /local/path/destination_folder

Ref

  • https://linuxconfig.org/using-rsync-over-ssh-an-ultimate-backup-tool

Install LAMP Ubuntu 22.04 Server (Normal type install)

 ติดตั้ง PHP8.1

$ sudo apt update

$ sudo add-apt-repository ppa:ondrej/php

$ sudo apt update

$ sudo apt install php8.1

  • คำสั่งด้านบน มันจะติดตั้ง apache2 และ package เพิ่มเติมที่เราน่าจะได้ใช้ใหัอัตโนมัติ ดังนี้ 

apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php8.1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap php-common php8.1-cli php8.1-common php8.1-opcache php8.1-readline

  • ลง php module ที่เกี่ยวข้องเพิ่มเติม

$ sudo apt install php8.1-bcmath php8.1-bz2 php8.1-curl php8.1-intl php8.1-mbstring php8.1-mysql php8.1-readline php8.1-xml php8.1-zip php8.1-gd php8.1-gmp

ติดตั้ง Apache2

  • เพื่อให้ชัวร์ สั่งติดตั้ง ด้วยคำสั่ง (มันจะถูกติดตั้งให้อัตโนมัติ ตั้งแต่เราลง php8.1 แล้ว)

$ sudo apt install apache2 libapache2-mod-php8.1 -y

ติดตั้ง MySQL Server

$ sudo apt install mysql-server

  • ถ้าต้องการตั้งความปลอดภัยให้ MySQL เริ่มต้น ใช้คำสั่งด้านล่าง (แต่ส่วนตัวไม่ชอบใช้คับ)

$ sudo mysql_secure_installation

  • เข้าใช้งาน mysql client และ เพิ่ม new_user ให้สิทธิ์ เท่า root ของ mysql เลย (เราไม่ต้องไปยุ่งกับ  root mysql เลย)

$ sudo mysql

> CREATE USER 'new_user'@'%' IDENTIFIED BY 'new_user_password';

> grant all privileges on *.* to 'new_user_name'@'%' with grant option;

> FLUSH PRIVILEGES;

  • สุดท้าย restart apache2 ซะหน่อย

$ sudo systemctl restart apache2

  • สร้างไฟล์ .php ทดสอบ Apache2 + PHP บน server

# echo "<?php phpinfo(); ?>" >> /var/www/html/phpinfo.php

  • รันทดสอบ

http://ip-host/phpinfo.php

Ref

  • https://linuxhint.com/set-up-lamp-stack-ubuntu-22-04/
  • https://juuier.blogspot.com/2021/09/create-set-permission-for-user-mysql.html
  • https://juuier.blogspot.com/2021/06/update-to-php-74-on-ubuntu-1804.html