Kích hoạt và sử dụng MongoDB trong ServBay (Extension PHP và Dịch vụ Cơ sở dữ liệu)
ServBay là một môi trường phát triển web cục bộ mạnh mẽ dành riêng cho lập trình viên, không chỉ tích hợp nhiều máy chủ web, ngôn ngữ lập trình và cơ sở dữ liệu, mà còn đi kèm sẵn rất nhiều extension và công cụ phổ biến. Với các nhà phát triển PHP cần làm việc với cơ sở dữ liệu MongoDB, ServBay cung cấp giải pháp đơn giản để bật extension MongoDB cho PHP và khởi động dịch vụ cơ sở dữ liệu MongoDB.
Bài viết này hướng dẫn chi tiết cách bật extension MongoDB cho PHP, khởi động dịch vụ cơ sở dữ liệu MongoDB trong ServBay, và trình bày cách kết nối, thao tác với MongoDB trong dự án PHP.
Tổng quan: ServBay & MongoDB
MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu, hiệu năng cao và mã nguồn mở, được sử dụng rộng rãi trong các ứng dụng web hiện đại nhờ mô hình dữ liệu linh hoạt và khả năng mở rộng tuyệt vời.
ServBay tích hợp MongoDB như một phần mềm có sẵn, cho phép lập trình viên dễ dàng triển khai, quản lý MongoDB ngay trên máy tính cá nhân. Đồng thời, ServBay cũng đóng gói sẵn các phần mở rộng MongoDB phù hợp với từng phiên bản PHP (mongodb.so
) giúp ứng dụng PHP giao tiếp thuận tiện với MongoDB.
Để sử dụng MongoDB trong dự án PHP, bạn cần thực hiện hai bước sau:
- Kích hoạt extension MongoDB của PHP: Cho phép PHP gọi các hàm liên quan MongoDB.
- Bật dịch vụ cơ sở dữ liệu MongoDB: Khởi động một phiên bản MongoDB để lưu trữ và xử lý dữ liệu.
Giao diện đồ họa trực quan (GUI) của ServBay giúp đơn giản hóa tối đa các thao tác này.
Phiên bản extension MongoDB cho PHP
ServBay cung cấp extension MongoDB phù hợp cho nhiều phiên bản PHP khác nhau. Phiên bản extension có thể thay đổi theo từng bản cập nhật ServBay, nhưng nhìn chung luôn đảm bảo ổn định và tương thích với từng version PHP. Dưới đây là một số mapping phiên bản phổ biến trong ServBay (hãy kiểm tra thực tế với bản bạn đang dùng):
- PHP 5.6, 7.0: MongoDB 1.7.5
- PHP 7.1, 7.2, 7.3, 7.4: MongoDB 1.11.1
- PHP 8.0, 8.1, 8.2, 8.3: MongoDB 1.15.0
- PHP 8.4: MongoDB 1.19.1
Lưu ý: Extension PHP (mongodb.so
) chỉ cung cấp khả năng giao tiếp thấp giữa PHP và MongoDB. Để thao tác dữ liệu thực tế trong code PHP, bạn thường cần cài thêm MongoDB PHP Driver chính thức, thông qua Composer.
Kích hoạt extension MongoDB của PHP
Mặc định, để giữ môi trường nhẹ gọn, nhiều extension của PHP trong ServBay sẽ chưa được kích hoạt. Khuyến khích sử dụng GUI của ServBay để bật extension MongoDB.
Kích hoạt qua GUI của ServBay
Cách đơn giản nhất:
- Mở ứng dụng ServBay.
- Trong thanh điều hướng bên trái, nhấp Ngôn ngữ (Languages), sau đó chọn PHP.
- Chọn phiên bản PHP bạn muốn bật extension MongoDB (ví dụ:
PHP 8.4
). - Ở bảng bên phải, tìm mục Extension (Extensions).
- Cuộn xuống tìm extension
MongoDB
. - Nhấp công tắc bên trái extension
MongoDB
, chuyển trạng thái từ xám (tắt) sang xanh (bật). - Nhấn nút Lưu (Save) bên dưới.
ServBay sẽ tự động chỉnh sửa file cấu hình PHP liên quan và khởi động lại dịch vụ PHP đó để áp dụng thay đổi.
Chỉnh sửa file cấu hình thủ công (tùy chọn)
Nếu bạn thích tự cấu hình, hoặc muốn cài đặt nâng cao, có thể chỉnh file cấu hình PHP trực tiếp. Tuy nhiên, với hầu hết nhu cầu, thao tác qua GUI đã đủ.
Tìm thư mục
conf.d
ứng với version PHP muốn chỉnh. Ví dụ, để bật MongoDB trên PHP 8.3, đường dẫn thường là:bash/Applications/ServBay/etc/php/8.3/conf.d/mongodb.ini
1Tùy vào vị trí cài đặt ServBay và version PHP, bạn cần thay đổi cho phù hợp.
Mở file
mongodb.ini
bằng editor.Tìm dòng sau:
ini[MongoDB] ; Uncomment the following line to enable MongoDB ;extension = mongodb.so
1
2
3Xóa dấu chấm phẩy (😉 ở đầu dòng
extension = mongodb.so
, tức là bỏ chú thích:ini[MongoDB] ; Uncomment the following line to enable MongoDB extension = mongodb.so
1
2
3Lưu file lại.
Lưu ý: Khi chỉnh file cấu hình thủ công, bạn cần tự khởi động lại dịch vụ PHP để cập nhật thay đổi. Trong GUI ServBay, vào Packages ở thanh điều hướng trái, tìm PHP version vừa chỉnh, bấm nút khởi động lại (thường là biểu tượng mũi tên tròn).
Bật dịch vụ cơ sở dữ liệu MongoDB
Kích hoạt extension PHP chỉ cho phép code PHP "nói chuyện" với MongoDB. Bạn còn cần bật dịch vụ cơ sở dữ liệu thực sự để lưu và xử lý dữ liệu. ServBay đã đóng gói sẵn MongoDB, có thể bật đơn giản qua GUI:
- Mở ứng dụng ServBay.
- Trong thanh điều hướng trái, nhấp vào Packages (Phần mềm).
- Trong danh sách, tìm nhóm Databases (Cơ sở dữ liệu).
- Tìm phần mềm
MongoDB
. - Bật công tắc bên trái, chuyển từ xám (dừng) sang xanh (chạy).
Dịch vụ MongoDB sẽ khởi động trên cổng mặc định 27017
.
Kiểm tra extension và kết nối MongoDB
Làm xong các bước trên, bạn kiểm thử như sau:
Kiểm tra extension PHP đã tải thành công
Tạo file PHP đơn giản dùng phpinfo()
:
- Tại thư mục gốc website trên ServBay (ví dụ
/Applications/ServBay/www
), tạo file mới tênphpinfo.php
. - Thêm nội dung sau:php
<?php phpinfo(); ?>
1
2
3 - Dùng trình duyệt truy cập file này, ví dụ
https://servbay.demo/phpinfo.php
(giả sử bạn cấu hình siteservbay.demo
trỏ tới thư mụcwww
của ServBay). - Tìm kiếm từ khoá "MongoDB" trong trang phpinfo. Nếu extension đã bật, bạn sẽ thấy một mục tên "mongodb" có thông tin về version và cấu hình.
(Lưu ý: giao diện hoặc phiên bản có thể khác so với ảnh)
Kiểm tra kết nối cơ sở dữ liệu
Tạo script PHP kiểm tra kết nối đến MongoDB cục bộ:
- Đảm bảo bạn đã cài driver MongoDB PHP chính thức qua Composer. Nếu chưa, vào thư mục dự án và chạy:bash
composer require mongodb/mongodb
1 - Tạo file PHP, ví dụ
test_mongodb.php
. - Thêm code sau:php
<?php require __DIR__ . '/vendor/autoload.php'; // Điều chỉnh đường dẫn nếu cần echo "Đang thử kết nối tới MongoDB...\n"; try { // Kết nối MongoDB trên localhost port 27017 $client = new MongoDB\Client("mongodb://localhost:27017"); // Liệt kê database để kiểm tra kết nối $listDatabases = $client->listDatabases(); echo "Kết nối tới MongoDB thành công!\n"; echo "Danh sách database:\n"; foreach ($listDatabases as $databaseInfo) { echo "- " . $databaseInfo->getName() . "\n"; } } catch (\MongoDB\Driver\Exception\Exception $e) { echo "Kết nối MongoDB thất bại: " . $e->getMessage() . "\n"; } ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Chạy script bằng terminal (sử dụng đúng PHP version của ServBay) hoặc truy cập trực tiếp qua web. Nếu thành công, bạn sẽ thấy thông báo và danh sách database; nếu thất bại, hãy xem lỗi để chẩn đoán (thường là dịch vụ MongoDB chưa chạy...).
Sử dụng MongoDB trong code PHP
Khi extension PHP + dịch vụ MongoDB đã sẵn sàng, bạn có thể thao tác với MongoDB trong dự án PHP qua driver được cài bằng Composer.
Cài đặt MongoDB PHP driver
Như hướng dẫn ở trên, cài qua Composer:
composer require mongodb/mongodb
Lệnh này sẽ cài gói mongodb/mongodb
và các thư viện phụ thuộc, đồng thời tạo file vendor/autoload.php
cho phép code PHP tự động nạp mọi lớp liên quan.
Ví dụ code thao tác MongoDB
Dưới đây là ví dụ đơn giản: kết nối, chèn dữ liệu, truy vấn, cập nhật, xóa.
<?php
require __DIR__ . '/vendor/autoload.php'; // Đảm bảo đã nạp autoload của Composer
echo "Đang kết nối tới MongoDB...\n";
try {
// Kết nối tới dịch vụ MongoDB cục bộ
$client = new MongoDB\Client("mongodb://localhost:27017");
// Chọn database và collection
// Nếu database/collection chưa tồn tại sẽ được tạo khi có dữ liệu ghi mới
$collection = $client->servbay_demo_db->users; // sử dụng servbay_demo_db làm ví dụ
echo "Đã kết nối. Thực thi các thao tác...\n";
// Chèn document
$insertResult = $collection->insertOne([
'name' => 'Alice ServBay', // Dữ liệu mẫu có tên thương hiệu
'email' => '[email protected]',
'age' => 30,
'createdAt' => new MongoDB\BSON\UTCDateTime(time() * 1000) // Dùng kiểu ngày BSON
]);
printf("ID của document mới thêm: %s\n", $insertResult->getInsertedId());
// Truy vấn document
$document = $collection->findOne(['name' => 'Alice ServBay']);
echo "Document tìm thấy:\n";
if ($document) {
print_r($document);
} else {
echo "Không tìm thấy document.\n";
}
// Cập nhật document (tùy chọn)
$updateResult = $collection->updateOne(
['name' => 'Alice ServBay'],
['$set' => ['age' => 31, 'status' => 'updated']]
);
printf("Matching %d document(s) cập nhật, thay đổi %d document(s).\n", $updateResult->getMatchedCount(), $updateResult->getModifiedCount());
// Truy vấn lại sau cập nhật (tùy chọn)
$updatedDocument = $collection->findOne(['name' => 'Alice ServBay']);
echo "Document sau cập nhật:\n";
if ($updatedDocument) {
print_r($updatedDocument);
}
// Xóa document (tùy chọn)
// $deleteResult = $collection->deleteOne(['name' => 'Alice ServBay']);
// printf("Đã xóa %d document(s).\n", $deleteResult->getDeletedCount());
} catch (\MongoDB\Driver\Exception\Exception $e) {
echo "Có lỗi xảy ra: " . $e->getMessage() . "\n";
} catch (\Exception $e) {
echo "Lỗi không xác định: " . $e->getMessage() . "\n";
}
echo "Kết thúc script.\n";
?>
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Lưu file PHP lại, chạy bằng CLI của ServBay hoặc truy cập qua web server cấu hình với ServBay.
Lưu ý & Thực hành tốt
- Trạng thái dịch vụ MongoDB: Luôn đảm bảo trong GUI của ServBay, MongoDB phải ở trạng thái “running” mới có thể kết nối.
- Cổng mặc định: MongoDB mặc định là cổng
27017
. Nếu ứng dụng của bạn cần cổng khác, chỉnh lại connection string cho phù hợp. Có thể xem hoặc đổi cổng qua GUI ServBay. - Extension và driver: Extension
mongodb.so
cung cấp khả năng giao tiếp cơ bản, còn gói Composermongodb/mongodb
là API hướng đối tượng cao cấp để thao tác dữ liệu. Hiện nay, hầu hết các dự án PHP đều dùng Composer package. - ServBay User CA/Public CA: ServBay hỗ trợ tạo chứng chỉ SSL qua CA tích hợp, giúp mô phỏng môi trường HTTPS khi phát triển cục bộ. Việc kết nối MongoDB nội bộ thường không cần SSL, nhưng nếu xây dựng hệ thống bảo mật cao hoặc môi trường phức tạp, bạn có thể cân nhắc. ServBay cũng hỗ trợ ACME Issuance, backup dữ liệu, reset mật khẩu database... thể hiện sức mạnh là môi trường phát triển toàn diện.
- Công cụ quản lý MongoDB: ServBay có thể không đi kèm sẵn công cụ quản trị đồ họa cho MongoDB. Bạn có thể tải MongoDB Compass chính thức hoặc dùng dòng lệnh
mongo
/mongosh
để thao tác với MongoDB đang chạy trong ServBay.
Câu hỏi thường gặp (FAQ)
Q: Tôi đã bật extension MongoDB của PHP nhưng script vẫn không kết nối được với MongoDB, phải làm gì?
A: Hãy chắc chắn bạn đã bật DỊCH VỤ cơ sở dữ liệu MongoDB trong GUI ServBay. Extension PHP chỉ là cổng kết nối, dịch vụ MongoDB mới là nơi chứa cơ sở dữ liệu thực sự. Kiểm tra lại connection string (thường là mongodb://localhost:27017
).
Q: Sự khác biệt giữa extension mongodb.so
và package Composer mongodb/mongodb
là gì?
A: mongodb.so
là extension lõi mà PHP nạp khi chạy, giúp kết nối tới libmongoc C của MongoDB. Còn package mongodb/mongodb
là thư viện PHP dùng API hướng đối tượng, xây dựng trên extension này để thực hiện CRUD, aggregation… Trong thực tế bạn gần như luôn phải vừa kích hoạt extension, vừa cài package Composer.
Q: Làm sao thay đổi cổng hoặc cấu hình MongoDB?
A: Bạn có thể xem, chỉnh sửa các thiết lập MongoDB qua GUI ServBay (thường có mục Port), hoặc edit trực tiếp file cấu hình mà ServBay chỉ ra ở phần thông tin package. Sau khi sửa nhớ khởi động lại dịch vụ MongoDB.
Tổng kết
ServBay mang đến môi trường phát triển MongoDB tuyệt vời cho các nhà phát triển PHP. Qua GUI trực quan, bạn có thể nhanh chóng bật extension MongoDB cho PHP, khởi động dịch vụ MongoDB chỉ với vài cú click. Kết hợp với driver chính thức được cài bằng Composer, bạn sẽ xây dựng được môi trường phát triển PHP + MongoDB cục bộ trong phút chốc và tập trung vào logic dự án. Sự tích hợp thông minh giúp giảm thiểu mọi lo lắng về cấu hình, hỗ trợ bạn phát triển và kiểm thử ứng dụng hiệu quả hơn.