Wednesday, November 30, 2022

Bash script monitor web site service ไม่ตอบ status 200 ให้ restart web service อัตโนมัติ

  • ประเด็นมีอยู่ว่า ระบบ web ใช้ Linux + Apache2 + PHP 7 มี client เข้าไปใช้างานเยอะ บางช่วงเวลา
  • ทำให้ server 443 ไม่ตอบสนองบางครั้ง คือ  freeze ไปเลยว่างั้น กว่าจะกลับมาทำงานปกติก็ใช้เวลานาน
  • แก้ไขเบื้องต้นคือ remote เข้าไป restart apache
  • เลยหาวิธีเขียน bash script monitor server response 200 เป็นจำนวนครั้งตามที่เราตั้งค่า ถ้าไม่ตอบ 200 ทุกครั้งก็ restart เลย
  • พร้อมเก็บ log file  และส่ง line notify พร้อม
  • ตัวอย่างนี้ เช็ค 3 ครั้งเว้น 3 วินาที ถ้าไม่ตอบ status 200 ทุกครั้ง ให้ restart apache เลย

Solved

#!/bin/bash


now=$(date)

url='https://your_site'


### admin line token

token="iFBqHnx34sHla9rAQ7Qxxxxxxxxxxxxxxxxxxxxx

message="$url >>> non response >>> /etc/init.d/apache2 restart >>> $now"


i=0

j=0


## 0,1,2

until [ $i -gt 2

do

  echo i: $i

  ((i=i+1))

  sleep 3s


  status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})

  [[ $status == 500 ]] || [[ $status == 000 ]] && ((j=j+1)) # do start/restart logic

done


echo "J: $j"


if (( $j == 3 ))

 then

    echo "J == 3"

    echo "restart ${url}: $now" >> /path/log_service_freezed.log

    curl -X POST -H "Authorization: Bearer $token" -F "message=$message" https://notify-api.line.me/api/notify

    /etc/init.d/apache2 restart

 else

    echo "J != 3"

 fi 

Ref

  • https://linuxize.com/post/bash-increment-decrement-variable/
  • https://www.cyberciti.biz/faq/linux-unix-sleep-bash-scripting/
  • https://stackoverflow.com/questions/13086109/check-if-bash-variable-equals-0

Thursday, November 24, 2022

Python : TypeError: Connection.__init__() takes 1 positional argument but 5 were given

  •  พยายามรัน python script ที่มีอยู่แล้วติดต่อฐานข้อมูล ซึ่งใช้ที่เครื่องอื่นได้ปกติ
  • แต่พอย้ายมารันอีกเครื่องติดตั้ง lib ที่จำเป็นแล้ว ได้ error งี้ซะงั้น

TypeError: Connection.__init__() takes 1 positional argument but 5 were given

Solved

  • conncetion แบบเดิม

connnection = pymysql.connect("localhost", "root", "", "dbname")

  • แก้รูปแบบ Connection ใหม่เป็น

connection = pymysql.connect(host='localhost',user='root',password='',database='db_emp',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)

Ref

  • https://stackoverflow.com/questions/66300530/typeerror-init-takes-1-positional-argument-but-5-were-given

Python3 on Ubuntu 22.04 import pymysql

  • คือใน Ubuntu 22.04 server มันลง python3 มาให้โดยค่าเริ่มต้น
  • แต่จะรัน python script ที่มีอยู่มัน ซึ่งใจ้ lib pymysql

Solved

$ sudo apt install python3-pymysql

Add

  •  อย่าลืมลง pip เอาไว้ใช้

$ sudo apt install python3-pip 


Tuesday, November 22, 2022

Install Jitsi Self host Ubuntu 22.04 Server

Prerequire

  • Nginx + https
  • ในที่นี้ผู้เขียนมี  private_key และ public_key (certificate) ที่ใช้จริงๆ อยู่แล้ว
  • แก้คอนฟิกใน Nginx รีสตาร์ท ก็ใช้งาน https ได้เลย
  • เปลี่ยน hostname เราให้เป็นชื่อที่  เหมาะสม ด้วยคำสั่ง (ใช้ meet ขึ้นต้นความหมายจะได้สื่อชัดเจน)

$ sudo hostnamectl set-hostname meet.your_domain

  • เพิม static dns เครื่อง server เรา

$ sudo nano /etc/hosts

x.x.x.x meet.your_domain

  • ปิด firewall ไว้ก่อน

