วันศุกร์ที่ 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/