Access Hub
Đồng bộ từ mã nguồn lúc 17:27, 02/10/2026
Skip to content
Áp dụng choLinux (nginx, PHP-FPM) Sẵn sàng

Cài đặt Access Hub ​

Trang này hướng dẫn dựng một Access Hub mới trên Linux với nginx và PHP-FPM. Sau khi làm xong, bạn có một hub chạy được với giao diện web, hàng đợi, lịch chạy lệnh và kênh thời gian thực.

5 phút đọcCập nhật 02/10/2026

Trước khi bắt đầu

Máy chủ Linux có nginx và PHP 8.4 với PHP-FPM
CSDL MySQL và thông tin kết nối cho các biến DB_*
Composer, và Node.js đủ mới để chạy Vite 8 khi build giao diện
systemd cho queue worker và Reverb, cron cho scheduler
Quyền sudo để cấu hình nginx và các dịch vụ systemd
Áp dụng choLinux (nginx, PHP-FPM) Sẵn sàng

Yêu cầu hệ thống ​

Thành phầnYêu cầu
PHP8.4 (composer.json cho phép từ 8.3, bản triển khai chạy 8.4) với PHP-FPM
CSDLMySQL
Node.jsĐủ mới để chạy Vite 8, dùng để build giao diện
Web servernginx (ví dụ bên dưới)
Tiến trình nềnsystemd hoặc trình quản lý tiến trình tương đương

Mẹo: Redis là tùy chọn

Tệp .env.example mặc định dùng MySQL cho session (SESSION_DRIVER=database), cache (CACHE_STORE=database) và queue (QUEUE_CONNECTION=database). Bạn không cần Redis để chạy hub. Nếu muốn dùng Redis, đổi các biến này và cài phpredis (REDIS_CLIENT=phpredis).

Bước 1: Lấy mã nguồn và cài phụ thuộc ​

bash
cd /var/www/access-hub
composer install --no-dev --optimize-autoloader
npm ci

Bước 2: Cấu hình môi trường ​

Sao chép tệp mẫu rồi sửa các giá trị kết nối.

bash
cp .env.example .env
php artisan key:generate

Các nhóm biến cần điền:

NhómBiến chính
Ứng dụngAPP_URL, APP_ENV, APP_DEBUG
CSDLDB_CONNECTION=mysql, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD
Hàng đợiQUEUE_CONNECTION
Thời gian thựcBROADCAST_CONNECTION, REVERB_*, VITE_REVERB_*
Giám sátMONITORING_COLLECTOR_PUBLIC_URL, MONITORING_COLLECTOR_ADMIN_URL, MONITORING_COLLECTOR_ADMIN_TOKEN

Cảnh báo: Không commit tệp .env

Tệp .env chứa khóa ứng dụng và mật khẩu CSDL. Giữ nó ngoài hệ thống quản lý mã nguồn.

Bước 3: Tạo bảng dữ liệu ​

bash
php artisan migrate --force

Lệnh này cũng tạo bảng scheduled_commands dùng cho lịch chạy lệnh (xem Vận hành).

Bước 4: Build giao diện ​

bash
npm run build

Lệnh build cũng sinh lại các hàm Wayfinder cho route. Nếu bạn gọi trực tiếp wayfinder:generate, hãy truyền --with-form, nếu không các hàm .form() sẽ biến mất khỏi mã giao diện.

Bước 5: Tạo super admin đầu tiên ​

Hub không có lệnh artisan riêng để tạo quản trị viên đầu tiên. Có hai cách:

  1. Chạy seeder, nó tạo các quyền, vai trò chuẩn và một tài khoản super admin dùng cho demo.

    bash
    php artisan db:seed --force

    Sau khi đăng nhập, đổi mật khẩu hoặc xóa tài khoản demo ngay.

  2. Tạo người dùng bằng tinker rồi gán vai trò super-admin.

    bash
    php artisan tinker

Cảnh báo: Đổi tài khoản demo

Không để tài khoản demo do seeder tạo ở môi trường thật. Đăng nhập, tạo tài khoản quản trị của bạn, bật xác thực hai lớp rồi xóa tài khoản demo.

Bước 6: Cấu hình nginx ​

Ví dụ dưới đây phục vụ Laravel qua PHP-FPM và chuyển tiếp WebSocket của Reverb. Thay <your-hub-host> bằng tên miền của bạn, thêm khối TLS theo chuẩn của tổ chức.