$ sudo ufw disable

ติดตั้ง Library ที่จำเป็น

$ sudo apt install apt-transport-https

$ sudo apt install gnupg2

$ sudo apt install openjdk-8-jdk

ติดตั้ง Jitsi Meet

  • download และ add key ของ repo สำหรับ jitsi

$ curl https://download.jitsi.org/jitsi-key.gpg.key -o jitsi-key.gpg.key

$ sudo gpg --output /usr/share/keyrings/jitsi-key.gpg --dearmor jitsi-key.gpg.key

  • เพิ่ม repo โดยสร้างไฟล์

$ sudo nano /etc/apt/sources.list.d/jitsi-stable.list

  • เพิ่มตามบรรทัดนี้เข้าไปในไฟล์ jitsi-stable.list และบันทึกให้เรียบร้อย

deb [signed-by=/usr/share/keyrings/jitsi-key.gpg] https://download.jitsi.org stable/

  • download และ add key ของ repo สำหรับ prosody

$ curl https://prosody.im/files/prosody-debian-packages.key -o prosody-debian-packages.key

$ sudo gpg --output /usr/share/keyrings/prosody-keyring.gpg --dearmor prosody-debian-packages.key

  • เพิ่ม repo สำหรับ prosody โดยสร้างไฟล์ prosody.list 

$ sudo nano /etc/apt/sources.list.d/prosody.list

  • เพิ่มตามบรรทัดนี้เข้าไปในไฟล์ prosody.list และบันทึกให้เรียบร้อย

deb [signed-by=/usr/share/keyrings/prosody-keyring.gpg] http://packages.prosody.im/debian jammy main

  • ลบ key ที่โหลดมาออกจากเครื่องเลย หรือ จะไม่ลบก็ได้เช่นกัน

$ rm jitsi-key.gpg.key prosody-debian-packages.key

  • อัพเดท repo

$ sudo apt update

