สร้างและรันโปรเจค Laravel ด้วย ServBay
ภาพรวม
ServBay คือสภาพแวดล้อมสำหรับการพัฒนาเว็บแบบครบวงจรที่รองรับทั้ง macOS และ Windows พร้อมติดตั้งซอฟต์แวร์ยอดนิยมไว้ในตัว เช่น PHP, Node.js, Python, Go, Java รวมถึงฐานข้อมูลยอดนิยม (MySQL, PostgreSQL, MongoDB) บริการแคช (Redis, Memcached) และเซิร์ฟเวอร์เว็บ (Caddy, Nginx, Apache)
เอกสารนี้จะแนะนำวิธีสร้าง กำหนดค่า และรันโปรเจค Laravel ในสภาพแวดล้อม ServBay โดยใช้ PHP composer ที่มากับ ServBay พร้อมฟีเจอร์การจัดการเว็บไซต์ (หรือ "โฮสต์") อย่างสะดวก
Laravel คืออะไร?
Laravel คือกรอบงาน (Framework) PHP แบบโอเพ่นซอร์สที่ได้รับความนิยมสูงสุด พัฒนาโดย Taylor Otwell โดยจะเน้นการใช้งานสถาปัตยกรรม MVC (Model-View-Controller) และมีฟีเจอร์มากมายเพื่อช่วยให้งานพัฒนาเว็บเป็นเรื่องง่าย เช่น การรับรองตัวผู้ใช้, Routing, การจัดการ session, แคช และการทำงานกับฐานข้อมูล จุดเด่นของ Laravel คือไวยากรณ์ที่สวยงาม ฟีเจอร์ครบถ้วน และชุมชนขนาดใหญ่จึงเป็นตัวเลือกที่ดีในการสร้างแอปพลิเคชั่นเว็บสมัยใหม่ที่ดูแลง่าย
จุดเด่นและข้อได้เปรียบหลักของ Laravel
- ไวยากรณ์ที่สวยงาม: เขียนโค้ดง่าย เข้าใจง่าย เพิ่มประสิทธิภาพและดูแลโค้ดได้ดี
- Eloquent ORM: เครื่องมือเชื่อมต่อฐานข้อมูลในรูปแบบ ActiveRecord ที่ใช้งานง่าย
- Artisan Console: มีชุดคำสั่ง CLI สำหรับ migrate ฐานข้อมูล, สร้างโค้ด, ทดสอบโค้ด ฯลฯ
- Blade Template Engine: ระบบ template ที่สะอาดสำหรับสร้าง view แบบไดนามิก
- อีโคซิสเต็มที่แข็งแกร่ง: มี package ของ Laravel ทั้งจากทีมงานและชุมชน ใช้ Composer ติดตั้งง่าย
- สนับสนุนจากชุมชน: มีบทความ, คู่มือ, โค้ดตัวอย่าง และคำตอบมากมายจากผู้ใช้ทั่วโลก
ข้อได้เปรียบของ ServBay สำหรับนักพัฒนา Laravel
ServBay เติมเต็มความต้องการของนักพัฒนา Laravel ได้อย่างลงตัว:
- สภาพแวดล้อมครบครัน: มีหลายเวอร์ชันของ PHP, Composer และฐานข้อมูล/แคชพร้อมใช้งาน ไม่ต้องติดตั้งแยก
- จัดการง่าย: สลับเวอร์ชัน PHP, ตั้งค่าเว็บไซต์, สตาร์ท/หยุดเซอร์วิส ได้ผ่านอินเตอร์เฟซกราฟฟิก
- เซิร์ฟเวอร์เว็บปรับแต่งมาแล้ว: ServBay ใช้ Caddy พร้อมปรับแต่งสำหรับ Laravel และเฟรมเวิร์กยอดนิยม ลดขั้นตอนตั้งค่าเซิร์ฟเวอร์
- รองรับ HTTPS อัตโนมัติ: สำหรับโดเมน .local ServBay จะสร้าง SSL certificate และเปิด HTTPS ให้โดยอัตโนมัติ เพิ่มความปลอดภัยและสมจริงสำหรับงานท้องถิ่น
สร้างโปรเจค Laravel
ServBay แนะนำให้คุณจัดเก็บโปรเจคเว็บไซต์ไว้ในโฟลเดอร์เหล่านี้เพื่อความเรียบร้อยและจัดการง่าย:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
ตรวจสอบว่า Composer พร้อมใช้งาน
ServBay ติดตั้ง Composer พร้อมใช้งานอยู่แล้ว โดยสามารถตรวจเช็คได้จาก terminal:
bashcomposer --version
1หากแสดงเวอร์ชันแสดงว่า Composer พร้อมสำหรับงานแล้ว
สร้างโปรเจค Laravel ใหม่
เปิด terminal แล้วเปลี่ยน directory ไปยังโฟลเดอร์แนะนำของ ServBay จากนั้นใช้ Composer สร้างโปรเจคใหม่ (โฟลเดอร์ที่สร้างคือ
servbay-laravel-app
):macOS:
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
7Windows:
cmdcd C:\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 และ dependencies ทั้งหมด
เข้าสู่โฟลเดอร์โปรเจค
ตรวจสอบว่าคุณอยู่ที่ root directory ของ Laravel โปรเจค:
macOS:
bashcd /Applications/ServBay/www/servbay-laravel-app
1Windows:
cmdcd C:\ServBay\www\servbay-laravel-app
1
การตั้งค่าเริ่มต้น
สร้าง application key
Laravel ต้องใช้ application key เพื่อรักษาความปลอดภัยให้ session และข้อมูลเข้ารหัส ให้รันคำสั่ง Artisan ที่ root ของโปรเจค:
ตำแหน่งโปรเจค:
- macOS:
/Applications/ServBay/www/servbay-laravel-app
- Windows:
C:\ServBay\www\servbay-laravel-app
bashphp artisan key:generate
1คำสั่งนี้จะสร้างค่า
APP_KEY
ในไฟล์.env
ของคุณ- macOS:
ตั้งค่าสิ่งแวดล้อมในไฟล์
.env
Laravel จะใช้ไฟล์
.env
เพื่อจัดการตัวแปรสิ่งแวดล้อมของโปรเจค เช่น การเชื่อมต่อฐานข้อมูล, URL, ฯลฯ เปิดไฟล์.env
ที่ root ของโปรเจคแล้วกำหนดค่าตามต้องการ โดยตรวจสอบควรตั้งค่าดังนี้: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 # User สำหรับฐานข้อมูล MySQL บน ServBay DB_PASSWORD=password # รหัสผ่าน MySQL ของ 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)
ใช้ฟีเจอร์ Site Management ของ ServBay เพื่อตั้งค่าเซิร์ฟเวอร์เว็บ ถอดโดเมนให้ชี้ไปที่โฟลเดอร์ public
ของโปรเจค Laravel
เปิดแผงควบคุม ServBay
เริ่มแอป ServBay แล้วเปิดแผงควบคุม
เพิ่มเว็บไซต์ใหม่
ไปที่ส่วน "เว็บไซต์" แล้วกดเพิ่ม (สัญลักษณ์
+
หรือไอคอนอื่น) เพื่อสร้างเว็บไซต์ใหม่กรอกข้อมูลเว็บไซต์
ตัวอย่างการตั้งค่าเว็บไซต์แบบพื้นฐาน:
ชื่อ (Name):
My First Laravel Dev Site
(ตั้งชื่อใช้งานตามสะดวก)โดเมน (Domain):
servbay-laravel-test.local
(ชื่อโดเมนสำหรับใช้ทดสอบกับ browser)ประเภทเว็บไซต์ (Site Type):
PHP
เวอร์ชัน PHP (PHP Version): เลือกให้ตรงกับ Laravel เวอร์ชันที่ใช้ เช่น
8.3
root directory (Site Root):
- macOS:
/Applications/ServBay/www/servbay-laravel-app/public
- Windows:
C:\ServBay\www\servbay-laravel-app\public
(สำคัญ: ต้องชี้ไปที่
public
ของโปรเจค Laravel)- macOS:
ดูรายละเอียดวิธีเพิ่มเว็บไซต์ได้ที่ คู่มือการเพิ่มเว็บไซต์แรก ของ ServBay (แนะนำให้ดูเวอร์ชันภาษาอังกฤษ)
บันทึกและนำการเปลี่ยนแปลงไปใช้
กดบันทึกแล้ว ServBay จะอัปเดตค่าเซิร์ฟเวอร์เว็บให้อัตโนมัติ (ค่าตั้งต้นคือ Caddy) หากมีแจ้งเตือนให้ restart server ให้ดำเนินการตามนั้น
ทดสอบการเข้าถึงโปรเจค
ขณะนี้โปรเจค Laravel ของคุณควรจะเข้าถึงได้ผ่านโดเมนที่ตั้งค่าไว้แล้ว
เปิดโปรแกรม browser
เข้าโดเมนที่ตั้งค่าไว้ เช่น
https://servbay-laravel-test.local
ดูผลลัพธ์
ถ้าตั้งค่าถูกต้องจะเห็นหน้า welcome ของ 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!
ใน browser
ตัวอย่างเชื่อมต่อฐานข้อมูล
Laravel มีระบบชั้นฐานข้อมูลและ ORM (Eloquent) ที่แข็งแกร่ง สามารถเชื่อมต่อได้หลายชนิด ServBay ติดตั้ง MySQL, PostgreSQL, MongoDB, Redis, Memcached ให้พร้อมทดสอบการพัฒนา
ตัวอย่าง NoSQL Database
ServBay มี Redis กับ Memcached พร้อมใช้งานและติดตั้ง PHP extension มาด้วย
ตัวอย่าง Memcached
ตั้งค่าในไฟล์
.env
เพิ่มการเชื่อมต่อ Memcached หากยังไม่ได้กำหนด:
dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # พอร์ตสำหรับ Memcached ของ ServBay
1
2
3ใช้งาน Memcached ในแอป
ใช้ facade cache ของ Laravel ผ่าน route หรือ controller ดังนี้:
แก้ไขหรือเพิ่มใน
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 Data: " . $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:
dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # ไม่มีรหัสผ่าน Redis ของ ServBay REDIS_PORT=6379 # พอร์ต Redis ของ ServBay
1
2
3
4หมายเหตุ: หากคุณตั้งค่า Redis และ Memcached พร้อมกันต้องเลือก CACHE_STORE ที่ต้องการทดสอบโดยคอมเมนต์อีกฝั่งหนึ่ง
ใช้งาน Redis ในแอป
ใช้ facade Redis หรือ Cache ของ Laravel เพิ่ม route ทดสอบใน
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 Data: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15เปิด
https://servbay-laravel-test.local/redis-test
เพื่อดูผลลัพธ์
ตัวอย่างฐานข้อมูลเชิงสัมพันธ์ (MySQL & PostgreSQL)
ServBay ติดตั้ง MySQL และ PostgreSQL พร้อมใช้งาน Eloquent ORM ของ Laravel เชื่อมต่อได้อย่างง่ายดาย
เริ่มจากสร้างฐานข้อมูลใหม่ คุณสามารถใช้ phpMyAdmin, Adminer, pgAdmin (ที่มีใน ServBay) หรือสั่งผ่าน command line สำหรับฐานข้อมูล servbay_laravel_app
ต่อไปใช้ migration ของ Laravel สร้างโครงสร้างตาราง
สร้างไฟล์ Migration
ที่ root directory ของโปรเจค รันคำสั่ง Artisan เพื่อสร้าง migration ใหม่:
bashphp artisan make:migration create_accounts_table --create=accounts
1ไฟล์ migration จะอยู่ที่
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(); // เพิ่ม columns 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 เพื่อสร้างตาราง
ที่ root directory ของโปรเจค รันคำสั่ง Artisan:
bashphp artisan migrate
1หากฐานข้อมูล
servbay_laravel_app
สร้างไว้แล้ว และตั้งค่าถูกต้อง ตารางaccounts
จะถูกสร้างขึ้น พร้อมตารางมาตรฐานอื่น เช่นusers
,password_reset_tokens
,failed_jobs
,cache
,cache_locks
,jobs
,job_batches
ฯลฯ
ตัวอย่าง 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' => 'demo-user@servbay.test', '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 ใน
routes/web.php
สำหรับอ่านข้อมูลจากaccounts
:phpuse App\Models\Account; // ถ้าสร้างโมเดล Account แล้ว // หรือใช้ DB facade ตรงๆ Route::get('/mysql-accounts', function () { // ใช้ DB facade $accounts = DB::table('accounts')->get(); // หรือใช้ Eloquent ORM (ถ้ามีโมเดล Account) // $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 # User พื้นฐาน PostgreSQL บน ServBay DB_PASSWORD=password # รหัสผ่าน PostgreSQL บน ServBay
1
2
3
4
5
6หมายเหตุ: หลังเปลี่ยน connection อาจต้อง migrate หรือ refresh migration ใหม่ด้วย
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' => 'pg-demo-user@servbay.test', '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 ได้ง่ายและรวดเร็ว มี PHP, Composer, Caddy Web Server, ฐานข้อมูล และบริการแคชพร้อมใช้งาน ประหยัดเวลาตั้งค่าสภาพแวดล้อมเพียงไม่กี่ขั้นตอน คุณจะได้โปรเจคใหม่ พร้อมเซิร์ฟเวอร์เว็บและฐานข้อมูลสำหรับพัฒนาและทดสอบทุกฟีเจอร์ของ Laravel ได้อย่างเต็มประสิทธิภาพ ServBay ถูกออกแบบมาเพื่อให้การพัฒนาท้องถิ่นของคุณง่ายและสะดวกที่สุด
หากคุณพบปัญหาระหว่างใช้งาน สามารถค้นหาคู่มือบนเว็บไซต์ทางการของ ServBay หรือสอบถามชุมชนเพื่อนักพัฒนาได้เช่นกัน