Tạo và chạy dự án PHPixie trên macOS với ServBay
PHPixie là một framework PHP nhẹ và hiệu năng cao, được thiết kế đặc biệt cho việc phát triển nhanh các ứng dụng web. Nó tuân theo mô hình HMVC (Hierarchical Model-View-Controller), cung cấp cấu trúc code tối giản cùng khả năng xử lý hiệu quả. PHPixie được nhiều lập trình viên ưa chuộng nhờ sự đơn giản, linh hoạt và tốc độ vượt trội.
Những điểm nổi bật và lợi ích của PHPixie
- Nhẹ: Hệ thống lõi của PHPixie được tối giản, chỉ chứa các thành phần cần thiết để xây dựng ứng dụng, khởi động nhanh và chạy mượt mà.
- Hiệu năng cao: Framework chú trọng tối ưu hiệu suất, xử lý tốt các yêu cầu đồng thời, phù hợp với các ứng dụng đòi hỏi tốc độ.
- Dễ học: Cung cấp API rõ ràng, súc tích cùng tài liệu chi tiết, giúp lập trình viên nhanh chóng làm chủ.
- Linh hoạt: Cấu trúc framework ít bị ràng buộc, cho phép tích hợp và lựa chọn các thư viện hoặc thành phần bên thứ ba theo nhu cầu thực tế dự án.
- Cộng đồng hỗ trợ mạnh mẽ: Sở hữu một cộng đồng lập trình viên năng động, nhiều extension và tài nguyên hỗ trợ bên ngoài.
PHPixie giúp các lập trình viên xây dựng ứng dụng chất lượng cao, hiệu suất tốt cho mọi quy mô dự án: từ nhỏ đến lớn, các hệ thống doanh nghiệp.
Tạo và chạy dự án PHPixie bằng ServBay
Bài viết này sẽ hướng dẫn bạn sử dụng môi trường phát triển web local tích hợp do ServBay cung cấp để tạo và vận hành một dự án PHPixie. Chúng ta sẽ sử dụng hệ sinh thái PHP, trình quản lý gói Composer tích hợp trong ServBay và tính năng “Websites” để cấu hình máy chủ web. Ngoài ra, chỉ với vài bước đơn giản là bạn có thể truy cập dự án trên local và tích hợp với các hệ cơ sở dữ liệu hoặc cache.
Yêu cầu chuẩn bị
- Đã cài đặt và chạy ServBay trên macOS. ServBay tích hợp sẵn PHP, Composer, nhiều hệ database (MySQL, PostgreSQL, MongoDB, Redis, v.v.) và máy chủ web Caddy.
- Biết sử dụng terminal (dòng lệnh) cơ bản.
Tạo dự án PHPixie
Đường dẫn lưu trữ dự án gợi ý
ServBay khuyến nghị lưu trữ tất cả dự án website local của bạn trong thư mục /Applications/ServBay/www
để dễ quản lý và kiểm soát quyền truy cập.
- Đảm bảo Composer đã cài đặt: ServBay đã tích hợp Composer sẵn, bạn không cần thiết lập thêm. Mở Terminal và kiểm tra bằng lệnh
composer --version
. - Tạo thư mục dự án: Ở thư mục root website đề xuất của ServBay, hãy tạo một thư mục mới cho dự án PHPixie và di chuyển vào đó:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Tạo dự án PHPixie bằng Composer: Chạy lệnh bên dưới ngay trong thư mục dự án của bạn để lấy template PHPixie:bashComposer sẽ tự động tải PHPixie và các phụ thuộc cần thiết vào thư mục hiện tại.
composer create-project phpixie/project .
1
Cấu hình máy chủ web
Hãy dùng tính năng Websites của ServBay để thiết lập máy chủ web Caddy, trỏ đúng về thư mục dự án PHPixie của bạn.
Mở giao diện ứng dụng ServBay.
Chuyển đến danh sách Websites.
Nhấn để thêm một website mới.
Điền các thông tin cấu hình website:
- Tên: Ví dụ
My First PHPixie Dev Site
(tên sử dụng nội bộ trong ServBay). - Tên miền: Ví dụ
servbay-phpixie-test.local
(đây là địa chỉ bạn dùng để truy cập trên trình duyệt). - Loại website: Chọn
PHP
. - Phiên bản PHP: Chọn phiên bản bạn muốn (ví dụ
8.3
). - Thư mục gốc website (Document Root): Chọn thư mục
web
của dự án:/Applications/ServBay/www/servbay-phpixie-app/web
.
Tại sao là thư mục
/web
?Tệp nhập (entry file) của dự án PHPixie là
web/index.php
. Vì lý do bảo mật và best practice, thư mục gốc của web server nên trỏ thẳng vào_web_
, không phải root của toàn bộ project. Điều này giúp tránh trường hợp truy cập nhầm vào các file nhạy cảm khác như cấu hình hay thư viện vendor từ trình duyệt.- Tên: Ví dụ
Lưu thiết lập. ServBay sẽ tự động cấu hình Caddy và cập nhật tập tin hosts của bạn (nếu cần), để
servbay-phpixie-test.local
trỏ về ServBay server local.
Xem chi tiết các bước ở Thêm website đầu tiên.
Thêm mã ví dụ vào dự án
Để kiểm tra dự án cũng như minh họa tích hợp database và cache, hãy thêm một số đoạn code mẫu vào project của bạn.
Tạo controller mẫu: Thêm file sau vào
src/App/HTTP/Controller/Home.php
(tạo thư mục/file nếu chưa có):php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Import lớp Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Trang chính mặc định action public function action_index(Request $request) { // Render template assets/templates/app/home.php return $this->template->render('app:home'); } // Ví dụ action với Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Lưu dữ liệu, hiệu lực 60 giây $value = $cache->get('key'); // Đọc dữ liệu return $this->response()->string($value); // Trả về response dạng chuỗi } // Ví dụ action với Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Lưu dữ liệu $value = $redis->get('key'); // Đọc dữ liệu return $this->response()->string($value); // Trả về response dạng chuỗi } // MySQL/PostgreSQL: action thêm người dùng mẫu public function action_add_user(Request $request) { // Sử dụng component database để nhận query builder $query = $this->components->database()->query(); // Thêm bản ghi user mới vào bảng 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Dùng email duy nhất ])->execute(); // Thực hiện lệnh insert return $this->response()->string('User added successfully.'); // Trả về thông báo thành công } // MySQL/PostgreSQL: action lấy danh sách người dùng public function action_list_users(Request $request) { // Sử dụng component database để nhận query builder $query = $this->components->database()->query(); // Truy vấn tất cả user trong bảng 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Thực thi truy vấn và lấy kết quả return $this->response()->json($users); // Trả về JSON danh sách user } }
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
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
65
66
67Tạo template mẫu: Thêm file sau vào
assets/templates/app/home.php
(tạo thư mục/file nếu chưa có):php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Liên kết chức năng ví dụ:</h2> <ul> <li><a href="/home/memcached">Kiểm tra Memcached</a></li> <li><a href="/home/redis">Kiểm tra Redis</a></li> <li><a href="/home/add_user">Thêm người dùng vào database</a></li> <li><a href="/home/list_users">Liệt kê người dùng trong database</a></li> </ul> <p>Vui lòng đảm bảo bạn đã thực hiện các bước cấu hình database và cache cần thiết.</p> </body> </html>
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
30
31
32
33
Truy cập website
Sau khi đã cấu hình website trên ServBay và thêm mã mẫu, bạn có thể kiểm tra website bằng trình duyệt:
- Mở trình duyệt và truy cập địa chỉ
https://servbay-phpixie-test.local
. - Bạn sẽ thấy trang hiển thị thông báo "Welcome to PHPixie on ServBay" cùng các liên kết chức năng ví dụ.
Nếu không truy cập được, hãy kiểm tra:
- ServBay đã khởi động hay chưa.
- Cấu hình website trong ServBay đã chính xác chưa, đặc biệt là tên miền, loại website, và thư mục root.
- Tập tin hosts trên máy đã được trỏ đúng tới
servbay-phpixie-test.local
(ServBay thường tự xử lý việc này). - Đúng phiên bản PHP đã được bật trong ServBay.
Tích hợp database và cache
PHPixie có khả năng hỗ trợ tốt nhiều hệ cơ sở dữ liệu và hệ cache. ServBay đi kèm các gói MySQL, PostgreSQL, Redis, Memcached..., giúp bạn tích hợp nhanh chóng vào dự án PHPixie.
Lưu ý: Trước khi thao tác database, hãy đảm bảo bạn đã bật dịch vụ database tương ứng (MySQL hoặc PostgreSQL) trong ServBay và tạo database cho dự án. Ví dụ bài này dùng database tên servbay_phpixie_app
. Bạn có thể tạo database qua các công cụ quản lý như Sequel Ace, Postico, TablePlus... hoặc qua CLI. Tài khoản database mặc định của ServBay thường là root
, mật khẩu password
(vui lòng kiểm tra chính xác trên thiết lập của bạn).
Cấu hình kết nối database
Tùy vào loại database bạn sử dụng (MySQL hoặc PostgreSQL), hãy chỉnh sửa tệp assets/config/database.php
ở gốc dự án. Địa chỉ database mặc định thường là 127.0.0.1
trên ServBay.
Ví dụ cấu hình MySQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// connection: điều chỉnh hoặc dùng thông số máy chủ phù hợp với thiết lập ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // User mặc định của ServBay
'password' => 'password', // Password mặc định (kiểm tra thực tế)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
Ví dụ cấu hình PostgreSQL (assets/config/database.php
):
<?php
return [
'default' => [
'driver' => 'pdo',
// connection: điều chỉnh hoặc dùng thông số máy chủ phù hợp với thiết lập ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // User mặc định của ServBay
'password' => 'password', // Password mặc định (kiểm tra thực tế)
'options' => []
]
];
2
3
4
5
6
7
8
9
10
11
12
Tạo bảng database (bằng migrations)
PHPixie cung cấp công cụ dòng lệnh quản lý migration – phiên bản hóa cấu trúc database hiện đại và chuẩn mực.
- Mở Terminal: Truy cập thư mục gốc dự án PHPixie:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Tạo file migration: Chạy CLI PHPixie để tạo migration mới. Ví dụ dưới đây để tạo bảng
users
:bashFile migration sẽ nằm trong thư mụcphp pixie generate:migration create_users_table
1assets/migrations
với tên chứa timestamp. - Chỉnh sửa migration: Mở file vừa tạo (vd:
YYYY_MM_DD_HHMMSS_create_users_table.php
) trongassets/migrations
và sửa lại hàmup()
vàdown()
như sau:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Sử dụng schema builder để tạo bảng 'users' $this->schema->create('users', function(Table $table) { $table->increments('id'); // Khóa chính tự tăng $table->string('name'); // Cột tên $table->string('email')->unique(); // Cột email (duy nhất) $table->timestamps(); // Hai cột thời gian created_at, updated_at }); } public function down() { // Xóa bảng 'users' $this->schema->drop('users'); } }
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 migration: Tại root dự án, chạy lệnh để tạo bảng
users
:bashSau khi hoàn thành sẽ có thông báo migration thành công. Có thể kiểm tra kết quả bằng công cụ quản lý database: bảngphp pixie migrate
1users
đã xuất hiện trong databaseservbay_phpixie_app
.
Làm việc với database quan hệ (MySQL/PostgreSQL)
Trong controller mẫu src/App/HTTP/Controller/Home.php
ở trên đã có sẵn hai method action_add_user
và action_list_users
minh họa cách sử dụng component database của PHPixie với MySQL hoặc PostgreSQL.
- Thêm người dùng: Truy cập
https://servbay-phpixie-test.local/home/add_user
, sẽ thêm một bản ghi mới vào bảngusers
. - Liệt kê người dùng: Truy cập
https://servbay-phpixie-test.local/home/list_users
sẽ lấy toàn bộ danh sách user dưới dạng JSON.
Cấu hình và sử dụng NoSQL (Memcached/Redis)
ServBay cài đặt sẵn Memcached và Redis cùng các extension PHP liên quan. Bạn chỉ cần cấu hình đúng trong dự án PHPixie.
Cấu hình Memcached (assets/config/cache.php
):
Tạo hoặc chỉnh sửa file assets/config/cache.php
với nội dung sau:
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Địa chỉ Memcached mặc định trên ServBay
'port' => 11211, // Cổng mặc định của Memcached
'weight' => 100,
],
],
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
Cấu hình Redis (assets/config/redis.php
):
Tạo hoặc chỉnh sửa file assets/config/redis.php
với nội dung sau:
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Địa chỉ Redis mặc định trên ServBay
'port' => 6379, // Cổng mặc định của Redis
'timeout' => 0,
'database' => 0, // Số index database Redis
],
];
2
3
4
5
6
7
8
9
10
Sử dụng Memcached/Redis:
Controller mẫu src/App/HTTP/Controller/Home.php
ở trên đã có hai method action_memcached
và action_redis
để ví dụ cách sử dụng component cache của PHPixie (bên dưới có thể là Memcached hay Redis tùy cấu hình).
- Kiểm tra Memcached: Truy cập
https://servbay-phpixie-test.local/home/memcached
, sẽ ghi một giá trị vào Memcached rồi đọc lại và hiển thị. - Kiểm tra Redis: Truy cập
https://servbay-phpixie-test.local/home/redis
, sẽ ghi một giá trị vào Redis rồi đọc lại và hiển thị.
Đảm bảo các gói Memcached và Redis đều đã chạy trong ServBay.
Tổng kết
Chỉ với vài bước đơn giản trên, bạn đã tạo, cấu hình và chạy thành công một dự án PHPixie local trên macOS với ServBay. Bạn đã biết cách dùng Composer tạo project, cấu hình web server với tính năng Websites của ServBay, setup tích hợp cơ bản với database và cache, và xác minh hoạt động của các chức năng này.
Môi trường tích hợp của ServBay giúp đơn giản hóa việc thiết lập môi trường phát triển PHP, để bạn tập trung cho lập trình nhiều nhất. Hi vọng bài hướng dẫn này sẽ giúp bạn bắt đầu nhanh chóng với PHPixie cho dự án web tiếp theo!