วิธีติดตั้ง LAMP บน Raspberry Pi


LAMP = Linux, Apache, MySQL, PHP เป็นกลุ่มซอฟท์แวร์ที่เหมาะสำหรับใช้ในการพัฒนาเวบ ในหัวข้อนี้เราจะติดตั้งกลุ่มซอฟท์แวร์นี้ลงบน Raspberry Pi ซึ่งมีการติดตั้ง Raspbian (หรือ Raspberry pi OS) ไว้เรียบร้อยแล้ว

ขั้นตอนการติดตั้ง LAMP ในที่นี้จะทำผ่านทาง terminal หรือผ่าน SSH เข้าไปที่ตัว Raspberry Pi

1. Update และ Upgrade ตัว Raspberry Pi ก่อน

ใช้คำสั่งดังนี้ ทำการอัพเดท และอัพเกรดตัว Raspberry Pi ก่อนทำการติดตั้งซอฟท์แวร์อะไรใหม่

sudo apt update && sudo apt upgrade -y

2. ติดตั้ง Apache2

ทำการติดตั้ง Apache2 เพื่อไว้ใช้เป็น Web server ซึ่งจะเป็นตัวจัดการการร้องขอการเข้าถึงหน้าเวบต่างๆ โดยใช้คำสั่งดังนี้

sudo apt install apache2 -y

หลังจากนั้น ทำการทดสอบการติดตั้ง Apache2 ดูว่าใช้งานได้หรือไม่ โดยไปที่ไดเรคตอรี่ /var/www/html แล้วลิสต์ไฟล์ที่มีอยู่ขึ้นมา

cd /var/www/html
ls -la

จะพบไฟล์ชื่อ index.html ปรากฎอยู่ ให้เปิดเบราเซอร์เข้าไปที่ ip ของ Raspberry Pi ก็จะปรากฎหน้าเวบ Apache2 Debian Default Page ขึ้นมาตามภาพด้านล่างนี้

ปล. หากไม่ทราบ ip ของตัว Raspberry Pi ให้ใช้คำสั่งด้านล่างนี้เพื่อแสดง ip ออกมา

hostname -I

3. ติดตั้ง PHP

PHP เป็นภาษาสคริปที่ใช้รันบนฝั่งเซิร์ฟเวอร์ นิยมใช้ในการสร้างเวบแอพพลิเคชั่นหรือหน้าเวบที่เปลี่ยนแปลงไปตามเงื่อนไขต่างๆได้ การติดตั้ง PHP ให้ใช้คำสั่งดังต่อไปนี้

sudo apt install php -y

หลังจากติดตั้งแล้ว สามารถทดสอบการติดตั้ง PHP ได้โดยการสร้างไฟล์ index.php ง่ายๆขึ้นมา (อาจจะลบไฟล์ index.html ออกไปก่อน หรือเปลี่ยนชื่อไปเป็นชื่ออื่นก็ได้) ดังนี้

sudo rm index.html
sudo nano index.php

แล้วพิมพ์บรรทัดคำสั่งนี้ลงไป แล้วบันทึกและออกจาก nano editor

<?php echo "Hello PHP world"; ?>

แล้วเริ่มตัว Apache2 service ใหม่ ด้วยคำสั่งต่อไปนี้

sudo service apache2 restart

ถึงตอนนี้ หากเปิดเบราเซอร์เข้าไปที่ ip ของ Raspberry Pi หน้าเวบก็จะเปลี่ยนเป็นตามภาพด้านล่างนี้

4. ติดตั้ง MySQL (MariaDB Server)

ใช้คำสั่งต่อไปนี้ เพื่อติดตั้ง MySQL Server และแพคเกจ PHP-MySQL

sudo apt install mariadb-server php-mysql -y

เมื่อติดตั้ง MySQL Server แล้วก็ต้องเริ่ม Apache2 service ใหม่เพื่อใช้การติดตั้งมีผลกระทบ

sudo service apache2 restart

5. เพิ่มความปลอดภัยให้กับ MySQL

