Tuesday, October 12, 2021

ติดตั้ง CodeIgniter 4 บน Ubuntu 20.04

Env

  • CodeIgniter 4
  • Ubuntu 20.04
  • LAMP
  • PHP 7.4 
  • domain site => www.mysite.com
  • path web root => /var/www/html

แบบ 1 download zip

  • ไปที่ https://codeigniter.com/download
  • เราจะได้ zip file มาแบบนี้ framework-4.1.4.zip (ณ วันที่ 12 ต.ค. 64 ได้เวอร์ชั่นนี้)

  • ใน zip file จะมี folder เดียวชื่อประมาณ framework-4.1.4  และใน folder นี้ก็จะมี subfolder และ file ประมาณภาพตัวอย่าง
  • จากนั้นให้คัดลอกไฟล์ framework-4.1.4 ไปวางไว้ web root path
  • rename framework-4.1.4 เป็น ci4

แบบที่ 2 ใช้ composer 

  • เปลี่ยนพาธไป ที่ web root path ก่อน

$ cd /var/www/html

  • จากนั้นใช้คำสั่งนี้และลงท้ายด้วยชื่อ project folder เรา ในที่นี้คือ  ci4

$ composer create-project codeigniter4/appstarter ci4

ทั้ง 2 วิธีติดตั้งนี้ พาธเว็บเมื่อเข้าใช้งานก็จะเป็น subfolder และ เข้าพาธแบบนี้ www.mysite.com/ci4

  • ในพาธระดับเดียวกับ folder app จะมีไฟล์ env  อยู่ให้เรา คัดลอกเนื้อหาในไฟล์ แล้วสร้างไฟล์ใหม่ชื่อ .env สำหรับ คอนฟิกของระบบ ตัวอย่างเช่น config environment ที่ต้องใช้จะมีหลักๆ 2 แบบ ที่ชอบใช้ คือ development เอาไว้แสดง error ว่าอยู่บรรทัดใหน และ เมื่อพัฒนาเสร็จก็เปลี่ยนโหมดเป็น production เอาไว้ปิดบังบั๊ก ประมาณนั้น
# CI_ENVIRONMENT = production
CI_ENVIRONMENT = development
  • จากนั้นเปลี่ยน permission folder ci4/writable เป็น 777

$ sudo chmod -R 777 /var/www/html/ci4/writable

  • จากนั้นสร้างไฟล์ .htaccess ใน ci4

$ sudo nano /var/www/html/ci4/.htaccess

  • และเพิ่มค่าแบบนี้

RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

  • ทดสอบเว็บทำงานได้หรือยัง โดยไปที่ www.mysite.com/ci4 หรือ www.mysite/ci4/public

เพิ่มเติม(แนะนำวิธีเพิ่มเติม)

  • อีกวิธีทำ subfolder site โดยไม่ต้องสร้าง .htaccess ใหม่ 
  • ให้เราทำโดย คัดลอก index.php และ .htaccess ใน public folder ออกมาไว้ใน ci4  เลย
  • ให้อยู่ในระดับเดียวกับ app public folder เป็นต้น 
  • จากนั้นแก้ไขไฟล์ index.php ที่อยู่ใน ci4 

// $pathsConfig = FCPATH . '../app/Config/Paths.php';
$pathsConfig = FCPATH . '/app/Config/Paths.php';

อีกเรื่องที่สำคัญคือ  timezone  ปรับให้เป็นของ thai เราด้วย

  • app/Conifg/App.php

  • เปลี่ยนจาก America/Chicago เป็น Asia/Bangkok
  • ปัญหาที่เกิดถ้าเราไม่เปลี่ยน timezone เป็นของ thai เรา คือ php datediff จะตกไป 1 วันทันที

ปัญหาที่พบในการทำ subfolder ci4 ภายใต้ root

  • ใน config httpd เราตั้งพาธ root เป็น /var/www/site.com/html/
  • แต่เราดันเอา ci4 site เราไปวางไว้ที่ /var/www/site.com/ci4/ แบบนี้ การ route url ผิดเพี้ยนมากเลย
  • ต้องเอา ci4 ไว้ใน /var/www/site.com/html/ci4 แบบนี้จะไม่มีปัญหา
  • แต่ปัญหาทั้งหมดนี้จะหมดไป ถ้าเราตั้งค่า root folder ไปที่   ci4 folder เราเลย

Ref

  • https://onlinewebtutorblog.com/complete-codeigniter-4-basics-tutorial/
  • https://codeigniter4.github.io/userguide/installation/installing_composer.html
  • https://www.positronx.io/codeigniter-crud-with-bootstrap-and-mysql-example/
  • https://akrabat.com/running-slim-4-in-a-subdirectory/
  • https://www.slimframework.com/docs/v4/start/web-servers.html
  • https://www.codebee.co.th/labs/codeigniter-4-%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b8%a5%e0%b8%9a-public-%e0%b8%ad%e0%b8%ad%e0%b8%81%e0%b8%88%e0%b8%b2%e0%b8%81-url/
  • https://onlinewebtutorblog.com/codeigniter-4-session-library/

No comments:

Post a Comment

Popular Posts