XCrawler “truyền kì”: Ubuntu, nhiều node, và câu chuyện “setup hoài mệt vl”
XCrawler cần gì? (Requirements checklist — nói thẳng cho đỡ quên)
Biết rồi, khỏi giới thiệu lại 😄 Nhưng requirements thì vẫn nên chốt checklist để khỏi thiếu.
Web server
Apache hay Nginx đều được.
Tạm thời không quá quan trọng vì GUI chưa implement nhiều.
PHP + extensions/services liên quan
Ngoài các extension cơ bản ra, thường cần:
- MongoDB driver/extension
- Redis
- Memcached
Anh em dùng script multi-PHP thì tham khảo ở đây:
https://github.com/jooservices/bash/blob/main/services/multi-php.sh
Database
- MongoDB
- MariaDB
Supervisor + Horizon: phần “vận hành” cho workers
- Supervisor: giữ process sống (auto-restart, start/stop/reload)
- Horizon: quản lý queue/workers, scale worker count theo nhu cầu
Nói đơn giản: muốn worker chạy ổn, đừng trông chờ “mở screen/tmux” — dùng Supervisor cho đàng hoàng.
Mô hình scale cơ bản: n nodes crawling + 1 node UI
Tạm thời chưa implement proxy (hoặc proxy rotation chưa đủ ngon), nên scale kiểu thực dụng:
- n servers/nodes tương ứng n public IPs để crawling → giảm risk bị block
- 1 server/node cho web UI
Vấn đề đau đầu nhất: setup n nodes… lặp đi lặp lại, mất thời gian
Nếu làm thủ công đúng bài:
- Create VirtualBox
- Install Ubuntu
- Install required packages
- Deploy XCrawler
…thì thật sự mất công.
Và câu hỏi tự nhiên bật ra:
“Có cách nào 1 command line làm hết mọi thứ không?”
Take it easy. Khoan đã. Đừng mơ xa kiểu “bấm 1 phát là xong” ngay. Mình break down bước đầu tiên trước:
Tạo VM bằng command line & install Ubuntu.
VirtualBox CLI: tạo VM bằng command line (VBoxManage)
Cơ bản VirtualBox có CLI chính chủ là VBoxManage, điều khiển được gần như toàn bộ thứ GUI làm được (và hơn).
Repo script mình dùng để build VM ở đây:
https://github.com/jooservices/ubuntu-autoinstall-virtualbox/blob/master/sources/build_vm
Lấy path chứa VM (Default Machine Folder)
Mình lấy path kiểu:
vmpath=$(VBoxManage list systemproperties | grep -i "default machine folder:" \
| cut -b 24- | awk '{gsub(/^ +| +$/,"")}1')
VBoxManage có hẳn nhóm lệnh để list/inspect config và quản lý VM.
Attach ISO để boot cài Ubuntu
Muốn install OS thì phải gắn ISO vào DVD drive. VirtualBox có lệnh storageattach cho đúng mục đích này, và hỗ trợ –type dvddrive + –medium <iso>.
Ví dụ (giống flow mình đang làm):
VBoxManage storageattach "${vmname}" --storagectl "${idecontrollername}" \
--port 0 --device 0 --type dvddrive --medium "${build_dir}/${vmname_slug}.iso"
Sau đó startvm là chạy thôi (CLI có đủ).