nginx
server {
    listen 80;
    server_name <your-hub-host>;

    root /var/www/access-hub/public;
    index index.php;

    client_max_body_size 100M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # WebSocket của Reverb
    location ~ ^/apps?(/|$) {
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    }

    # Chặn tệp ẩn, trừ .well-known
    location ~ /\.(?!well-known).* {
        deny all;
    }

    # Không thực thi PHP trong thư mục dữ liệu
    location ~ ^/(storage|bootstrap/cache)/.*\.php$ {
        deny all;
    }
}

Kiểm tra và nạp lại cấu hình:

bash
sudo nginx -t && sudo systemctl reload nginx

Bước 7: Scheduler (cron) ​

Hub chạy các lệnh định kỳ qua scheduler của Laravel. Hệ điều hành chỉ cần gọi schedule:run mỗi phút, còn lịch chi tiết của từng lệnh nằm trong bảng scheduled_commands và chỉnh được trong giao diện.

cron
* * * * * www-data cd /var/www/access-hub && php artisan schedule:run >> /dev/null 2>&1

Thiếu dòng cron này, các lệnh như dọn thùng rác, nhắc phê duyệt hay đồng bộ máy chủ sẽ không bao giờ chạy.

Bước 8: Queue worker ​

Hub chia hàng đợi thành nhiều lane: default, emails, exports, iac, notifications, webhooks. Mỗi lane là một tiến trình riêng. Với systemd, dùng một unit mẫu có tham số lane:

ini
# /etc/systemd/system/[email protected]
[Unit]
Description=Access Hub Laravel Queue Worker (%i lane)
After=network.target php8.4-fpm.service

[Service]
User=www-data
Group=www-data
Restart=always
RestartSec=3
WorkingDirectory=/var/www/access-hub
ExecStart=/usr/bin/php /var/www/access-hub/artisan queue:work --queue=%i --sleep=3 --tries=3 --max-time=3600

[Install]
WantedBy=multi-user.target
bash
sudo systemctl daemon-reload
for lane in default emails exports iac notifications webhooks; do
  sudo systemctl enable --now access-hub-queue@$lane
done

Mẹo: Restart sau mỗi lần đổi mã

Worker giữ mã trong bộ nhớ. Sau khi triển khai mã mới, chạy php artisan queue:restart để các worker nạp lại mã. Bỏ qua bước này, một job có thể chạy bằng mã cũ và thất bại.

Bước 9: Reverb (thời gian thực) ​

Reverb phục vụ WebSocket cho thông báo và cập nhật trực tiếp trên giao diện. Đặt BROADCAST_CONNECTION=reverb trong .env (mặc định của tệp mẫu là log), điền REVERB_* rồi chạy Reverb như một dịch vụ riêng:

ini
# /etc/systemd/system/access-hub-reverb.service
[Unit]
Description=Access Hub Reverb websocket server
After=network.target

[Service]
User=www-data
Group=www-data
Restart=always
RestartSec=3
WorkingDirectory=/var/www/access-hub
ExecStart=/usr/bin/php /var/www/access-hub/artisan reverb:start --host=127.0.0.1 --port=8080
LimitNOFILE=10000

[Install]
WantedBy=multi-user.target
bash
sudo systemctl enable --now access-hub-reverb

Reverb chỉ lắng nghe trên 127.0.0.1:8080. nginx chuyển tiếp các đường dẫn /app và /apps tới đó như ở bước 6, nên trình duyệt không cần mở thêm cổng.

Cập nhật phiên bản ​

Chạy tuần tự trên máy chủ hub:

bash
cd /var/www/access-hub
composer install --no-dev --optimize-autoloader
php artisan migrate --force
npm ci && npm run build
php artisan optimize:clear
php artisan queue:restart

Cảnh báo: Hub đang chạy là bản triển khai thật

Nếu bạn sửa mã trực tiếp trên thư mục phục vụ web, thay đổi có hiệu lực ngay lập tức. Hãy sao lưu CSDL trước khi chạy migration trên môi trường thật.

Bước tiếp theo ​

  • Làm quen với mô hình dữ liệu ở Khái niệm.
  • Cấu hình lịch chạy lệnh, log và sao lưu ở Vận hành.
  • Nối agent và collector vào hub ở Giám sát.
Trang này có giúp được bạn không?

Tài liệu Access Hub, cập nhật 02/10/2026. Khi tài liệu và mã khác nhau, mã thắng.