การสร้างและรันโปรเจกต์ Laravel ใน ServBay
บทนำ
ServBay เป็นสภาพแวดล้อมการพัฒนาเว็บแบบโลคัลที่ทรงพลังสำหรับ macOS โดยรวมซอฟต์แวร์สำคัญไว้ครบถ้วน เช่น PHP, Node.js, Python, Go, Java, ระบบฐานข้อมูลยอดนิยม (MySQL, PostgreSQL, MongoDB), เครื่องมือแคช (Redis, Memcached) และเว็บเซิร์ฟเวอร์ต่างๆ (Caddy, Nginx, Apache)
เอกสารฉบับนี้จะแนะนำขั้นตอนการสร้าง ตั้งค่า และรันโปรเจกต์ Laravel บน ServBay ได้อย่างรวดเร็ว โดยใช้ PHP Composer ที่ติดตั้งพร้อมใช้งาน และฟีเจอร์บริหารจัดการเว็บไซต์ (ชื่อเดิมคือ “โฮสต์”) อันทรงประสิทธิภาพเพื่อให้กระบวนการเป็นเรื่องง่าย
Laravel คืออะไร?
Laravel คือเฟรมเวิร์ก PHP สำหรับพัฒนาเว็บที่ได้รับความนิยมสูงแบบโอเพ่นซอร์ส พัฒนาโดย Taylor Otwell โดยใช้โครงสร้าง MVC (Model-View-Controller) และให้ฟีเจอร์สำเร็จรูปมากมาย เช่น ระบบยืนยันตัวตน Routing การจัดการเซสชัน การแคช รวมถึงการจัดการฐานข้อมูล Laravel มีจุดเด่นที่ไวยากรณ์สวยงาม มีฟีเจอร์หลากหลาย และการสนับสนุนจากชุมชนที่แข็งแกร่ง จึงเหมาะสำหรับการสร้างเว็บแอปพลิเคชันยุคใหม่ที่บำรุงรักษาง่าย
จุดเด่นและข้อดีหลักของ Laravel
- ไวยากรณ์ที่สวยงาม: โค้ดสะอาด อ่านง่าย ทำงานได้คล่องตัว
- Eloquent ORM: ระบบ ActiveRecord ชั้นนำ ทำให้การเชื่อมต่อฐานข้อมูลเป็นเรื่องง่ายและตรงไปตรงมา
- Artisan CLI: เครื่องมือคำสั่งที่มีประโยชน์มากมาย เช่น สร้างฐานข้อมูล ออโต้โค้ด รันเทสต์ ฯลฯ
- Blade Template Engine: ภาษาสร้างหน้าที่อ่านง่าย สร้างมุมมองแบบไดนามิกได้รวดเร็ว
- ระบบนิเวศอันหลากหลาย: ทั้งแพคเกจอย่างเป็นทางการและจากบุคคลที่สามมากมาย ติดตั้งง่ายผ่าน Composer
- การสนับสนุนจากชุมชน: มีแหล่งความรู้ คู่มือ และวิธีแก้ปัญหาจำนวนมากจากผู้ใช้ทั่วโลก
ข้อดีของการพัฒนาโปรเจกต์ Laravel ด้วย ServBay
ServBay ช่วยให้นักพัฒนา Laravel ทำงานสะดวกยิ่งขึ้น:
- สภาพแวดล้อมแบบบูรณาการ: มี PHP หลายเวอร์ชันและ Composer สำเร็จรูป รวมถึงฐานข้อมูลยอดนิยมและบริการแคช ไม่ต้องลงเพิ่มเอง
- จัดการง่าย: สลับ PHP เวอร์ชันและบริหารเว็บไซต์ผ่านอินเทอร์เฟซกราฟิกของ ServBay ได้สะดวก
- เว็บเซิร์ฟเวอร์ที่ตั้งค่าล่วงหน้า: ServBay ใช้ Caddy โดยค่าเริ่มต้น พร้อมคอนฟิคที่เหมาะสมกับเฟรมเวิร์ก PHP ยอดนิยม (เช่น Laravel) ทำให้การตั้งค่าเว็บเซิร์ฟเวอร์เป็นเรื่องง่าย
- รองรับ HTTPS: ServBay ตั้งค่าใบรับรอง SSL สำหรับโดเมนที่ลงท้ายด้วย .local ให้อัตโนมัติ เปิดใช้งาน HTTPS ทันที ช่วยให้ทดสอบงานได้อย่างปลอดภัยและใกล้เคียงสภาพแวดล้อมจริง
การสร้างโปรเจกต์ Laravel
ServBay แนะนำให้เก็บโฟลเดอร์โปรเจกต์ไว้ที่ /Applications/ServBay/www
เพื่อจัดระเบียบโครงสร้างไฟล์และตอบโจทย์การบริหารแบบรวมศูนย์
ตรวจสอบว่า Composer พร้อมใช้งานแล้ว
ServBay มี Composer ติดตั้งมาด้วย ไม่จำเป็นต้องติดตั้งเอง คุณสามารถตรวจสอบผ่านเทอร์มินัลได้:
bashcomposer --version
1หากคำสั่งนี้แสดงหมายเลขเวอร์ชัน แสดงว่า Composer ใช้งานได้เรียบร้อย
สร้างโปรเจกต์ Laravel ใหม่
เปิดเทอร์มินัลแล้วเปลี่ยนโฟลเดอร์ไปยังไดเรกทอรีเว็บไซต์ที่แนะนำ จากนั้นรันคำสั่งสร้างโปรเจกต์ Laravel ใหม่ สมมุติโฟลเดอร์ชื่อ
servbay-laravel-app
:bashcd /Applications/ServBay/www # สร้างโฟลเดอร์โปรเจกต์ mkdir servbay-laravel-app # เข้าโฟลเดอร์โปรเจกต์ cd servbay-laravel-app # ใช้ Composer สร้าง Laravel ในโฟลเดอร์นี้เลย composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Composer จะดาวน์โหลดและติดตั้งไฟล์ที่จำเป็นทั้งหมดของ Laravel ให้เสร็จสิ้น
เข้าสู่โฟลเดอร์โปรเจกต์
ตรวจสอบว่าเทอร์มินัลอยู่ที่โฟลเดอร์รากของโปรเจกต์ Laravel ที่สร้างใหม่:
bashcd /Applications/ServBay/www/servbay-laravel-app
1
การตั้งค่าเริ่มต้น
สร้าง Application Key
Laravel ใช้คีย์แอปเพื่อปกป้องการทำงานของเซสชันและข้อมูลที่เข้ารหัส รันคำสั่ง Artisan ในโฟลเดอร์รากของโปรเจกต์ (
/Applications/ServBay/www/servbay-laravel-app
) เพื่อสร้างคีย์นี้:bashphp artisan key:generate
1คำสั่งนี้จะสร้างและตั้งค่า
APP_KEY
ให้ในไฟล์.env
ของคุณตั้งค่าตัวแปรสภาพแวดล้อม (
.env
)Laravel จัดการตัวแปรสำคัญต่างๆ (เช่น ฐานข้อมูล, URL เว็บไซต์) ผ่านไฟล์
.env
ที่โฟลเดอร์รากของโปรเจกต์ ให้เปิดไฟล์นี้และกำหนดค่าให้ถูกต้อง เช่น:dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # ค่านี้ถูกสร้างโดย php artisan key:generate แล้ว APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # ตัวอย่างการตั้งค่าฐานข้อมูล (MySQL) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # ชื่อฐานข้อมูลที่ต้องการใช้ DB_USERNAME=root # ผู้ใช้ดีฟอลต์ของ ServBay DB_PASSWORD=password # รหัสผ่านดีฟอลต์ของ ServBay # ตัวอย่างการตั้งค่าแคช/คิว (Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis ใน ServBay ไม่มีรหัสผ่านโดยปริยาย REDIS_PORT=6379 # ตัวอย่างการตั้งค่าแคช/คิว (Memcached) # CACHE_STORE=memcached # MEMCACHED_HOST=127.0.0.1 # MEMCACHED_PORT=11211
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26หมายเหตุ: อาจต้องปรับ
DB_*
,REDIS_*
หรือMEMCACHED_*
ให้ตรงกับการใช้งานจริง ดูชื่อผู้ใช้และรหัสผ่านฐานข้อมูลจากหน้าควบคุมของ ServBay ได้
ตั้งค่าเว็บเซิร์ฟเวอร์ (เพิ่มเว็บไซต์ใน ServBay)
ใช้ระบบจัดการเว็บไซต์ของ ServBay เพื่อเพิ่มเว็บไซต์ใหม่ และชี้โดเมนไปยังไดเรกทอรี public
ของโปรเจกต์ Laravel
เปิดแผงควบคุม ServBay
เริ่มต้นแอป ServBay แล้วเปิดหน้าควบคุม
เพิ่มเว็บไซต์ใหม่
ไปที่ส่วน ‘เว็บไซต์’ ใน Control Panel ของ ServBay คลิกปุ่มเพิ่ม (มักจะเป็นเครื่องหมาย
+
หรือไอคอนคล้ายกัน) เพื่อเพิ่มเว็บไซต์ใหม่กรอกข้อมูลเว็บไซต์
ตัวอย่างการตั้งค่ามีดังนี้:
- ชื่อ (Name):
My First Laravel Dev Site
(ตั้งชื่อเพื่อให้รู้ว่าโปรเจกต์ไหน) - โดเมน (Domain):
servbay-laravel-test.local
(ชื่อโดเมนที่ต้องการใช้) - ประเภทเว็บไซต์ (Site Type):
PHP
- เวอร์ชัน PHP (PHP Version): เลือกเวอร์ชันที่รองรับ Laravel เช่น
8.3
- รากเว็บไซต์ (Site Root):
/Applications/ServBay/www/servbay-laravel-app/public
(สำคัญ: ต้องชี้ไปที่โฟลเดอร์public
ของโปรเจกต์ Laravel)
รายละเอียดเพิ่มเติม ดูคู่มือ การเพิ่มเว็บไซต์แรก (ค้นหาเวอร์ชันภาษาอังกฤษ)
- ชื่อ (Name):
บันทึกและใช้การเปลี่ยนแปลง
บันทึกการตั้งค่า เว็บไซต์จะถูกตั้งค่าเซิร์ฟเวอร์เว็บ (Caddy) ใหม่อัตโนมัติ หากมีแจ้งเตือนให้รีสตาร์ทเซิร์ฟเวอร์ ให้ทำตามคำแนะนำ
ตรวจสอบการเข้าใช้งานพื้นฐาน
ตอนนี้คุณสามารถเข้าโปรเจกต์ Laravel ของคุณผ่านโดเมนที่ตั้งไว้แล้ว
เปิดเว็บเบราว์เซอร์
พิมพ์โดเมน (เช่น
https://servbay-laravel-test.local
) ในแถบที่อยู่ของเบราว์เซอร์ตรวจสอบผลลัพธ์
หากตั้งค่าทุกอย่างถูกต้องจะพบหน้าต้อนรับของ Laravel
เพิ่มโค้ดตัวอย่างง่ายๆ
เพื่อความมั่นใจเพิ่มเติม ให้เพิ่ม Route ง่ายๆ ในไฟล์ routes/web.php
แล้วแสดงข้อความ "Hello ServBay!"
ค้นหาไฟล์ routes/web.php
จากโฟลเดอร์โปรเจกต์ แล้วเพิ่มหรือแก้ไขโค้ดดังนี้:
php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // แก้ไขหรือเพิ่มบรรทัดนี้
});
// ... เส้นทางอื่นๆ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
จากนั้นบันทึกไฟล์ แล้วลองเปิด https://servbay-laravel-test.local
ในเบราว์เซอร์ จะเห็นข้อความ Hello ServBay!
แสดงผล
ตัวอย่างการเชื่อมต่อฐานข้อมูล
Laravel มีระบบ ORM และฐานข้อมูลชั้นยอด รองรับทั้งเชื่อมต่อกับ MySQL, PostgreSQL, MongoDB, Redis, Memcached ฯลฯ ซึ่ง ServBay ก็ติดตั้งพร้อมใช้ทั้งหมด
ตัวอย่าง NoSQL Database
ServBay มี Redis และ Memcached ให้ใช้งาน โดย PHP extension ติดตั้งพร้อมใช้
ตัวอย่างตั้งค่า Memcached
ตั้งค่าใน
.env
กำหนดค่าการเชื่อมต่อ Memcached ในไฟล์
.env
(ถ้ายังไม่ได้ตั้ง):dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # พอร์ตดีฟอลต์ของ Memcached ใน ServBay
1
2
3ใช้งาน Memcached
ใน Route หรือ Controller ใช้ facade Cache เพื่อทดสอบ Memcached ได้ เช่นเพิ่มดังนี้ใน
routes/web.php
:phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // เก็บข้อมูลในแคช มีอายุ 10 นาที (600 วินาที) Cache::put('servbay_memcached_key', 'Hello from Memcached on ServBay!', 600); // ดึงข้อมูลจากแคช $value = Cache::get('servbay_memcached_key'); if ($value) { return "ข้อมูล Memcached: " . $value; } else { return "ไม่พบข้อมูลใน Memcached หรือหมดอายุแล้ว"; } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15เข้าไปที่
https://servbay-laravel-test.local/memcached-test
เพื่อตรวจสอบการทำงาน
ตัวอย่าง Redis
ตั้งค่าใน
.env
กำหนดค่าเชื่อมต่อ Redis (ถ้ายังไม่ได้ตั้ง) ในไฟล์
.env
:dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis ใน ServBay ไม่มีรหัสผ่านโดยปริยาย REDIS_PORT=6379 # พอร์ตดีฟอลต์ของ Redis ใน ServBay
1
2
3
4หมายเหตุ: หากเปิดใช้ทั้ง Memcached และ Redis พร้อมกัน ให้ระบุว่าใช้งานตัวใดใน
.env
ผ่านตัวแปรCACHE_STORE
ใช้งาน Redis
ใช้ facade Redis หรือ Cache สำหรับทดสอบ Redis ได้ ตัวอย่างใน
routes/web.php
:phpuse Illuminate\Support\Facades\Redis; // หรือจะใช้ Cache facade ก็ได้ กรณี CACHE_STORE=redis // use Illuminate\Support\Facades\Cache; Route::get('/redis-test', function () { // ใช้ Redis facade Redis::set('servbay_redis_key', 'Hello from Redis on ServBay!'); $value_redis = Redis::get('servbay_redis_key'); // หรือจะใช้ Cache facade (หาก CACHE_STORE=redis) // Cache::put('servbay_redis_key', 'Hello from Redis on ServBay!', 600); // $value_cache = Cache::get('servbay_redis_key'); return "ข้อมูล Redis: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15ทดสอบที่
https://servbay-laravel-test.local/redis-test
ตัวอย่าง Relational Database (MySQL & PostgreSQL)
ServBay ติดตั้ง MySQL และ PostgreSQL มาให้พร้อม Laravel เชื่อมต่อผ่าน Eloquent ORM ได้ตามปกติ
อันดับแรก ให้สร้างฐานข้อมูล (database) สำหรับโปรเจกต์โดยใช้เครื่องมือจัดการฐานข้อมูล (phpMyAdmin, Adminer, pgAdmin ฯลฯ – เปิดได้ในแผงควบคุมของ ServBay) หรือจะใช้คำสั่งผ่านเทอร์มินัลก็ได้ เช่นชื่อ servbay_laravel_app
จากนั้นสร้างตารางด้วยระบบ migration ของ Laravel
สร้างไฟล์ Migration
รันคำสั่งนี้ที่โฟลเดอร์รากโปรเจกต์เพื่อสร้างไฟล์ migration ใหม่:
bashphp artisan make:migration create_accounts_table --create=accounts
1จะได้ไฟล์ใหม่ที่
database/migrations
แก้ไขไฟล์ migration
เปิดไฟล์ migration ที่สร้างใหม่ (ชื่อไฟล์ขึ้นต้นด้วยวัน-เวลา เช่น
YYYY_MM_DD_HHMMSS_create_accounts_table.php
) แล้วแก้เมธอดup
:php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('accounts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); // เพิ่มคอลัมน์ created_at และ updated_at }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('accounts'); } };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29แล้วบันทึกไฟล์
รัน Migration
สั่งรัน migration เพื่อสร้างตารางข้อมูลในฐานข้อมูล:
bashphp artisan migrate
1หากคอนฟิคฐานข้อมูลถูกต้อง และมี database
servbay_laravel_app
แล้ว ตารางaccounts
จะถูกสร้าง รวมถึงตารางเริ่มต้นของ Laravel เช่นusers
,password_reset_tokens
, ฯลฯ
ตัวอย่าง MySQL
ตั้งค่าฐานข้อมูล
.env
สำหรับ MySQLตรวจสอบว่า
.env
มีข้อมูลดังนี้:dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # พอร์ต MySQL ดีฟอลต์ของ ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # รหัสผ่าน MySQL ดีฟอลต์ของ ServBay
1
2
3
4
5
6ใส่ข้อมูลตัวอย่าง
เพิ่ม route ใน
routes/web.php
เพื่อแทรกข้อมูลลงตารางaccounts
:phpuse Illuminate\Support\Facades\DB; Route::get('/mysql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return 'เพิ่มบัญชีผู้ใช้ข้อมูลตัวอย่างใน MySQL สำเร็จ!'; });
1
2
3
4
5
6
7
8
9
10
11ทดสอบโดยเข้า
https://servbay-laravel-test.local/mysql-add-account
อ่านข้อมูลตัวอย่าง
เพิ่ม route เพื่อดึงข้อมูลจาก
accounts
:phpuse App\Models\Account; // หากสร้าง model Account แล้ว // หรือใช้ DB facade ตรงๆ Route::get('/mysql-accounts', function () { // ใช้ DB facade $accounts = DB::table('accounts')->get(); // หรือใช้ Eloquent ORM (ถ้ามี Account model) // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12ทดสอบโดยเข้า
https://servbay-laravel-test.local/mysql-accounts
ตัวอย่าง PostgreSQL
ตั้งค่าฐานข้อมูล
.env
สำหรับ PostgreSQLหากจะใช้ PostgreSQL แก้ค่าใน
.env
ดังนี้:dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # พอร์ต PostgreSQL ดีฟอลต์ของ ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root # ผู้ใช้ดีฟอลต์ของ PostgreSQL ใน ServBay DB_PASSWORD=password # รหัสผ่านดีฟอลต์ PostgreSQL ใน ServBay
1
2
3
4
5
6หมายเหตุ: เมื่อสลับฐานข้อมูล อาจต้องรัน
php artisan migrate:refresh
หรือphp artisan migrate
ใหม่ด้วยใส่ข้อมูลตัวอย่าง (PostgreSQL)
เพิ่ม route ใน
routes/web.php
:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay PG Demo User', 'email' => '[email protected]', 'created_at' => now(), 'updated_at' => now(), ]); return 'เพิ่มบัญชีผู้ใช้ใน PostgreSQL สำเร็จ!'; });
1
2
3
4
5
6
7
8
9
10
11ทดสอบโดยเข้า
https://servbay-laravel-test.local/pgsql-add-account
อ่านข้อมูลตัวอย่าง (PostgreSQL)
เพิ่ม route ใน
routes/web.php
:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-accounts', function () { $accounts = DB::table('accounts')->get(); return $accounts; });
1
2
3
4
5
6ทดสอบโดยเข้า
https://servbay-laravel-test.local/pgsql-accounts
สรุป
ด้วย ServBay คุณสามารถสร้างสภาพแวดล้อมการพัฒนาโลคัลสำหรับโปรเจกต์ Laravel บน macOS ได้ง่ายดาย ServBay มี PHP, Composer, เซิร์ฟเวอร์ Caddy และฐานข้อมูล/แคชหลากชนิดพร้อมใช้ ลดขั้นตอนยุ่งยากในการตั้งค่า แค่ไม่กี่ขั้นตอนก็เปิดโปรเจกต์ใหม่ ปรับแต่งเว็บเซิร์ฟเวอร์ และเริ่มพัฒนาได้ทันที พร้อมเครื่องมือทดสอบฐานข้อมูลและระบบแคชครบครัน ServBay ออกแบบมาเพื่อยกระดับประสบการณ์การพัฒนาโลคัลของคุณให้ง่ายและมีประสิทธิภาพ
หากพบปัญหาใดๆ ระหว่างใช้งาน กรุณาศึกษาคู่มือทางการของ ServBay หรือสอบถามในชุมชนผู้ใช้