$ sudo apt install jitsi-meet

  • มันจะถามให้เราใส่ your_domain ของเรา ให้เราใส่เป็น meet.your_domain
  • จากนั้นเค้าถามเรื่อง SSL ถ้าเราใช้อันที่มีอยู่แล้วก็เลือก i want to use my own certificate (เค้าก็จะให้ใส่  พาธ private_key และ พาธ public_key (certificate) ก็ใส่ให้เรียบร้อย
  • หรือ จะสร้าง ssl ปลอมขึ้นมาใช้ก่อนก็ได้ ทำตามขั้นตอนจากอ้างอิงได้เลย
  • เสร็จสิ้นการติดตั้ง Jitsi Meet ค่าพื้นฐานสามารถใช้งานได้แล้ว
  • ทดสอบ

https://meet.your_domain

คอนฟิกให้ผู้สร้างห้องต้องใส่ username และ password ก่อน

  • แก้ไขไฟล์ /etc/prosody/conf.avail/your_domain.cfg.lau

$ sudo nano /etc/prosody/conf.avail/your_domain.cfg.lau

  • มองหาประมาณ 

authentication = "anonymous" 

  • และ แก้ไขเป็น 

authentication = "internal_plain"

  • ยังอยู่ที่ไฟล์ /etc/prosody/conf.avail/your_domain.cfg.lau เพิ่ม section ด้านล่างนี้ลงไปต่อท้ายของไฟล์

VirtualHost "guest.meet.your_domain"

    authentication = "anonymous"

    c2s_require_encryption = false

    modules_enabled = {

            "bosh";

            "ping";

            "pubsub";

            "speakerstats";

            "turncredentials";

            "conference_duration";

    }

  • ต่อไปแก้ไขไฟล์ /etc/jitsi/meet/meet.your_domain-config.js

$ sudo nano /etc/jitsi/meet/meet.your_domain-config.js

  • มองหาประมาณนี้ 

// anonymousdomain: 'guest.example.com',

  • แล้ว uncomment มันและแกไขเป็นประมาณนี้ 

anonymousdomain: 'guest.meet.your_domain',

  • สร้างไฟล์ /etc/jitsi/jicofo/sip-communicator.properties

$ sudo nano /etc/jitsi/jicofo/sip-communicator.properties

  • เพิ่มบรรทัดล่างนี้เข้าไปในไฟล์ที่เราสร้าง

org.jitsi.jicofo.auth.URL=XMPP:meet.your_domain

  • เพิ่ม userและ pass สำหรับ ใช้สร้างห้อง

$ sudo prosodyctl register user meet.your_domain password

  • restart service ที่เกี่ยวข้อง

$ sudo systemctl restart prosody.service jicofo.service jitsi-videobridge2.service

เพิ่มเติม

  • การติดตั้ง Jitsi Meet เมื่อสำเร็จเราจะได้ไฟล์ คอนฟิกของ vhost 

/etc/nginx/sites-available/meet.your_domain.conf 

  • และมีการสร้างลิ้งใน

/etc/nginx/sites-enabled/

  • ทั้ง 2 อันนี้มันจะสร้างให้อัตโนมัตินะคับ
  • โดยที่เราไม่ต้องสร้าง vhost ไว้เอง
  • แต่ยังไม่ได้ลอง openjdk ที่เวอร์ชั่นใหม่กว่า 8

Ref

  • https://ifew.medium.com/%E0%B8%97%E0%B8%B3-video-conference-%E0%B8%9F%E0%B8%A3%E0%B8%B5%E0%B9%86-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-jitsi-meet-%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%96%E0%B9%81%E0%B8%97%E0%B8%9A%E0%B9%80%E0%B8%AB%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%99-google-meet-zoom-4b7bc8d007ef
  • https://www.digitalocean.com/community/tutorials/how-to-install-jitsi-meet-on-ubuntu-22-04

Monday, November 21, 2022

Config exists ssl file for NGINX on Ubuntu 22.04

  • แก้ไขไข vhost คอนฟิก
  • ประมาณว่าเรา มี public และ private แบบ wildcard ใช้งานจริงอยู่แล้ว
  • ซึ่งปัจจุบันใช้กับ  apache อยู่ แต่อยากเอามาใช้บน nginx ด้วย

Solved

  • ไปคัดลอก  public_key และ private_key มาที่ server nginx ของเรา
  • วางไว้พาธที่เราต้องการ ในที่นี้ขอวางไว้ที่นี้แล้วกัน

/etc/nginx/ssl

  • จากนั้นเปิด vhost คอนฟิกไฟล์ขึ้นมาก

$ sudo nano /etc/nginx/sites-available/your_domain

  • เพิ่มคอนฟิกเพิ่มเติมประมาณนี้

listen 443 ssl;

......

ssl_certificate /etc/nginx/ssl/public_key.pem;

ssl_certificate_key /etc/nginx/ssl/private_key.pem;

  • เช็ค syntax nginx

$ sudo nginx -t

  • ทุกอย่างถูกต้อง restart nginx

$ systemctl restart nginx

  • คอนฟิกไฟล์จะได้ประมาณนี้

server {

listen 80;

listen 443 ssl;

server_name your_domain;

ssl_certificate /etc/nginx/ssl/public_key.pem;

ssl_certificate_key /etc/nginx/ssl/private_key.pem;


root /var/www/your_domain;

index index.html index.htm index.php;


location / {

try_files $uri $uri/ =404;

}

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;

}

location ~ /\.ht {

deny all;

}

}

Ref 

  • http://nginx.org/en/docs/http/configuring_https_servers.html

Friday, November 18, 2022

Config PHP-FPM 8.0 (PHP.INI) with NGINX on Ubuntu 22.04

$ sudo nano /etc/php/8.0/fpm/php.ini

  • แล้วแก้ คอนฟิกเหมือนกันกับที่เราแก้ของ apache นั่นแหละ 
  • หรือ 

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

  • ต่อบรรทัดสุดท้ายเพิ่มประมาณนี้ เป็นต้น

php_admin_value[memory_limit] = 512M

php_admin_value[max_execution_time] = 300

  • ทำวิธีด้านบนแล้ว restart service  2 อันนะคับ ที่ต่างจาก apache อยู่

$ sudo systemctl restart nginx

$ sudo systemctl restart php8.0-fpm

Ref

  • https://www.digitalocean.com/community/tutorials/php-fpm-nginx

Thursday, November 17, 2022

mysqldump แยก structure, function, procedure, data

structure + view + trigger

mysqldump --column-statistics=0 --no-data -B -h [host_remote] -u [user_remote] -p[pass_remote] [db_remote] > [file_export.sql]

function + procedure

mysqldump --column-statistics=0 --host=[host_remote] -B --user=[user_remote] --password=[pass_remote] --routines --no-create-info --no-data --no-create-db --skip-opt [db_remote] > [file_export.sql]

