- ภาพรวมสถาปัตยกรรม
- 1. เตรียม Google Cloud Project
- 2. สร้าง Compute Engine VM
- 3. เชื่อมต่อ VM ด้วย SSH
- 4. Update Package
- 5. ติดตั้ง Apache
- 6. ติดตั้ง PHP
- 7. สร้าง PHP Application
- 8. ทดสอบ PHP ด้วย phpinfo()
- 9. ตั้ง Permission
- 10. ติดตั้ง Composer
- 11. Deploy Project จาก Git
- 12. ตัวอย่าง Apache VirtualHost
- 13. Domain และ HTTPS สำหรับ Production
- 14. Security Checklist
- 15. คำสั่งตรวจสอบปัญหา
- สรุป
- เอกสารอ้างอิง
Workshop: สร้าง VM บน Google Cloud → ติดตั้ง Apache/PHP → Deploy PHP → ทดสอบผ่าน External IP
#ภาพรวมสถาปัตยกรรม
Browser
|
| HTTP :80 / HTTPS :443
v
Google Cloud VPC Firewall
|
v
Compute Engine VM (Ubuntu 24.04 LTS)
|
+-- Apache Web Server
|
+-- PHP
|
+-- /var/www/html
#1. เตรียม Google Cloud Project
- เข้า Google Cloud Console
- สร้างหรือเลือก Project
- ตรวจสอบว่า Billing เปิดใช้งาน
- เปิดใช้งาน Compute Engine API
#2. สร้าง Compute Engine VM
ไปที่ Compute Engine → VM instances → Create instance
ตัวอย่างค่าที่เหมาะกับการทดลอง:
| รายการ | ค่าแนะนำ |
|---|---|
| Name | php-web-server |
| Region | เลือก region ใกล้ผู้ใช้ |
| Machine type | e2-micro หรือขนาดที่เหมาะกับ workload |
| Operating system | Ubuntu |
| Version | Ubuntu 24.04 LTS |
| Boot disk | 10–20 GB สำหรับ workshop |
| Firewall | Allow HTTP traffic |
หากจะให้บริการ HTTPS ให้เปิด Allow HTTPS traffic ด้วย
หมายเหตุ: ค่าใช้จ่ายขึ้นกับ region, machine type, disk และทรัพยากรอื่นที่เลือก ควรตรวจสอบ Pricing ก่อนใช้งานจริง
กด Create และรอ VM อยู่ในสถานะ Running
#3. เชื่อมต่อ VM ด้วย SSH
จากหน้า VM instances กดปุ่ม SSH ของ VM ที่สร้างไว้
จากนั้นตรวจสอบระบบ:
cat /etc/os-release
#4. Update Package
sudo apt update
sudo apt upgrade -y
#5. ติดตั้ง Apache
sudo apt install apache2 -y
ตรวจสอบสถานะ:
sudo systemctl status apache2
ตั้งให้ Apache เริ่มทำงานอัตโนมัติ:
sudo systemctl enable apache2
ทดสอบจาก Browser:
http://EXTERNAL_IP
ถ้าเห็นหน้า Apache แสดงว่า Web Server และ Firewall ทำงานแล้ว
#6. ติดตั้ง PHP
ติดตั้ง PHP และ Apache PHP module:
sudo apt install php libapache2-mod-php -y
สำหรับงานที่เชื่อม MySQL/MariaDB และต้องใช้ extension ทั่วไป:
sudo apt install php-mysql php-curl php-mbstring php-xml php-zip -y
ตรวจสอบ PHP:
php -v
Restart Apache:
sudo systemctl restart apache2
#7. สร้าง PHP Application
ลบหน้าเริ่มต้นของ Apache:
sudo rm -f /var/www/html/index.html
สร้างไฟล์:
sudo nano /var/www/html/index.php
ตัวอย่าง:
<?php
$app = 'PHP on Google Compute Engine';
echo "<h1>{$app}</h1>";
echo "<p>Server time: " . date('Y-m-d H:i:s') . "</p>";
echo "<p>PHP version: " . PHP_VERSION . "</p>";
บันทึกไฟล์แล้วเปิด:
http://EXTERNAL_IP
#8. ทดสอบ PHP ด้วย phpinfo()
สำหรับการทดสอบชั่วคราว:
echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php
เปิด:
http://EXTERNAL_IP/info.php
เมื่อทดสอบเสร็จ ควรลบไฟล์นี้ เพราะ phpinfo() เปิดเผยรายละเอียด configuration ของระบบ:
sudo rm /var/www/html/info.php
#9. ตั้ง Permission
กรณีต้องการให้ user ปัจจุบันจัดการไฟล์เว็บ:
sudo chown -R $USER:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
สำหรับ production ควรกำหนด owner/permission ตาม deployment model และหลีกเลี่ยง chmod 777
#10. ติดตั้ง Composer
sudo apt install composer -y
composer --version
เหมาะสำหรับ Laravel, Symfony และ PHP applications ที่ใช้ Composer dependencies
#11. Deploy Project จาก Git
ติดตั้ง Git:
sudo apt install git -y
ตัวอย่าง:
cd /var/www
sudo git clone https://github.com/USERNAME/PROJECT.git app
sudo chown -R $USER:www-data /var/www/app
cd /var/www/app
composer install --no-dev --optimize-autoloader
จากนั้นสร้าง Apache VirtualHost ให้ DocumentRoot ชี้ไปยัง directory ที่ถูกต้อง เช่น /var/www/app/public สำหรับ Laravel
#12. ตัวอย่าง Apache VirtualHost
sudo nano /etc/apache2/sites-available/php-app.conf
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/app/public
<Directory /var/www/app/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/php-app-error.log
CustomLog ${APACHE_LOG_DIR}/php-app-access.log combined
</VirtualHost>
เปิด module/config:
sudo a2enmod rewrite
sudo a2ensite php-app.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
#13. Domain และ HTTPS สำหรับ Production
ลำดับโดยทั่วไป:
Domain
↓ DNS A Record
Static External IP
↓
Compute Engine
↓
Apache
↓
PHP Application
ควร Reserve Static External IP ก่อนผูก DNS เพื่อป้องกัน IP เปลี่ยนเมื่อมีการจัดการ VM บางรูปแบบ
สำหรับ production ควรเปิด HTTPS และใช้ TLS certificate เช่น Let's Encrypt/Certbot หรือออกแบบผ่าน Google Cloud Load Balancer ตาม architecture ที่ต้องการ
#14. Security Checklist
- เปิดเฉพาะ port ที่จำเป็น เช่น 80/443
- จำกัด SSH access ตามนโยบายองค์กร
- อัปเดต OS และ packages สม่ำเสมอ
- ไม่เก็บ password/API key ไว้ใน source code
- ใช้ Secret Manager หรือกลไก secret management ที่เหมาะสม
- ใช้ HTTPS ใน production
- สำรองข้อมูลและกำหนด monitoring/logging
- ไม่เปิด
phpinfo()ทิ้งไว้ - ใช้ least privilege กับ IAM และ service accounts
#15. คำสั่งตรวจสอบปัญหา
sudo systemctl status apache2
sudo apache2ctl configtest
sudo tail -f /var/log/apache2/error.log
sudo ss -tulpn | grep ':80'
php -v
ตรวจสอบ HTTP จาก VM:
curl -I http://localhost
#สรุป
ขั้นตอนหลักคือ:
Create Google Cloud Project
↓
Enable Compute Engine API
↓
Create Ubuntu VM
↓
Allow HTTP/HTTPS
↓
SSH
↓
Install Apache
↓
Install PHP
↓
Deploy PHP Application
↓
External IP / Domain
↓
HTTPS + Security Hardening
#เอกสารอ้างอิง
- Google Cloud Documentation — Create a Linux VM instance in Compute Engine
- Google Cloud Documentation — Running a basic Apache web server
- Google Cloud Documentation — Getting started with PHP on Compute Engine