เอาล่ะครับก็มีคำถามมานะครับว่าเราจะเอาระบบที่เขียน(เสร็จแล้ว) ไปติดตั้งที่ Server ต้องทำอย่างไร ในที่นี้ผมจะแนะนำการติดตั้งที่ Server ที่ใช้ Apache ก่อนนะครับ (ซึ่งส่วนใหญ่น่าจะใช้ Shared Host) และขอใช้ yii2-app-advanced เป็นตัวอย่างนะครับ
Initialize Project เป็น Production
ในขั้นตอนนี้ให้ทำการ Initialize Project เป็น Production ก่อน โดยเข้าโปรแกรม cmd หรือ terminal จากนั้น cd (Change Directory) ไปยัง root ของ Project แล้วพิมพ์คำสั่ง
php init (macOS)
---
init (Windows)
จากนั้น เลือก 1 แล้วพิมพ์ yes จากนั้นกดปุ่ม Enter ระบบจะสร้าง Environment ให้เป็นแบบ Production ให้
แก้ไขการตั้งการการเชื่อมต่อฐานข้อมูล
ขั้นตอนนี้ให้ทำการ Dump ฐานข้อมูลออกมาหรือการ Export ข้อมูลออกมาเป็นไฟล์ SQL จากนั้นนำไป Import เข้าไปในฐานข้อมูลที่ Server (ขั้นตอนการสร้างฐานข้อมูลใน Server ไม่ได้กล่าวถึงนะครับ เนื่องจากอาจจะใช้วิธีที่แตกต่างกันตาม Control Panel ของแต่ละ Host เช่น cPanel, Direct Admin เป็นต้น)
จากนั้นให้ทำการแก้ไขไฟล์ common/config/main-local.php เพื่อแก้ไขการเชื่อมต่อไปยังฐานข้อมูลใหม่ ตรงนี้ของเก่าใน local ที่เราเคยตั้งค่าไว้จะหายไป เพราะเราได้ทำการ Initialization ไปแล้ว
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=yii2_gis',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],
อัพโหลดไฟล์ทั้งหมดไปที่ root directory ของ server
ขั้นตอนนี้ให้อัพโหลดไฟล์ทั้งหมดของ Project อาจจะใช้ FileZilla ในการ Upload ปกติก็จะเป็น Folder /public_html, /httpdocs เป็นต้น
สร้าง .htaccess ให้ไปเรียกข้อมูลใน frontend/web แทน root directory
ขั้นตอนนี้เป็นการกำหนดให้เมื่อมีการ request ให้ไปเรียกใช้งาน frontend/web แทน เพราะถ้าปกติเมื่อมีการ เปิดเว็บระบบจะวิ่งมาที่ root directory ดังนั้นเราจะย้ายไปที่ frontend/web แต่ถ้าใครสามารถกำหนด root directory ได้เองก็ให้เปลี่ยน root directory ไปเป็น frontend/web ได้เลย อ้อขั้นตอนนี้อย่าลืมเปิด mode_rewrite ของ Apache ด้วยนะ (ปกติเปิดไว้อยู่แล้ว)
ตัวอย่างไฟล์ .htaccess (อยู่ที่ root directory)
Options -Indexes
RewriteEngine on
RewriteRule (^backend) backend/web/$1 [L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ frontend/web/$1 [L]
Options +FollowSymlinks
สรุปง่ายๆ คือบังคับให้ไป https://domain.com แล้วให้ไปเรียกข้อมูลจาก frontend/web นั่นเอง ถ้าเรียก https://domain.com/backend ก็ให้วิ่งไปที่ backend/web (แต่ปกติเราสร้าง subdomain แล้วเลือก root directory ได้)
สร้าง Sub Domain สำหรับ Backend
สำหรับ backend นั้นเราสร้างมารถสร้าง Sub Domain เพื่อเชื่อมไปยัง backend/web ได้ โดยการเปลี่ยน root directory ของ Sub Domain ซึ่ง สามารถทำได้จาก Control Panel ของแต่ละ Host (ไม่ลงรายละเอียดแล้วกันนะครับ)
สรุป
สำหรับการติดตั้งระบบที่ Server แบบ Shared Host นั้นสามารถติดตั้งและตั้งค่าได้ โดยใช้เทคนิค mode_rewrite ของ Apache เพื่อชี้ root directory และสร้าง Sub Domain สำหรับ backend แล้วเปลี่ยน root directory ไปเป็น backend/web จากนั้นจะสามารถเข้า backend ได้จาก https://backend.domain.com
หวังว่าบทเรียนรู้นี้จะเป็นประโยชน์กับเพื่อนๆ นะครับ ^ ^
ความคิดเห็น