data

mysqldump --column-statistics=0 --no-create-info -B -h [host_remote] -u [user_remote] -p[pass_remote] [db_remote] > [file_export.sql]

Add

  • --column-statistics=0 ถ้า mysql server เป็นเวอร์ชั่นเดียวกัน option นี้ไม่น่าจะได้ใช้

Ref

  • https://stackoverflow.com/questions/6175473/mysql-export-schema-without-data

mysql import ข้อมูลผิดพลาด NO_AUTO_CREATE_USER

  • ปัญหาเกิดขึ้นคือ mydump ข้อมูล ออกมา จาก MySQL 5 จะ import เข้า MySQL 8 ด้วย command line
  • แต่ขึ้น error ประมาณนี้

NO_AUTO_CREATE_USER

  • ประมาณว่า MySQL 8 ไม่เปิดให้ใช้ ตั้งค่าแบบนี้ตอน import

Solved

  • แก้ไขปัญหาโดย replace string 
  • ,NO_AUTO_CREATE_USER ให้เป็นค่าว่าง แล้วค่อยสั่งนำเข้าข้อมูลอีกครั้ง
  • ด้วย bash script ก็ได้ file_bashname.sh

#!/bin/bash

file_replace="fn_mysql.sql"

search=",NO_AUTO_CREATE_USER"

replace=""

sed -i "s/$search/$replace/" $file_replace

Add

  • MySQL ฝั่ง client และ server เป็น version เดียวกัน พบปัญหานี้  เหมือนเดิม

Ref

  • https://linuxhint.com/replace_string_in_file_bash/
  • https://stackoverflow.com/questions/50336378/variable-sql-mode-cant-be-set-to-the-value-of-no-auto-create-user

mysql command import ผิดพลาด ERROR 1418 (HY000) at line 434: This function has none of DETERMINISTIC...

ERROR 1418 (HY000) at line 434: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

  • error นี้ได้มาจากใช้ mysql client เพื่อ import ข้อมูลที่ใช้ mysqldump มา โดย client เป็น MySQL 8, server ที่ไปเอาข้อมูลออกมาเป็น MySQL 5 แล้วจะนำเข้า MySQL 8

Solved

  • ที่ฝั่ง client เราไป set ค่าก่อนประมาณนี้

mysql>  SET GLOBAL log_bin_trust_function_creators = 1;


Add

  • MySQL ฝั่ง client 8.0 และ server 8.0 เป็น version เดียวกัน พบปัญหานี้  เหมือนเดิม

Wednesday, November 16, 2022

Enable mod_rewrite for Nginx on Ubuntu 22.04

  • ในที่นี้เราสร้าง vhost ใหม่ your_domain

$ sudo nano /etc/nginx/sites-available/your_domain


  • comment บรรทัดที่ 10 ดังภาพ

try_files $uri $uri/ = 404;

  • เพิ่มบรรทัดที่ 11 กรณีระบบวางภายใน web root เลย

try_files $uri $uri/ /index.php?$args;

  • หรือกรณีทำระบบวางเป็น subfolder อยากให้เป็น rewrite เราก็ใส่เป็น

try_files $uri $uri/ /subfolder/index.php?$arsg;

เพิ่มเติม

  • ไฟล์คอนฟิกเริ่มต้นจะอยู่ที่ /etc/nginx/sites-available/default
  • กรณีเรามี subfolder ใน root หลายอันที่ต้องใช้ rewrite ให้ทำประมาณนี้ก็ได้เช่นกัน
location / {
    try..... /index.php?$args;
}

location /sub1 {
    try..... /sub1/index.php?$args;
}

location /sub2 {
    try..... /sub2/index.php?$args;
}

Tuesday, November 15, 2022

Downgrade PHP8.1 to PHP8.0 for NGINX on Ubuntu 22.04

  • ปัญหาประมาณ พัฒนา project CI4 แต่มันรันได้ปกติแค่ PHP 8.0
  • server ใหม่ที่เตรียมไว้ ลง NGINX ค่าเริ่มต้น PHP 8.1 มันใช้ไม่ได้
  • ต้อง downgrade ลงมาประมาณนี้

$ sudo apt install php8.0-fpm php8.0-mysql

  • ติดตั้ง lib ที่จำเป็นก่อนเลย

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

  • เปลี่ยน PHP 8.1  เป็น 8.0

วิธีแรก (ผู้เขียนเลือกวิธีแรก)