หลังจากติดตั้ง MySQL เสร็จใหม่ๆ ยูสเซอร์ root จะยังคงไม่มีพาสเวิร์ด (พาสเวิร์ดเป็น blank) เพื่อความปลอดภัย จึงควรตั้งพาสเวิร์ดใหม่ให้กับ root โดยใช้คำสั่งดังนี้

sudo mysql_secure_installation

จากนั้นให้ตอบคำถามดังต่อไปนี้

  • Enter current password for root: ให้ตอบ Enter (เริ่มต้นไม่มีพาสเวิร์ด)
  • กด Y และ Enter เพื่อเซ็ท root password ใหม่
  • ป้อนพาสเวิร์ดใหม่สำหรับ root (ป้อน 2 ครั้ง)
  • ตอบ Y เพื่อลบ anonymous users
  • ตอบ Y เพื่อห้าม root login remotely
  • ตอบ Y เพื่อลบ test database
  • ตอบ Y เพื่อ reload privilege tables now

ถึงตอนนี้ Database และ MySQL ก็ไม่สามารถเข้าถึงได้โดยไม่มีการป้องกันแล้ว

6. สร้าง User และ Password ไว้สำหรับใช้กับ phpMyAdmin

เมื่อติดตั้ง phpMyAdmin อาจจะมีปัญหาในการเข้าล็อกอิน phpMyAdmin จึงควรสร้างยูสเซอร์และพาสเวิร์ดไว้สำหรับใช้กับ phpMyAdmin โดยใช้คำสั่งต่อไปนี้

sudo mysql --user=root --password

แล้วป้อนพาสเวิร์ดของ root ตามที่ตั้งในข้อ 5 แล้วใช้คำสั่งต่อไปนี้สร้างยูสเซอร์ใหม่

> CREATE USER admin@localhost IDENTIFIED BY 'your_password';
> GRANT ALL PRIVILEGES ON *.* TO admin@localhost;
> FLUSH PRIVILEGES;
> exit;

7. ติดตั้ง phpMyAdmin

ใช้คำสั่งต่อไปนี้ติดตั้ง phpMyAdmin

sudo apt install phpmyadmin -y

หลังจากนั้น ตอบคำถามตามนี้

  • เลือก Apache2 (เคาะ space bar) แล้วกด Enter หรือคลิก OK
  • Configure database for phpmyadmin with dbconfig-common? ตอบ Yes
  • ป้อนพาสเวิร์ด (ตามที่ตั้งในข้อ 6) แล้วกด OK และคอนเฟิร์มพาสเวิร์ดอีกครั้ง

8. Enable PHP MySQLi extension

หลังจากติดตั้ง phpMyAdmin แล้ว ให้ Enable PHP MySQLi extension แล้วเริ่ม Apache2 service ใหม่

sudo phpenmod mysqli
sudo service apache2 restart

9. เพิ่ม Link ให้กับ phpMyAdmin

ทดสอบการเปิด phpMyAdmin โดยเข้าเบราเซอร์ด้วย ip ของ Raspberry Pi ตามด้วย /phpmyadmin หากขึ้นหน้าเวบว่า Not Found ให้ย้ายไดเร็คตอรี่ phpmyadmin ไปไว้ที่ /var/www/html แล้วใช้คำสั่งเพิ่ม link ตามนี้

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

แต่ถ้าเปิดเข้า phpMyAdmin ได้แล้ว ก็ไม่ต้องย้ายไดเรคตอรี่ แต่ให้เพิ่มบรรทัดลงไปในไฟล์ apache2.conf ตามนี้

sudo nano /etc/apache2/apache2.conf

เพิ่มบรรทัดนี้ลงไปด้านล่างสุดของไฟล์ แล้ว save และออกจาก Editor (กด Ctrl+x แล้วตอบ Yes แล้วกด Enter)

Include /etc/phpmyadmin/apache.conf

จากนั้นเพิ่ม link ตามนี้

sudo ln -s /usr/share/phpmyadmin /var/www/html

