เอาล่ะครับก็มีคำถามมานะครับว่าเราจะเอาระบบที่เขียน(เสร็จแล้ว) ไปติดตั้งที่ 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 

หวังว่าบทเรียนรู้นี้จะเป็นประโยชน์กับเพื่อนๆ นะครับ ^ ^

ความคิดเห็น

หากบทเรียนรู้มีความผิดพลาดประการใด หรือมีข้อเสนอแนะกรุณาแจ้ง contact@programmerthailand.com