$ sudo update-alternatives --config php


  • เลือก php version  ตามเลข ด้านหน้าแล้ว Enter

วิธีสอง

$ sudo update-alternatives -set php /usr/bin/php8.0
  • ทดสอบ php ที่ระบบหลักใช้

$ sudo php -v

เปลี่ยน คอนฟิกไฟล์ default site หรือ vhost 

$ sudo nano /etc/nginx/sites-available/your_domain

  • fastcgi_pass... php8.1 เป็น php8.0 นะคับ
fasstcgi_pass unix:/var/run/php/php8.0-fpm.sock;
  • จากนั้น restart nginx

/etc/init.d/nginx restart

  • ทดสอบรัน phpinfo  ดูเวอร์ชั่นที่ nginx ใช้ php

Ref

  • http://juuier.blogspot.com/2022/11/lemp-on-ubuntu-2204.html
  • https://opensenselabs.com/blog/tech/change-php-version-drupal-website-apache-nginx

LEMP on Ubuntu 22.04

ENV

  • Ubuntu 22.04 Server
  • UFW status is inactive

Step

$ sudo apt update

install nginx 

  • ตอนนี้มันจะได้ nginx version: nginx/1.18.0 (Ubuntu) 

$ sudo apt install nginx

$ sudo nginx -v

  • ทดสอบ

http://server_domain_or_ip

  • พาธไฟล์ root ของ nginx

/var/www/html/

install MySQL 

  • ตอนนี้มันจะได้ mysql  Ver 8.0.31-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

$ sudo apt install mysql-server

$ sudo mysql --version

install PHP สำหรับ NGINX 

  • ลง แบบ FPM และ php-mysql ค่าเริ่มต้นจะเป็นของ php8.1 นะ

$ sudo apt install php8.1-fpm php-mysql

  • ติดตั้ง lib ที่จำเป็น

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 

  • ทดสอบรัน PHP บน NGINX ของเราโดย สร้างไฟล์ info.php ก่อน

$ nano /var/www/html/info.php

  • แก้ไขคอนฟิก default ให้รัน php ได้ซะก่อน (ก่อนแก้ไขอย่าลืมสำรองไฟล์ไว้ก่อน)
$ sudo nano /etc/nginx/sites-available/default

  • เปิด comment ที่เค้า comment เกี่ยวกับการเปิดใช้งาน php ไว้ หรือ เพิ่ม คอนฟิกประมาณนี้ 

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}

location ~ /\.ht {
deny all;
}
  • โดยใส่โค้ดแบบนี้

<?php phpinfo(); ?>

  • ทดสอบ ถ้าสำเร็จ info จะมี  หัวข้อ PDO, และ MySQLi คือ lib mysql สำหรับ php ใช้ด้วยกันได้ ถ้าไม่มี หัวข้อ MySQLi แสดงว่า php-mysql เวอร์ชั่นไม่ตรงกันจึงใช้ไม่ได้

http://server_domain_or_ip/info.php
สร้าง virtual host สำหรับ nginx

$ sudo mkdir /var/www/your_domain

$ sudo chown -R $USER:$USER /var/www/your_domain

$ sudo nano /etc/nginx/sites-available/your_domain

  • ใส่เนื้อหาประมาณนี้

  • จากนั้นเปิดใช้งาน virtual host config ไฟล์อันนี้
$ sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled

  • ปิด host default

$ sudo unlink /etc/nginx/sites-enabled/default

  • *** ถ้าต้องการเอา vhost default กลับ

$ sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled

  • ทดสอบ syntax config site ถูกต้อง

$ sudo nginx -t

  • restart nginx

$ sudo /etc/init.d/nginx [reload|restart] หรือ $ sudo systemctl [reload|restart] nginx

  • ตอนนี้ root vhost ใหม่เราจะอยู่ที่ประมาณนี้ เอาไฟล์ php ไปรันได้เลย

/var/www/your_domain

Add

  • ถ้าต้องการใช้ php8.0 ตั้งแต่เริ่มให้ add repo แล้ว update ก่อน

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

$ sudo apt update

  • เราสามารถกำหนดให้ vhost แต่ละอันใช้ php เวอร์ชั่นต่างๆ ได้ตามต้องการ 
  • แค่เราลง php เวอร์ชั่นที่เราต้องการเพิ่มใน server เครื่องนั้น และ คอนฟิก vhost 
  • fastcgi_... /php8.1-fpm.sock; เปลี่ยนเป็น เวอร์ชั่นที่เราลงเพิ่ม แล้ว restart nginx ซักรอบ

