Tạo và chạy dự án Laravel trên ServBay
Tổng quan
ServBay là một môi trường phát triển web local mạnh mẽ dành cho macOS và Windows, 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), các dịch vụ cache (Redis, Memcached) và máy chủ web như 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à chạy một dự án Laravel trên ServBay. Chúng ta sẽ tận dụng PHP tích hợp sẵn, Composer và công cụ quản lý website (trước gọi là “host”) của ServBay để đơn giản hóa toàn bộ quá trình.
Laravel là gì?
Laravel là một framework PHP mã nguồn mở rất phổ biến, được tạo ra bởi Taylor Otwell. Nó tuân thủ kiến trúc MVC (Model-View-Controller) và cung cấp nhiều tính năng mạnh mẽ giúp đơ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 và thao tác cơ sở dữ liệu. Laravel nổi tiếng với cú pháp thanh lịch, bộ tính năng phong phú và sự hỗ trợ từ cộng đồng, là lựa chọn lý tưởng để xây dựng ứng dụng web hiện đại, dễ bảo trì.
Đặc điểm nổi bật và lợi ích của Laravel
- Cú pháp gọn gàng: Mã nguồn sạch sẽ, dễ đọc, tăng hiệu suất và khả năng bảo trì.
- Eloquent ORM: Hệ thống ActiveRecord mạnh mẽ, giúp làm việc với database đơn giản và trực quan.
- Artisan Console: Công cụ dòng lệnh hỗ trợ migration, sinh mã nguồn, chạy test... rất tiện lợi.
- Blade Template Engine: Máy chủ mẫu sở hữu cú pháp đơn giản, dễ xây dựng view động.
- Hệ sinh thái phong phú: Nhiều gói mở rộng chính thức và bên thứ ba, dễ dàng tích hợp qua Composer.
- Cộng đồng mạnh mẽ: Tài nguyên dồi dào, nhiều hướng dẫn, giải pháp hỗ trợ.
Lợi thế khi dùng ServBay để phát triển Laravel
ServBay mang đến sự tiện lợi tối đa cho lập trình viên Laravel:
- Môi trường tích hợp: Đã cài sẵn nhiều bản PHP, Composer và các dịch vụ cơ sở dữ liệu/cache thông dụng, không cần cài đặt riêng lẻ.
- Dễ dàng quản lý: Giao diện đồ họa cho phép bạn chuyển đổi phiên bản PHP, cấu hình website, khởi động/dừng dịch vụ rất đơn giản.
- Máy chủ web được tối ưu: Sử dụng Caddy mặc định, ServBay đã cấu hình sẵn cho các framework PHP như Laravel, giúp giảm thiểu khâu thiết lập web server.
- Hỗ trợ HTTPS: ServBay tự động cấp SSL certificate cho domain dạng
.local
ở local, bật HTTPS mặc định để quá trình phát triển local giống với môi trường thực tế hơn.
Tạo dự án Laravel mới
ServBay khuyến nghị bạn lưu trữ các dự án website tại những thư mục sau, giúp quản lý và cấu trúc file thuận tiện:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Kiểm tra Composer đã sẵn sàng
ServBay đã tích hợp Composer ngay khi cài đặt, bạn không cần thêm thao tác gì. Kiểm tra Composer bằng terminal:
bashcomposer --version
1Nếu hiển thị số phiên bản, Composer đã sẵn sàng sử dụng.
Tạo dự án Laravel mới
Mở terminal, truy cập vào thư mục dự án của ServBay, và dùng Composer tạo dự án Laravel mới với tên là
servbay-laravel-app
:macOS:
bashcd /Applications/ServBay/www # Tạo thư mục dự án mkdir servbay-laravel-app # Vào thư mục dự án cd servbay-laravel-app # Tạo dự án Laravel với Composer trong thư mục này composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Windows:
cmdcd C:\ServBay\www # Tạo thư mục dự án mkdir servbay-laravel-app # Vào thư mục dự án cd servbay-laravel-app # Tạo dự án Laravel với Composer trong thư mục này composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Composer sẽ tự động tải và cài đặt Laravel cùng các gói phụ thuộc.
Truy cập thư mục dự án
Đảm bảo terminal đang được đặt tại thư mục gốc dự án Laravel vừa tạo:
macOS:
bashcd /Applications/ServBay/www/servbay-laravel-app
1Windows:
cmdcd C:\ServBay\www\servbay-laravel-app
1
Khởi tạo cấu hình dự án
Tạo khóa ứng dụng
Laravel sử dụng khóa
APP_KEY
để bảo mật session và dữ liệu mã hóa. Chạy lệnh Artisan sau tại thư mục gốc dự án để sinh key:bashphp artisan key:generate
1Lệnh này sẽ tự động tạo giá trị cho trường
APP_KEY
trong file.env
.Cấu hình biến môi trường (
.env
)Laravel dùng file
.env
để cấu hình các biến môi trường như database, địa chỉ ứng dụng, v.v... Mở và chỉnh sửa file.env
tại thư mục gốc phù hợp với nhu cầu. Đảm bảo cấu hình cơ bản như sau:dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # Giá trị sinh bởi lệnh trên APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # Ví dụ cấu hình database (MySQL) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # Tên database bạn muốn sử dụng DB_USERNAME=root # User mặc định của ServBay DB_PASSWORD=password # Mật khẩu mặc định của ServBay # Ví dụ cấu hình cache/queue (Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis mặc định của ServBay không có mật khẩu REDIS_PORT=6379 # Ví dụ cấu hình cache/queue (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 ý: Tuỳ thuộc dịch vụ đang dùng, hãy điều chỉnh các biến
DB_*
,REDIS_*
,MEMCACHED_*
theo thực tế. Thông tin user, password của database mặc định có thể xem trong ServBay Control Panel.
Cấu hình máy chủ web (Thêm website trong ServBay)
Sử dụng tính năng quản lý website của ServBay để trỏ domain về thư mục public
của dự án Laravel.
Mở Control Panel ServBay
Khởi động app ServBay và mở Control Panel.
Thêm website mới
Vào mục 'Website' trong Control Panel. Nhấn nút thêm (thường là biểu tượng
+
) để tạo website mới.Nhập thông tin website
Điền thông tin như sau:
Tên (Name):
My First Laravel Dev Site
(tùy chọn, giúp dễ nhận biết)Domain:
servbay-laravel-test.local
(domain truy cập qua trình duyệt)Loại website:
PHP
Phiên bản PHP: Chọn bản phù hợp với Laravel đang dùng, ví dụ
8.3
.Thư mục website (Site Root):
- macOS:
/Applications/ServBay/www/servbay-laravel-app/public
- Windows:
C:\ServBay\www\servbay-laravel-app\public
(Quan trọng: Phải trỏ tới thư mục
public
của dự án Laravel)- macOS:
Tham khảo thêm hướng dẫn Thêm website đầu tiên (tìm link bản tiếng Anh!).
Lưu và áp dụng
Lưu cấu hình website. ServBay sẽ tự động cập nhật cấu hình máy chủ web (mặc định là Caddy). Nếu được yêu cầu, khởi động lại web server theo hướng dẫn.
Kiểm tra truy cập ban đầu
Dự án Laravel của bạn đã sẵn sàng và có thể truy cập qua domain đã cấu hình.
Mở trình duyệt
Nhập domain như
https://servbay-laravel-test.local
vào thanh địa chỉ.Kiểm tra kết quả
Nếu mọi thứ đúng, bạn sẽ thấy trang chào mừng của Laravel.
Thêm đoạn mã demo cơ bản
Để kiểm tra rõ ràng hơn, hãy thêm một route đơn giản vào file routes/web.php
để trả về "Hello ServBay!".
Tìm và chỉnh sửa file routes/web.php
như sau:
php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Đây là nơi đăng ký các route trên web cho ứng dụng.
| Các route này được load bởi RouteServiceProvider, group theo middleware "web".
| Hãy bắt đầu tạo điều tuyệt vời tại đây!
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // Sửa hoặc thêm dòng này
});
// ... các route khác
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
Lưu xong, truy cập lại https://servbay-laravel-test.local
, bạn sẽ thấy dòng chữ Hello ServBay!
.
Ví dụ tích hợp cơ sở dữ liệu
Laravel hỗ trợ nhiều loại database và ORM Eloquent giúp thao tác rất dễ dàng. ServBay cài sẵn MySQL, PostgreSQL, MongoDB, Redis, Memcached để bạn phát triển và kiểm thử local nhanh chóng.
Ví dụ NoSQL
ServBay mặc định có Redis và Memcached, bản PHP cũng đã có extension tương ứng.
Demo với Memcached
Cấu hình
.env
Thêm thông tin kết nối Memcached:
dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # Port Memcached mặc định của ServBay
1
2
3Sử dụng Memcached
Dùng facade Cache của Laravel để làm việc với Memcached:
Thêm route ví dụ vào
routes/web.php
:phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // Lưu dữ liệu vào cache, hạn dùng 10 phút (600 giây) Cache::put('servbay_memcached_key', 'Hello from Memcached on ServBay!', 600); // Đọc dữ liệu từ cache $value = Cache::get('servbay_memcached_key'); if ($value) { return "Dữ liệu từ Memcached: " . $value; } else { return "Không có dữ liệu Memcached hoặc dữ liệu đã 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.
Demo với Redis
Cấu hình
.env
Thêm thông tin kết nối Redis:
dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # Redis mặc định không có mật khẩu REDIS_PORT=6379 # Port Redis mặc định của ServBay
1
2
3
4Lưu ý: Nếu dùng cả Redis và Memcached, chỉ nên bật một loại cache tại biến
CACHE_STORE
(bằng cách comment dòng còn lại).Sử dụng Redis
Dùng facade Redis (hoặc Cache nếu
CACHE_STORE=redis
) để thao tác.Thêm route ví dụ vào
routes/web.php
:phpuse Illuminate\Support\Facades\Redis; // hoặc dùng Cache nếu muốn, nhưng cần 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 facade Cache (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 từ 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ụ với CSDL quan hệ (MySQL & PostgreSQL)
ServBay đã tích hợp máy chủ MySQL và PostgreSQL. Laravel Eloquent ORM có thể kết nối và làm việc với chúng.
Đầu tiên, hãy tạo một database cho dự án. Dùng các công cụ như phpMyAdmin, Adminer, pgAdmin (truy cập qua Control Panel ServBay) hoặc lệnh dòng để tạo database servbay_laravel_app
.
Tiếp theo, sử dụng tiện ích migration của Laravel để tạo bảng dữ liệu.
Tạo file migration
Tại thư mục dự án, chạy lệnh sau:
bashphp artisan make:migration create_accounts_table --create=accounts
1File migration mới sẽ xuất hiện tại thư mục
database/migrations
.Chỉnh sửa file migration
Mở file vừa tạo (tên dạng
YYYY_MM_DD_HHMMSS_create_accounts_table.php
), thêm code định nghĩa bảngaccounts
như sau:php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Thực thi migration. */ public function up(): void { Schema::create('accounts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); // Thêm cột created_at và updated_at }); } /** * Hoàn tác migration. */ 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 file lại.
Chạy migration
Tại thư mục dự án, chạy lệnh thực thi migration để tạo bảng:
bashphp artisan migrate
1Nếu database đã tạo và thông tin cấu hình đúng, lệnh sẽ tạo bảng
accounts
cùng các bảng mặc định của Laravel nhưusers
,password_reset_tokens
,failed_jobs
,cache
,cache_locks
,jobs
,job_batches
...
Ví dụ với MySQL
Cấu hình
.env
với MySQLĐảm bảo các trường sau trỏ đúng server MySQL:
dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # Port mặc định của MySQL trên ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # Mật khẩu MySQL mặc định của ServBay
1
2
3
4
5
6Ghi dữ liệu mẫu
Thêm route mới vào
routes/web.php
để lưu một bản ghi vào bảngaccounts
: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 'Đã thêm tài khoản vào MySQL!'; });
1
2
3
4
5
6
7
8
9
10
11Truy cập
https://servbay-laravel-test.local/mysql-add-account
để kiểm tra ghi dữ liệu.Đọc dữ liệu mẫu
Thêm route mới để lấy danh sách tài khoản từ bảng
accounts
:phpuse App\Models\Account; // Nếu đã tạo model Account // hoặc đơn giản dùng 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 Account) // $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
để xem dữ liệu.
Ví dụ với PostgreSQL
Cấu hình
.env
với PostgreSQLNếu muốn dùng PostgreSQL, đổi cấu hình như sau:
dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # Port mặc định của PostgreSQL trên ServBay DB_DATABASE=servbay_laravel_app DB_USERNAME=root # User mặc định của ServBay DB_PASSWORD=password # Mật khẩu PostgreSQL mặc định của ServBay
1
2
3
4
5
6Lưu ý: Sau khi chuyển CSDL, nên chạy lại
php artisan migrate:refresh
hoặcphp artisan migrate
để tạo bảng đúng với PostgreSQL.Ghi dữ liệu mẫu (PostgreSQL)
Thêm route mới để lưu một bản ghi:
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 'Đã thêm tài khoản vào PostgreSQL!'; });
1
2
3
4
5
6
7
8
9
10
11Truy cập
https://servbay-laravel-test.local/pgsql-add-account
để kiểm tra ghi dữ liệu.Đọc dữ liệu mẫu (PostgreSQL)
Thêm route mới để lấy dữ liệu từ bảng accounts:
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
để xem dữ liệu.
Tổng kết
ServBay giúp bạn dễ dàng xây dựng môi trường phát triển local để tạo và chạy dự án Laravel với tốc độ và tính năng vượt trội. PHP, Composer, web server Caddy cùng hệ thống cơ sở dữ liệu/cache tích hợp sẵn giúp rút ngắn thời gian cài đặt, cấu hình môi trường. Với vài bước đơn giản, bạn đã có thể khởi tạo dự án Laravel mới, cấu hình web server, bắt đầu phát triển và tích hợp database/cache thuận tiện. ServBay hướng tới mục tiêu đem lại trải nghiệm phát triển local hiệu quả, nhanh chóng cho mọi lập trình viên.
Nếu gặp bất kỳ khó khăn nào trong quá trình sử dụng, hãy tham khảo tài liệu chính thức của ServBay hoặc hỏi cộng đồng hỗ trợ.