วันอาทิตย์ที่ 24 พฤศจิกายน พ.ศ. 2562

DSpace CRIS แก้ DC Type ที่เป็น All Theses ขึ้น ???

ข้อมูลจาก: DSpace Tech Support



เมื่อทำการทดสอบใช้งาน DSpace CRIS หลังจากติดตั้งไปสักพัก เมื่อทำการเพิ่ม Item แล้วเลือก DC Type เป็น Theses เราจะพบว่าหน้าแรกที่ใช้สรุปว่ามี Item ประเภทไหนบ้าง เราจะเจอความผิดพลาดที่ว่า All Theses หาข้อความไม่เจอ

วันศุกร์ที่ 22 พฤศจิกายน พ.ศ. 2562

PHP ปรับค่า File Upload และค่า Timeout

ข้อมูลจาก: Sitepoint | A2Hosting | Strackoverflow | Mediatemplate

แก้ไขไฟล์ "php.ini" ใน "etc/php/5.6/apache2/php.ini" เสร็จแล้วให้ Restart Apache2
# รองรับการอัพโหลดไฟล์ที่ 300MB
upload_max_filesize = 300M

# รองรับการส่งไฟล์ผ่าน POST ที่ 300MB
post_max_size = 300M

# เพิ่มเวลาในการ Execution และ Input เป็น 600 วินาที
max_execution_time = 600
max_input_time = 600

# เพิ่มหน่วยความจำให้ PHP
memory_limit = 512M

วันเสาร์ที่ 16 พฤศจิกายน พ.ศ. 2562

[Linux Container] - เปิดใช้ SSH ใน Linux Container

# Install OpenSSH Server
apt install openssh-server

# adduser 
adduser sarankon

# usermod -aG  
usermod -aG sudo sarnakon

แก้ไข Config File ที่ "/etc/ssh/ssh_config" โดยเปิด PasswordAuthentication yes
Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
    PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0


แก้ไข Config File ที่ "/etc/ssh/sshd_config" โดยเปิด PasswordAuthentication yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
systemctl restart ssh

วันอาทิตย์ที่ 10 พฤศจิกายน พ.ศ. 2562

การติดตั้ง DSpace CRIS 5 ใน Ubuntu 18.04

การเตรีมเครื่องติดตั้ง DSpace CRIS 5 เราจะทำตามขั้นตอนตามเว็บ โดยปัญหาที่เจอคือ OpenJDK เป็น Version 11 จะไม่สามารถใช้ Maven สั่ง Package ได้ให้เราทำการ ลง OpenJDK เป็น Version 8 ก่อนแล้วทำการติดตั้ง Maven ที่หลัง เพราะหากทำการติดตั้ง Maven ก่อนจะเป็นการเลือกเอา OpenJDK Version ล่าสุดมา
แล้วทำไมต้องใช้ OpenJDK Version 8 ? คือว่า Maven ตอนที่เราสั่ง Package มันจะต้องใช้ไฟล์ tools.jar ในของ Java ที่อยู่ใน Folder /lib/ ใน Java ซึ่งใน OpenJDK Version 9 ขึ้นไปจะไม่มีแล้ว อันนี้เราไม่รู้นะว่าทำไม ?
sudo apt install openjdk-8-jdk
sudo apt install ant git maven 

เสร็จแล้วก็ทำการลง Tomcat8 และ PostgreSQL แล้วทำการตั้งค่าตาม Manual แต่ Command อาจไม่ตรงตามนั้นแต่ก็ได้เหมือนกัน
sudo apt install tomcat8 postgresql postgresql-contrib

เมื่อเตรีมเครื่องพร้อมแล้วก็ทำตามขั้นตอนได้
การติดตั้ง PostgreSQL อ่านที่นี้, การติดตั้ง DSpace CRIS

วันจันทร์ที่ 4 พฤศจิกายน พ.ศ. 2562

การเพิ่ม Admin และเพิ่ม Printer สำหรับ CUPS (Printer Server)

ข้อมูลจาก https://help.ubuntu.com/lts/serverguide/cups.html


การเพิ่ม Admin

เมื่อต้องการเพิ่ม Admin Account ให้ใช้คำสั่ง "sudo usermod -aG lpadmin [username]"
แล้วให้ทำการ Restart CUPS 1 ครั้ง จากนั้นเวลาใช้ให้เข้าผ่าน Protocal "https://" ไปที่ Administrator
เมื่อกดใช้ Function ต่างๆ ก็จะมี Pop-Up ขึ้นมาถาม Username กับ Password
#sudo usermod -aG lpadmin [username]
sudo usermod -aG lpadmin sarankon


วันอังคารที่ 1 ตุลาคม พ.ศ. 2562

Python 3 และ Flask พื้นฐาน