10. ขั้นตอนเพิ่มเติม (Optional but recommended)

ควรเปลี่ยนการอนุญาตการเข้าไปที่ไดเร็คตอรี่ /var/www/html ใหม่ตามนี้

ls -lh /var/www/
sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
ls -lh /var/www/

Share this

Setting Up Connection Profile To Deploy Delphi App to CentOS Server


ในการพัฒนาแอพพลิเคชั่นบน Delphi เพื่อส่งไปทำงานในฝั่ง Server (โดยมากก็มักจะเป็นแอพพลิเคชั่นประเภท web server, web service) ที่เป็น Linux based ซึ่งในที่นี้คือ CentOS 7 64bit นั้น จำเป็นจะต้องติดตั้ง SDK ลงบนเครื่องที่ใช้พัฒนาโปรแกรม Delphi ก่อน และสร้าง Connection profile ไว้ให้ Delphi รู้จัก

วิธีการคร่าวๆ จะเป็นดังนี้

  1. ก็อปปี้ไฟล์ PAServer22.0.tar.gz จากโฟลเดอร์ PAServer ที่อยู่ใต้โฟลเดอร์ติดตั้งของตัว Rad-studio ไปไว้ที่ใดที่หนึ่งบน Server (เช่นที่ Document root ของโดเมนหรือซับโดเมนอันใดอันหนึ่ง หรือจะไว้ที่ home directory ของยูสเซอร์ root ก็ได้)
    • ปล. เลข 22 ในชื่อไฟล์ PAServer22.0.tar.gz คือเลขที่เวอร์ชั่นของ Rad-studio ซึ่งอาจจะต่างออกไปจากนี้ก็ได้แล้วแต่ว่าติดตั้งใช้งาน Rad-studio เวอร์ชั่นใด
  2. แตกไฟล์ที่กล่าวในข้อ 1 ด้วยคำสั่ง
    • tar -xvf <ชื่อไฟล์>
  3. ติดตั้ง Build-essential ลงบน Server เพื่อให้ Linux สามารถใช้ในการพัฒนาและรันซอฟท์แวร์ภาษาต่างๆได้ เช่นภาษา C, C++, Python, and Java คำสั่งที่ใช้คือ
    • # yum groupinstall “Development Tools”
  4. ติดตั้ง zlib1g-dev ลงบน Server ด้วยคำสั่ง
    • # yum makecache เพื่ออัพเดท yum database ก่อน
    • # yum -y install zlib-devel เพื่อติดตั้ง header files และ libraries ไว้สำหรับการพัฒนาโปรแกรม
  5. ย้ายไปที่ไดเรคตอรี่ PAServer ที่เกิดจากการแตกไฟล์ในข้อ 2 แล้วสั่งรันไฟล์ paserver ด้วยคำสั่ง
    • # ./paserver
    • ระบบจะถามพาสเวิร์ด ให้คลิก Enter ผ่านไป คือไม่ต้องพาสเวิร์ด
  6. ที่ Delphi IDE ไปที่เมนู Tools>Options… เลือกรายการ Connection Profile Manager
    • คลิกปุ่ม Add
    • ตั้งชื่อ Profile และเลือก Platform เป็น Linux 64-bit คลิกปุ่ม Next
    • แล้วป้อนค่า IP ของ Server ส่วน Port number ปล่อยไว้ตามค่าดีฟอลท์ คือ 64211 พาสเวิร์ด ปล่อยว่างไว้
    • คลิกปุ่ม Test Connection ดู ถ้าไม่มีอะไรผิดพลาด จะรายงานความสำเร็จ
    • คลิกปุ่ม Finish เก็บไว้เป็น Connection Profile
  7. ขณะที่ยังอยู่ที่เมนู Tools>Options… เลือกรายการ SDK Manager
    • คลิกปุ่ม Add
    • เลือก Platform เป็น Linux 64-bit แล้วเลือก Profile to connect ตามที่สร้างในข้อ 6

Share this

