Tạo và chạy dự án Laravel trên ServBay
Tổng Quan
ServBay là môi trường phát triển Web mạnh mẽ dành riêng cho macOS, tích hợp sẵn nhiều phần mềm phổ biến như PHP, Node.js, Python, Go, Java, các hệ quản trị cơ sở dữ liệu (MySQL, PostgreSQL, MongoDB), dịch vụ cache (Redis, Memcached) và các máy chủ web (Caddy, Nginx, Apache).
Tài liệu này sẽ hướng dẫn bạn cách nhanh chóng tạo, cấu hình và vận hành một dự án Laravel trên môi trường ServBay. Chúng ta sẽ khai thác môi trường PHP, trình quản lý gói Composer tích hợp sẵn và tính năng quản lý website (trước đây gọi là “host”) vượt trội của ServBay để đơn giản hóa quá trình phát triển.
Laravel là gì?
Laravel là một framework PHP mã nguồn mở nổi tiếng do Taylor Otwell phát triển. Laravel tuân theo mô hình kiến trúc MVC (Model-View-Controller), mang đến nhiều tính năng sẵn sàng sử dụng nhằm đơn giản hóa các tác vụ thường gặp trong phát triển web như xác thực người dùng, định tuyến, quản lý session, cache, thao tác cơ sở dữ liệu,... Laravel nổi tiếng nhờ cú pháp tinh gọn, bộ tính năng phong phú và cộng đồng hỗ trợ đông đảo, là lựa chọn lý tưởng để xây dựng ứng dụng web hiện đại, dễ bảo trì.
Những ưu điểm nổi bật của Laravel
- Cú pháp tinh gọn: Code ngắn gọn, dễ đọc, nâng cao hiệu suất lập trình.
- Eloquent ORM: Hỗ trợ ActiveRecord mạnh mẽ, giúp thao tác cơ sở dữ liệu đơn giản và trực quan.
- Artisan Console: Bộ công cụ dòng lệnh hữu ích hỗ trợ di chuyển dữ liệu, sinh code, kiểm thử,...
- Blade Template Engine: Hệ thống template dễ dùng, tiện lợi xây dựng view động.
- Hệ sinh thái phong phú: Đa dạng package chính thức và bên thứ ba, dễ dàng cài đặt qua Composer.
- Cộng đồng lớn mạnh: Kho tài liệu, tutorial, giải pháp đa dạng với cộng đồng phát triển năng động.
Lợi ích khi phát triển Laravel với ServBay
ServBay mang lại nhiều tiện ích dành riêng cho lập trình viên Laravel:
- Môi trường tích hợp sẵn: ServBay cài đặt nhiều phiên bản PHP, Composer, cơ sở dữ liệu và dịch vụ cache phổ biến mà không cần thao tác thủ công.
- Quản lý đơn giản: Giao diện trực quan giúp chuyển đổi nhanh chóng phiên bản PHP, quản lý cấu hình web, khởi động/dừng dịch vụ thuận tiện.
- Máy chủ web tối ưu sẵn: Caddy được cấu hình tự động tương thích các framework PHP thường gặp (bao gồm Laravel) giúp giảm tải quá trình setup máy chủ web.
- Hỗ trợ HTTPS: Tự động cấp chứng chỉ SSL do ServBay User CA phát hành cho domain
.local
, bật HTTPS mặc định – nâng cao độ an toàn và môi trường phát triển sát thực tế.
Tạo dự án Laravel
ServBay đề xuất lưu trữ các dự án web của bạn trong thư mục /Applications/ServBay/www
để bảo đảm cấu trúc dự án ngăn nắp, dễ quản lý.
Kiểm tra Composer đã cài đặt
ServBay cài đặt Composer cùng quá trình setup, bạn không cần tự cài thêm. Kiểm tra Composer bằng Terminal:
bashcomposer --version
1Nếu xuất hiện số phiên bản nghĩa là Composer đã sẵn sàng sử dụng.
Tạo mới dự án Laravel
Mở Terminal, chuyển tới thư mục dự án ServBay đề xuất, sử dụng Composer để tạo một dự án Laravel mới với tên
servbay-laravel-app
:bashcd /Applications/ServBay/www # Tạo thư mục dự án mkdir servbay-laravel-app # Di chuyển vào thư mục dự án cd servbay-laravel-app # Tạo dự án Laravel ngay trong thư mục này composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Quá trình này sẽ tải về Laravel cùng toàn bộ các phụ thuộc.
Chuyển tới thư mục dự án
Đảm bảo đang ở thư mục gốc của dự án Laravel vừa tạo:
bashcd /Applications/ServBay/www/servbay-laravel-app
1
Khởi tạo, cấu hình ban đầu
Sinh khóa ứng dụng
Laravel yêu cầu một khóa ứng dụng để bảo mật session và dữ liệu mã hóa. Tại thư mục gốc dự án (
/Applications/ServBay/www/servbay-laravel-app
), chạy lệnh Artisan:bashphp artisan key:generate
1Lệnh này sẽ cập nhật giá trị
APP_KEY
trong file.env
.Cấu hình biến môi trường (
.env
)Laravel dùng file
.env
để quản lý biến môi trường (CSDL, URL app, v.v...). Mở file.env
ở gốc dự án và cập nhật cấu hình theo nhu cầu, đặc biệt lưu ý các cấu hình cơ bản sau:dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # Giá trị sinh ra bởi php artisan key:generate APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # Cấu hình cơ sở dữ liệu (MySQL) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # Tên database bạn dùng DB_USERNAME=root # User mặc định ServBay DB_PASSWORD=password # Mật khẩu mặc định của ServBay # Cấu hình cache/hàng đợi (Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis mặc định ServBay không có mật khẩu REDIS_PORT=6379 # Cấu hình cache/hàng đợi (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
26Lưu ý: Tùy dịch vụ sử dụng, bạn có thể cần thay đổi các biến như
DB_*
,REDIS_*
,MEMCACHED_*
cho phù hợp. Thông tin tài khoản mặc định xem trên bảng điều khiển ServBay.
Cấu hình máy chủ Web (Thêm website trên ServBay)
Hãy tận dụng tính năng quản lý website của ServBay để trỏ tên miền tới thư mục public
của dự án Laravel.
Mở bảng điều khiển ServBay
Khởi động ứng dụng ServBay và truy cập bảng điều khiển.
Thêm website mới
Vào phần “Website” trên bảng điều khiển. Nhấn vào nút thêm (
+
hoặc biểu tượng tương ứng) để thêm một website mới.Điền thông tin website
Điền các trường cấu hình như sau:
- Name:
My First Laravel Dev Site
(Tên tùy chọn, dễ nhận biết) - Domain:
servbay-laravel-test.local
(Domain bạn muốn truy cập) - Site Type:
PHP
- PHP Version: Chọn PHP tương thích với dự án, ví dụ
8.3
. - Site Root:
/Applications/ServBay/www/servbay-laravel-app/public
(Lưu ý: phải chỉ tới thư mụcpublic
của dự án Laravel!)
Để biết thêm chi tiết, xem hướng dẫn Thêm website đầu tiên trên tài liệu chính thức của ServBay (xem bản tiếng Anh).
- Name:
Lưu và áp dụng thiết lập
Lưu thông tin website. ServBay sẽ tự động cập nhật cấu hình máy chủ web (Caddy là mặc định). Nếu hệ thống yêu cầu khởi động lại máy chủ web, hãy thực hiện theo hướng dẫn.
Kiểm tra truy cập ban đầu
Dự án Laravel của bạn giờ đã có thể truy cập qua domain đã cấu hình.
Mở trình duyệt
Truy cập domain vừa thiết lập, ví dụ:
https://servbay-laravel-test.local
.Kiểm tra kết quả
Nếu mọi thứ đã cấu hình đúng, bạn sẽ thấy trang chào mừng của Laravel.
Thêm đoạn code mẫu kiểm tra nhanh
Để kiểm tra rõ hơn, hãy thêm route trả về “Hello ServBay!” trong file routes/web.php
.
Tìm đến file routes/web.php
trong dự án và thêm hoặc sửa như sau:
<?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!'; // Sửa hoặc thêm dòng này
});
// ... các route khác
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Lưu file và truy cập lại https://servbay-laravel-test.local
. Lúc này, trình duyệt sẽ hiển thị Hello ServBay!
.
Tích hợp cơ sở dữ liệu (CSDL) - ví dụ
Laravel hỗ trợ ORM Eloquent và lớp truy xuất CSDL mạnh mẽ, dễ dàng thao tác với nhiều loại CSDL khác nhau. ServBay đã cài sẵn MySQL, PostgreSQL, MongoDB, Redis, Memcached... hỗ trợ phát triển và kiểm thử local nhanh chóng.
Ví dụ cơ sở dữ liệu NoSQL
ServBay tích hợp Redis và Memcached kèm PHP extension đầy đủ.
Ví dụ Memcached
Cấu hình
.env
Cập nhật kết nối Memcached trong
.env
(nếu chưa có):dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # Cổng Memcached mặc định của ServBay
1
2
3Sử dụng Memcached trong code
Dùng facade cache của Laravel trong route hoặc controller:
Thêm route vào
routes/web.php
:phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // Lưu dữ liệu vào cache, thời hạn 10 phút (600 giây) Cache::put('servbay_memcached_key', 'Hello from Memcached on ServBay!', 600); // Lấy dữ liệu từ cache $value = Cache::get('servbay_memcached_key'); if ($value) { return "Dữ liệu Memcached: " . $value; } else { return "Dữ liệu Memcached không tồn tại hoặc đã hết hạn."; } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Truy cập
https://servbay-laravel-test.local/memcached-test
để kiểm tra.
Ví dụ Redis
Cấu hình
.env
Cập nhật thông tin Redis trong
.env
:dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis mặc định trên ServBay không có mật khẩu REDIS_PORT=6379 # Cổng Redis mặc định
1
2
3
4Lưu ý: Nếu đồng thời dùng cả Memcached và Redis, đảm bảo chỉ nên kích hoạt một dòng
CACHE_STORE
trong.env
(dùng dấu # để bỏ qua dòng không dùng).Sử dụng Redis trong code
Thêm route kiểm tra vào
routes/web.php
:phpuse Illuminate\Support\Facades\Redis; // Hoặc dùng Cache facade nếu CACHE_STORE=redis // use Illuminate\Support\Facades\Cache; Route::get('/redis-test', function () { // Dùng facade Redis Redis::set('servbay_redis_key', 'Hello from Redis on ServBay!'); $value_redis = Redis::get('servbay_redis_key'); // Hoặc dùng Cache facade (nếu CACHE_STORE=redis) // Cache::put('servbay_redis_key', 'Hello from Redis on ServBay!', 600); // $value_cache = Cache::get('servbay_redis_key'); return "Dữ liệu Redis: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Truy cập
https://servbay-laravel-test.local/redis-test
để kiểm tra.
Ví dụ cơ sở dữ liệu quan hệ (MySQL & PostgreSQL)
ServBay có sẵn MySQL và PostgreSQL. Laravel Eloquent ORM dễ dàng hỗ trợ cả hai.
Trước hết, hãy tạo cơ sở dữ liệu cho dự án. Bạn có thể dùng công cụ quản trị như phpMyAdmin, Adminer, pgAdmin (truy cập ngay trên bảng điều khiển ServBay) hoặc dùng lệnh dòng.
Tiếp theo, dùng tính năng migration của Laravel để tạo cấu trúc bảng.
Tạo migration file
Tại thư mục gốc dự án, chạy lệnh:
bashphp artisan make:migration create_accounts_table --create=accounts
1Lệnh sẽ tạo mới file migration trong thư mục
database/migrations
.Sửa nội dung migration
Mở file migration mới (có tên tương tự
YYYY_MM_DD_HHMMSS_create_accounts_table.php
), chỉnh phương thứcup
như sau: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(); // Tạo trường created_at và 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
29Lưu lại.
Chạy migration
Tại thư mục gốc chạy lệnh để tạo bảng:
bashphp artisan migrate
1Nếu cấu hình database đúng và database
servbay_laravel_app
đã có, lệnh sẽ tạo bảngaccounts
cùng các bảng mặc định của Laravel.
Ví dụ MySQL
Cấu hình
.env
cho MySQLĐảm bảo
.env
như sau:dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # Cổng mặc định MySQL DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # Mật khẩu mặc định MySQL trên ServBay
1
2
3
4
5
6Thêm dữ liệu mẫu
Thêm route vào
routes/web.php
để thêm bản ghi mới: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 'Account added to MySQL!'; });
1
2
3
4
5
6
7
8
9
10
11Truy cập
https://servbay-laravel-test.local/mysql-add-account
để thêm dữ liệu.Đọc dữ liệu mẫu
Thêm route vào
routes/web.php
để xem dữ liệu:phpuse App\Models\Account; // Nếu đã tạo model Account // Hoặc dùng trực tiếp DB facade Route::get('/mysql-accounts', function () { // Dùng DB facade $accounts = DB::table('accounts')->get(); // Hoặc dùng Eloquent ORM (nếu có model) // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12Truy cập
https://servbay-laravel-test.local/mysql-accounts
để kiểm tra dữ liệu bảng.
Ví dụ PostgreSQL
Cấu hình
.env
cho PostgreSQLĐể dùng PostgreSQL, cập nhật
.env
thành:dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # Cổng PostgreSQL mặc định của ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root # User mặc định trên ServBay DB_PASSWORD=password # Mật khẩu mặc định
1
2
3
4
5
6Lưu ý: Sau khi chuyển kết nối database, có thể cần chạy lại
php artisan migrate:refresh
hoặcphp artisan migrate
để tạo bảng trên PostgreSQL.Thêm dữ liệu mẫu (PostgreSQL)
Thêm route vào
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 'Account added to PostgreSQL!'; });
1
2
3
4
5
6
7
8
9
10
11Truy cập
https://servbay-laravel-test.local/pgsql-add-account
để thêm dữ liệu.Đọc dữ liệu mẫu (PostgreSQL)
Thêm route vào
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
6Truy cập
https://servbay-laravel-test.local/pgsql-accounts
để kiểm tra dữ liệu bảng.
Kết luận
Với ServBay, bạn có thể dễ dàng xây dựng môi trường phát triển cục bộ cho Laravel trên macOS. Hệ thống PHP, Composer, máy chủ web Caddy và các dịch vụ cơ sở dữ liệu, cache được tích hợp sẵn giúp thiết lập nhanh chóng, tiết kiệm thời gian cấu hình. Chỉ với vài thao tác, bạn đã có thể tạo mới dự án Laravel, cấu hình website và bắt đầu phát triển, đồng thời kiểm thử tích hợp với database và cache thuận tiện. ServBay hướng tới trải nghiệm phát triển tối ưu, tiện lợi cho lập trình viên.
Nếu gặp bất kỳ khó khăn nào, bạn hãy tham khảo tài liệu chính thức hoặc nhờ sự hỗ trợ từ cộng đồng ServBay.