เมื่อปีก่อนเราใช้ Raspberry Pi Zero W เป็นเครื่อง Host เพื่อทำระบบ POS (Point of Sell) ใช้เองที่ร้าน โดยตัวระบบเขียนเป็นภาษา Python 3 โดยใช้ Framework Flask ซึ้งใช้งานง่ายมาก แต่ก็มีปัญหาเรื่องการ Deploy เพราะไม่ได้ศึกษาการ Deploy จริง ๆ จัง ๆ ตอนนี้ถึงเวลาที่ต้องมาทำการ Update ตัวระบบ POS ของตัวเอง ก็ลังเลอยู่นานว่าจะย้ายไป Django ดีไหม แต่ก็สรุปคือไม่ย้ายและต้องเอาของที่ทำอยู่แล้วมาแก้ เลยเป็นที่มาของหัวข้อในตอนนี้ Python 3 และ Flask ...

การติดตั้ง Python 3 และ Virtual Environment

sudo apt install python3 python3-venv

การอัพเดต PIP 3 version

python3 -m pip install --upgrade pip

การสร้าง Virtual Environment

python3 -m venv [environment-name]

การ Active ให้เราสั่ง source /bin/activate และ การ Deactivate เมื่ออยู่ใน venv แล้วให้พิมพ์ deactivate
source [environment-name]/bin/activate
deactivate

การจัดการ Package

pip3 search [package-name]
pip3 install [package-name]
pip3 install [package-name]==[version=number]
pip3 install --upgrade [package-name]

pip3 show [package-name]
pip3 uninstall [package-name]

pip3 list
pip3 freeze
pip3 freeze > requirement.txt
pip3 install -r requirement.txt

วันศุกร์ที่ 30 สิงหาคม พ.ศ. 2562

ตั้งค่า Network โดยใช้ "netplan" บน Ubuntu 18.04

คำสั่งไม่ยุ่งยาก แค่ 3 คำสั่ง ถ้าใครลง Ubuntu 18.04 ก็ข้าม "netplan generate" ได้เลย
sudo netplan generate

# แก้ไขไฟล์
sudo nano /etc/netplan/50-cloud-init.yaml

# สั่งให้ใช้ค่าใหม่
sudo netplan apply

ตัวอย่างที่ผมใช้เป็นประจำ
network:
    ethernets:
        ens3:
            addresses:
            - 10.1.4.137/24
            gateway4: 10.1.4.254
            nameservers:
                addresses:
                - 192.168.1.3
                - 8.8.8.8
            routes:
            - to: 10.0.0.0/8
              via: 0.0.0.0
        ens4:
            addresses:
            - 192.168.0.137/24
            gateway4: 192.168.0.254
            nameservers:
                addresses:
                - 192.168.1.3
                - 8.8.8.8
    version: 2

วันพุธที่ 28 สิงหาคม พ.ศ. 2562

Install PHPMyAdmin Manual

ก่อนที่จะทำการดาวโหลด์ PHPMyAdmin ไฟล์ลงมาติดตั้งเอง ให้เราทำการติดตั้งตัว Unzip ก่อน
sudo apt install unzip

ให้เราย้ายไปอยู่ที่โฟลเดอร์ /usr/share ก่อนดาวโหลด์ (ถ้าลง PHPMyAdmin ผ่าน apt ก็จะมาอยู่ที่นี่เหมือนกัน)
จากนั้นทำการดาวโหลด์ไฟล์ phpMyAdmin-4.9.0.1-all-languages.zip จากเว็บไซต์ https://phpmyadmin.net
cd /usr/share
sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

# If Error Use This !
# sudo wget http://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

เสร็จแล้วแตกไฟล์ออกจาก zip และเปลี่ยนชื่อโฟลเดอร์เป็น phpmyadmin เพื่อให้ง่ายต่อการใช้งาน
แล้วทำการเปลี่ยนเจ้าของและสิทธิ์การใช้งาน
sudo unzip phpMyAdmin-4.9.0.1-all-languages.zip

sudo mv phpMyAdmin-4.9.0.1-all-languages.zip phpmyadmin
sudo rm phpMyAdmin-4.9.0.1-all-languages.zip

sudo chown -R www-data: phpmyadmin
sudo chmod -R 744 phpmyadmin

เปิดไฟล์ Config และแก้ไขจากไฟล์ตัวอย่างที่มีมาให้
sudo cp phpmyadmin/config.sample.inc.php phpmyadmin/config.inc.php
sudo nano phpmyadmin/config.inc.php

วันจันทร์ที่ 26 สิงหาคม พ.ศ. 2562

Install PHP5 and PHP7 on Ubuntu 18.04

การติดตั้ง PHP5 บน Ubuntu 18.04 นั้นเราไม่สามารถใช้ Package Repository ที่มากับ Ubuntu 18.04 ได้
อย่างตอนที่ผมลง Ubuntu 18.04 เราจะได้ PHP ที่เป็น เวอร์ชั่นค่อนข้างใหม่คือ PHP 7.2
เราเลยจำเป็นต้องเพิ่ม Package Repository อีกตัวเขาไปเพื่อให้เราสามารถติดตั้ง PHP5 ได้

ให้เราทำการเพิ่ม Repository "ppa:ondrej/php"