การคำนวณขนาดพัดลมระบายความร้อน ของหม้อแปลง Dry Type Cast Resin

ความร้อนที่เกิดจากการสูญเสีย (Losses) ภายในหม้อแปลง ขณะที่ใช้งาน จะต้องถูกระบายออก เพื่อรักษาระดับอุณหภูมิของตัวหม้อแปลงให้อยู่ในระดับที่ไม่ทำให้อายุของหม้อแปลงสั้นลงเร็วเกินไป การระบายความร้อนนี้เกิดขึ้นได้ 3 ทาง คือ

  1. การระบายความร้อนโดยการหมุนเวียนของอากาศตามธรรมชาติ (AN, Air Natural)
  2. การระบายความร้อนโดยใช้พัดลมช่วยเร่งการหมุนเวียนของอากาศ (AF, Air Forced)
  3. การระบายความร้อนผ่านทางผนังของตู้หม้อแปลง

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

โดยปกติหม้อแปลง Dry Type Cast Resin สามารถเพิ่มกำลังจ่ายได้อีก 40% ซึ่งการสูญเสียที่เกิดขึ้นจะคำนวณได้จาก

$$ P_v = P_o + 1.2 P_{k75} \left(\frac{S_{af}}{S_{an}}\right)^2 \quad \text{[kW]} \tag{1} $$

เมื่อ

\(P_o \) : No load loss

\(P_{k75} \) : Load loss ที่อุณหภูมิ 75 ºc

\(S_{an} \) : กำลังพิกัดของหม้อแปลงที่ระบายความร้อนด้วยอากาศตามธรรมชาติ [kVA]

\(S_{af} \) : กำลังพิกัดของหม้อแปลงที่ระบายความร้อนโดยใช้พัดลมช่วย [kVA]

พัดลมจะต้องขับอากาศไหลผ่านหม้อแปลงด้วยปริมาณมากพอที่จะนำพาเอาความร้อนจำนวนนี้ออกไปด้วย ตามสมการ

$$ Q_v = V_L . C_{PL} . \rho_L . \Delta\upsilon_L \quad \text{[kW]} \tag{2} $$

เมื่อ

\(Q_v \) : ปริมาณความร้อนที่จะระบายออก ในที่นี้จะเท่ากับการสูญเสียที่เกิดขึ้น, \(P_v\) [kW]

\(V_L \) : ปริมาณการไหลของอากาศ [\(m^3\)/s]

\(C_{PL} \) : ปริมาณความร้อนจำเพาะของอากาศ = 1.015 \(\frac{kw.s}{kg.K}\)

\(\rho_L \) : ความหนาแน่นของอากาศที่ 20 °C = 1.18 kg/\(m^3\)

\(\Delta\upsilon_L \) : อุณหภูมิเพิ่มของอากาศ ปกติคิดที่ 15 K


เขียนขึ้นสำหรับการอบรมพนักงานบริษัทแห่งหนึ่ง

เมื่อ 26 พย. 2534

 

 

Share this

การแก้ปัญหา เมื่อใช้ AppStart command ใน RSView32 แล้วไม่ยอมแสดงเป็น Foreground ใน Win7

หน้าจอ HMI

โปรแกรม HMI ซึ่งเขียนด้วย RSView32 เมื่อนำมาใช้บน Win7 มีปัญหาอย่างหนึ่งคือ การสั่งแสดง Presentation (ปุ่มสีเหลือง ซึ่งใช้ AppStart command สั่งเริ่ม Application ภายนอก) ไม่แสดงผลอยู่ด้านหน้าสุด (Foreground) แต่กลับไปแสดงอยู่ด้านหลัง (ฺBackground) แทน

พรีเซนเตชั่นเปิดขึ้นแสดงด้านหลังแทน

ปัญหานี้มีคำอธิบายอยู่ใน technote ของ AB อธิบายไว้ดังนี้

คำอธิบายปัญหาใน technote ของ AB

