การ Deploy เบื้องต้น: Deploy ไปยัง Shared Hosting
หลังจากที่เราได้เรียนรู้การจัดการ Environment Variables ด้วยไฟล์ .env ในบทที่แล้ว ในบทนี้ เราจะมาเรียนรู้วิธีการนำโปรเจกต์ PHP ของเราขึ้นไปใช้งานจริงบน Shared Hosting ซึ่งเป็น Hosting ที่ได้รับความนิยมเนื่องจากราคาถูกและใช้งานง่าย เหมาะสำหรับผู้เริ่มต้น
Shared Hosting คือการที่เราแชร์ทรัพยากรของ Server กับผู้ใช้งานรายอื่น ๆ ซึ่งหมายความว่าเราอาจจะไม่สามารถควบคุม Server ได้อย่างเต็มที่ แต่ก็เพียงพอสำหรับการใช้งานเว็บไซต์ขนาดเล็กถึงขนาดกลาง
ขั้นตอนการ Deploy ไปยัง Shared Hosting
การ Deploy โปรเจกต์ PHP ไปยัง Shared Hosting มีขั้นตอนหลัก ๆ ดังนี้:
- การเตรียมไฟล์
- การอัพโหลดไฟล์
- การตั้งค่า Database
1. การเตรียมไฟล์
ก่อนที่เราจะทำการอัพโหลดไฟล์ไปยัง Shared Hosting เราต้องทำการเตรียมไฟล์ให้พร้อมเสียก่อน โดยมีสิ่งที่ต้องพิจารณาดังนี้:
- ไฟล์ทั้งหมดของโปรเจกต์: ตรวจสอบให้แน่ใจว่าเรามีไฟล์ Source Code ทั้งหมดของโปรเจกต์ PHP ของเรา
- ไฟล์
.env: ไฟล์.envที่เราสร้างไว้ในบทที่แล้ว จะต้องถูกอัพโหลดขึ้นไปด้วย (แต่ต้องระวังเรื่องความปลอดภัย!) - ไฟล์
composer.jsonและcomposer.lock: ถ้าโปรเจกต์ของเราใช้ Composer ในการจัดการ Dependencies เราจะต้องมีไฟล์ทั้งสองนี้ - ไฟล์อื่นๆ ที่จำเป็น: เช่น ไฟล์
.htaccessสำหรับการกำหนด URL Rewriting หรือไฟล์ Configuration อื่นๆ
กรณีใช้งานจริง: สมมติว่าเรามีโปรเจกต์ PHP ที่ใช้ Laravel ซึ่งมีโครงสร้างไฟล์ประมาณนี้:
my-project/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── vendor/
├── .env
├── composer.json
├── composer.lock
├── artisan
└── ...
เราจะต้องอัพโหลดโฟลเดอร์ my-project ทั้งหมดขึ้นไปยัง Server ของ Shared Hosting
2. การอัพโหลดไฟล์
การอัพโหลดไฟล์ไปยัง Shared Hosting สามารถทำได้หลายวิธี แต่วิธีที่นิยมที่สุดคือการใช้ FTP Client (File Transfer Protocol Client) เช่น FileZilla, Cyberduck หรือ WinSCP
ขั้นตอนการอัพโหลดไฟล์ด้วย FTP Client:
- ดาวน์โหลดและติดตั้ง FTP Client: เลือก FTP Client ที่คุณถนัด แล้วทำการดาวน์โหลดและติดตั้ง
- เชื่อมต่อกับ Server: เปิด FTP Client แล้วกรอกข้อมูลการเชื่อมต่อ (Host, Username, Password, Port) ที่ได้รับจากผู้ให้บริการ Shared Hosting
- นำทางไปยัง Root Directory: เมื่อเชื่อมต่อสำเร็จ ให้มองหา Root Directory ของเว็บไซต์ของคุณ โดยทั่วไปแล้วจะเป็น
public_html,wwwหรือชื่ออื่น ๆ ที่ผู้ให้บริการกำหนด - อัพโหลดไฟล์: ลากและวางไฟล์ทั้งหมดจากเครื่องคอมพิวเตอร์ของคุณไปยัง Root Directory บน Server
ข้อผิดพลาดที่พบบ่อย:
- การใส่ข้อมูลการเชื่อมต่อผิด: ตรวจสอบให้แน่ใจว่าคุณใส่ Host, Username, Password และ Port ถูกต้อง
- การอัพโหลดไฟล์ผิด Directory: ตรวจสอบให้แน่ใจว่าคุณอัพโหลดไฟล์ไปยัง Root Directory ที่ถูกต้อง
- Permission ของไฟล์ไม่ถูกต้อง: บางครั้ง Server ต้องการ Permission ที่เฉพาะเจาะจงสำหรับไฟล์และโฟลเดอร์ ลองเปลี่ยน Permission เป็น
755สำหรับโฟลเดอร์ และ644สำหรับไฟล์
กรณีใช้งานจริง: เราใช้ FileZilla เชื่อมต่อกับ Server ของ Shared Hosting แล้วอัพโหลดโฟลเดอร์ my-project ทั้งหมดไปยัง public_html
ข้อควรระวังเรื่องไฟล์ .env: เนื่องจากไฟล์ .env มีข้อมูลสำคัญ เช่น รหัสผ่าน Database, API Keys ดังนั้นเราจึงควรระมัดระวังในการอัพโหลดไฟล์นี้ขึ้น Server
- วิธีที่ 1: อัพโหลดไฟล์
.envขึ้นไปปกติ แต่ตั้งค่า Permission ให้เป็น400หรือ600เพื่อป้องกันไม่ให้ผู้อื่นเข้าถึงได้ - วิธีที่ 2: เปลี่ยนชื่อไฟล์
.envเป็นชื่ออื่น เช่น.env.exampleแล้วอัพโหลดขึ้นไป จากนั้นให้ SSH เข้าไปใน Server แล้วทำการเปลี่ยนชื่อกลับเป็น.envและตั้งค่า Permission ให้เหมาะสม (วิธีนี้ปลอดภัยกว่า) - วิธีที่ 3: (ไม่แนะนำ) ใส่ค่า Environment Variables โดยตรงในไฟล์ Configuration ของ PHP (เช่น
config/database.phpใน Laravel) แต่วิธีนี้ไม่ปลอดภัยและไม่ยืดหยุ่น
3. การตั้งค่า Database
หลังจากที่เราอัพโหลดไฟล์ขึ้น Server แล้ว ขั้นตอนต่อไปคือการตั้งค่า Database ให้โปรเจกต์ของเรา
ขั้นตอนการตั้งค่า Database:
- สร้าง Database: เข้าสู่ Control Panel ของ Shared Hosting (เช่น cPanel, Plesk) แล้วมองหาเมนูสำหรับจัดการ Database (เช่น MySQL Databases, phpMyAdmin) จากนั้นทำการสร้าง Database ใหม่
- สร้าง User และให้สิทธิ์: สร้าง User สำหรับเข้าถึง Database แล้วให้สิทธิ์ User นั้นในการอ่าน เขียน และแก้ไข Database ที่เราสร้างไว้
- แก้ไขไฟล์
.env: แก้ไขไฟล์.envบน Server ให้มีข้อมูล Database ที่ถูกต้อง (DB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD) - Import Database (ถ้ามี): ถ้าเรามีข้อมูล Database อยู่แล้ว ให้ทำการ Import ข้อมูลนั้นเข้าไปใน Database ที่เราสร้างใหม่
กรณีใช้งานจริง:
- เราเข้าสู่ cPanel ของ Shared Hosting แล้วสร้าง Database ชื่อ
my_project_db - เราสร้าง User ชื่อ
my_project_userแล้วให้สิทธิ์ User นั้นในการเข้าถึง Databasemy_project_db - เราแก้ไขไฟล์
.envบน Server ดังนี้:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_project_db
DB_USERNAME=my_project_user
DB_PASSWORD=your_password
- ถ้าเรามีไฟล์
database.sqlที่เป็น Backup ของ Database เดิม เราจะใช้ phpMyAdmin ในการ Import ไฟล์นั้นเข้าไปใน Databasemy_project_db
ข้อผิดพลาดที่พบบ่อย:
- ข้อมูล Database ในไฟล์
.envไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่าข้อมูล DB_HOST, DB_DATABASE, DB_USERNAME และ DB_PASSWORD ถูกต้อง - Database Server ไม่สามารถเข้าถึงได้: บางครั้ง Firewall ของ Server อาจจะบล็อกการเข้าถึง Database Server ลองตรวจสอบ Firewall หรือติดต่อผู้ให้บริการ
- Permission ของ User ไม่ถูกต้อง: ตรวจสอบให้แน่ใจว่า User ที่เราสร้างมีสิทธิ์ในการเข้าถึง Database ที่เราต้องการ
สรุป
ในบทนี้ เราได้เรียนรู้วิธีการ Deploy โปรเจกต์ PHP ไปยัง Shared Hosting ซึ่งเป็น Hosting ที่ได้รับความนิยมเนื่องจากราคาถูกและใช้งานง่าย โดยเราได้ครอบคลุมขั้นตอนการเตรียมไฟล์ การอัพโหลดไฟล์ และการตั้งค่า Database นอกจากนี้ เรายังได้เรียนรู้ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
ในบทต่อไป เราจะมาเรียนรู้การ Deploy ด้วย FTP ซึ่งเป็นเครื่องมือที่ใช้ในการอัพโหลดและดาวน์โหลดไฟล์ระหว่างเครื่องคอมพิวเตอร์ของเรากับ Server