วันอาทิตย์ที่ 4 สิงหาคม พ.ศ. 2562

[Linux Container] - Container Device / Proxy Device

Proxy Device ! ใช้สำหรับการ Bind Port เพื่อให้เข้าไปยัง Container ได้ โดยเริ่มแรกที่เราใช้ Container นั้น
ตอนนั้นเรายังไม่รู้จัก เราก็ใช้ iptables ไปก่อน ก็ใช้งานได้นะ แต่ยังติดที่ว่า Port 21 กับ Port 22 ใช้ไม่ได้
และ iptables ตอนนั้นเราก็ยังไม่ได้ Save Config พอเครื่อง Server Restart ก็เจอปัญหาว่ามันลืมค่า

ตอนนี้เราจะมาดูกันว่า เวลาที่เราจะเปิดให้ข้างนอกเข้ามา Container ได้โดยใช้ Proxy Device นั้นทำยังไง
และจะลองทดสอบ Port ที่ใช้ทำ SSH ด้วยว่าใช้งานผ่าน Proxy Device ได้ไหม ? ปกติ Container เข้าไม่เปิด
การใช้งาน SSH เข้าไปใน Container

การเพิ่ม Proxy Device

ข้อมูลอ้างอิงจาก : https://lxd.readthedocs.io/en/latest/containers/
# listen ให้รอรับข้อมูลทางไหน ส่วนใหญ่ก็จะเป็น 0.0.0.0:80
# connect ให้ต่อเข้ากับช่องทางไหน ก็จะเป็น 127.0.0.1:80 
# type คือ Connection Type ก็พวก TCP, UDP

lxc config device add <container-name> <device-name> proxy \
  listen=<type>:<address>:&ltport> connect=<type>:<address>:<port>

# listen จะเป็น Port ของ Host
# connect จะเป็น Port ของ Container

# คำสั่งที่ใช้ในการลบ Config ออก
lxc config device remove <container-name> <device-name>

# ตัวอย่างการใช้
lxc config device add ubuntu-80 ubuntu-device-80 proxy \
  listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80

วันศุกร์ที่ 2 สิงหาคม พ.ศ. 2562

[Linux Container] - Storage Pool & LXC Storage

เรื่องของพื้นที่ เราจำได้ว่าครั้งนั้นเราทำพลาดที่ไม่ได้คิดว่า Storage นั้นจะโตขึ้นเรื่อยๆ และยังไม่ได้ศึกษาให้ดีก่อนการใช้งาน
และในที่สุดเราก็เจอปัญหาจากการที่ Container ใช้งาน Storage จนเต็มแล้วเราเองก็ขยายมันไม่เป็นเลยทำให้ต้องไปหาข้อมูลเพิ่ม
แล้วนำมาเขียนเก็บไว้ในตอนนี้ เรื่องของ Storage Pool กับ Linux Container

เราคิดว่า Storage Pool นั้นสำคัญเพราะเป็นพื้นที่ใช้งานหลักของ Container เลย และบางส่วนก็จะต่อออกไปที่ Host เพิ่มด้วย
Storage จะติดอยู่กับ Profile หนึ่งตัวในตอนที่เรา LXD Init ครั้งแรกนั้นเอง จากที่หาข้อมูล จะมีการแนะนำว่าให้ใช้ btrfs และ zsf

"Recommended setup : The two best options for use with LXD are ZFS and btrfs."
อ้างอิงจาก : https://lxd.readthedocs.io/en/latest/storage/
ข้อมูลเพิ่มเติม : https://medium.com/life-at-dek-d/


วันอาทิตย์ที่ 28 กรกฎาคม พ.ศ. 2562

ลองใช้งาน Jenkins ไว้ Backup ข้อมูลแบบอัตโนมัติ

Jenkins เป็น Automate ที่ช่วยทำเกี่ยวกับ Software เช่นการ Build, Test, Deliver แล้วก็ Deploy
แต่ความคิดที่จะใช้งานครั้งนี้คือเอามา Backup ระบบ ลองดูว่าจะสามารถใช้งานได้ดีไหม และเหมาะสมไหม



Install Jenkins

เริ่มด้วยการติดตั้งกันก่อน Jenkins ทำงานอยู่บน Java เราจำเป็นต้องติดตั้ง Java กันก่อน
ตอนนี้ผมใช้ OpenJDK 8 ในการรัน Jenkins | ข้อมูลจาก Jenkins - Getting Started
sudo apt install openjdk-8-jdk

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
java -jar jenkins.war --httpPort=8080

# เราจะเห็นรหัส สำหรับใช้ในการ Login เพื่อเข้าไปทำการติดตั้งในหน้าเว็บต่อ

จากนั้นเข้าไปที่เครื่องโดยผ่าน Port 8080 ตามที่เรากำหนดไว้เพื่อทำตามขั้นต่อการติดตั้งต่อ
ให้เราใช้รหัสที่ได้จาก Console ตอนที่เราใช้คำสั่ง "java -jar jenkins.war --httpPort=8080"