สรุปวิธีการแก้ไขก็คือ เข้าไปแก้ไขค่า ForegroundLockTimeout ใน Registry ที่ HKCU\Control Panel\Desktop จากค่าดีฟอลท์ 200000 (decimal) ให้เป็น 0

แก้ไขค่าใน รีจิสตรี้ ที่ HKCU

แล้วรีสตาร์ทวินโดวส์ใหม่ ก็จะใช้ได้

Share this

การติดตั้ง Windows 7 บนเครื่องรุ่นใหม่ๆ

เมื่อไม่กี่วันนี้ มีงานที่มีความจำเป็นต้องซื้อคอมพิวเตอร์เครื่องใหม่มาเพื่อใช้ในเครื่องจักรของโรงงานหนึ่ง และคิดไว้ว่าจะติดตั้ง Windows 7 แทนที่จะเป็น Windows 10 ซึ่งเป็นเวอร์ชั่นปัจจุบัน

ที่มาคือ เครื่องคอมพิวเตอร์ที่ใช้ในเครื่องจักรที่ใช้อยู่นั้น ทำไว้เมื่อ 9 ปีที่แล้ว เริ่มหมดอายุขัยของมัน เกิดความเสี่ยงต่อการผลิตที่ต้องหยุดชะงักหากคอมพิวเตอร์เสียไป เครื่องคอมพิวเตอร์ที่ว่านี้ติดตั้ง Windows XP เป็น OS และติดตั้งโปรแกรมเชื่อมต่อกับตัว PLC และเขียนโปรแกรม HMI เพื่อให้พนักงานใช้สั่งงานและมอนิเตอร์ค่าจาก PLC

เครื่องที่จะนำมาทดแทนจึงเลือกหาซื้อเครื่องใหม่ๆเพื่อให้ใช้งานต่อไปได้อีกยาว ในที่นี้ตัดสินใจซื้อเครื่อง Vostro 3470 มา และตั้งใจจะติดตั้ง Windows 7 แทนของเดิมที่เป็น Windows XP เพราะว่าโปรแกรมที่ใช้เชื่อมต่อกับตัว PLC รุ่นที่ใช้อยู่นั้นคงไม่สามารถใช้งานบน Windows ใหม่ๆได้

แต่จากการพยายามทำการติดตั้ง Windows 7 ไม่ว่าจะเป็น 32 บิท หรือ 64 บิท ลงบนเครื่อง Vostro 3470 ไม่ว่าจะด้วยวิธีการอย่างใดก็ตาม ไม่สามารถทำได้

Vostro 3470 mainboard

นี่เป็นสเปคส่วนที่สำคัญของ Vostro 3470

  • CPU Intel Celeron, core i3, หรือ i5, หรือ i7 generation ที่ 8
  • Chipset Intel H370
  • DRAM bus 64 bits
  • PCIe bus 100 Mhz
  • Port two USB 3.1, four USB 2.0

สาเหตุหลักๆที่ทำให้ไม่สามารถติดตั้ง Windows 7 ได้บนเครื่อง Vostro 3470 นี้ และคงรวมถึงเครื่องรุ่นใหม่ๆทั้งหลายด้วย คือ CPU ที่เป็น gen 8 (จริงๆตั้ง gen 6 เป็นต้นมาแล้ว) และตัว Chipset และรวมทั้งพอร์ท USB ที่ปัจจุบันไม่ใช่ USB 2.0 จริงๆ

Share this

หม้อแปลงแบบครีบเรดิเอเตอร์

หม้อแปลงน้ำมันแบบครีบเรดิเอเตอร์ (Radiator Fin Oil Immersed Transformer) เป็นหม้อแปลงแบบเก่า ที่ปัจจุบันนิยมเปลี่ยนไปใช้ครีบแบบคอร์รูเกต (Corrugated Fin) แล้ว

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

ครีบแบบเรดิเอเตอร์นี้ ยังคงจำเป็นต้องใช้ในหม้อแปลงขนาดใหญ่ๆ (Power transformer) ที่ครีบแบบคอร์รูเกตเกินขีดจำกัดไม่สามารถใช้ได้อีก

Share this