Ref

  • https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-22-04

Thursday, November 10, 2022

mysqldump: Couldn't execute 'SELECT COLUMN_NAME_ _ _ _ _ Unknown table 'COLUMN_STATISTICS' in information_schema (1109)

  • จะสำรองข้อมูล MySQL บน Server 
  • รันคำสั่งจาก client
mysqldump -h host -u user -p dbname > dbname.sql
  • มันขึ้นประมาณนี้
mysqldump: Couldn't execute 'SELECT COLUMN_NAME_ _ _ _ _ Unknown table 'COLUMN_STATISTICS' in information_schema (1109)
Solved
  • เพิ่ม option นี้ --column-statistics=0 เข้าไปในคำสั่ง
mysqldump --column-statistics=0 -h host -u user -p dbname > dbname.sql
Ref
  • https://skillsenrich.blogspot.com/2019/08/mysqldump-couldnt-execute-select.html

Ubuntu 22.04 add shared print from Printer Server (Rasbery Pi)

  • EPSON L3110
  • Ubuntu 22.04  Desktop 64bit เราจะเพิ่มปริ้นเตอร์ที่ถูกแชร์แบบ Print server โดย Rasbery Pi ไว้แล้ว

Solved

  • ไปดาวนโหลดและติดตั้ง driver ซะก่อน
  • https://download.ebz.epson.net/dsc/search/01/search/searchModule
  • โหลดของ 64 bit ได้ประมาณ .deb ทำการติดตั้งด้วยคำสั่งประมาณนี้

  • sudo dpkg -i xxx.deb หรือ sudo apt install ./xxx.deb
  • driver พร้อมในเครื่องแล้ว ให้เราเปิด Setting ของระบบขึ้นมา 
  • panel ด้านซ้ายเลือก Printers
  • จากนั้นเลือก Additional Printer Settings...
  • และกดปุ่ม + Add

  • จากนั้นจะได้หน้าต่างใหม่ panel ซ้ายเลือก Find Network Printer
  •  ช่อง Host ให้เราใส่ IP ของ เครื่อง Printer server จากนั้น กดปุ่ม Find

  • ถ้าเครื่องนั้นมีการแชร์ปริ้นไว้ จะเห็นรายชื่อที่แชร์ไว้ ให้เราเลือก printer ที่เราต้องการใช้งาน
  • และกดปุ่ม Forward

  • ใส่ Printer Name ตามที่เราต้องการได้เลย (ใส่เป็นชื่อรุ่นปริ้นเตอร์ไปเลยน่าจะดี)
  • จากนั้นกดปุ่ม Apply
  • ถ้าทุกอย่างเรียบร้อย มันจะแสดงประมาณนี้เลย (แต่ถ้ามีปัญหายังไม่ลง driver ในขั้นตอนก่อนหน้า มันจะขึ้นไปเลือก driver ประมาณนั้น)

Ref
  • https://askubuntu.com/questions/1250554/epson-l3110-on-ubuntu-20-04-lts

ปัญหาของ Shutter บน Ubuntu 22.04 กับ Wayland session

  • ใช้ใน Ubuntu ก่อนเวอร์ชั่นนี้มาตลอดค่อนข้างโอเค
  • แต่ไง๋พอเราจะใช้ใน Ubuntu 22.04 มันติดตั้งได้ปกติ

sudo apt install shutter

sudo apt remove --autoremove shutter 

  • แต่จะใช้ปุ่ม selection มัน disable ซะงั้น เวลาจะใช้ทีต้องเปิดผ่าน sudo จึงจะได้ selection ได้ ซึ่งไม่ค่อยสะดวกที่เคยว่า user ปกติก็ใช้ได้

Solved

  • อ้างอิงบอกว่า Shutter so far does not support Wayland session ซะงั้น
  • อีกนานว่างั้น 
  • Logout ออกจาก session ปัจจุบัน ที่เป็น wayland จากนั้น Login ใหม่โดยเลือกประมาณ Unity หรือ Ubunbtu.Xorg ประมาณนี้
  • เพียงเท่านี้เราก็ใช้ Shutter ได้เต็มที่เหมือนเคยแล้ว

Ref

  • https://fostips.com/install-shutter-ppa-ubuntu-20-10/