Video demo : Link Video Demo
Tài liệu này hướng dẫn chi tiết cách triển khai hệ thống CellVisualization (Laravel + React + AI Python Backend) từ một máy chủ mới tinh (Fresh Install).
Phần này dành cho việc triển khai trên Windows (Localhost hoặc Windows VPS) sử dụng XAMPP.
- Tải xuống XAMPP cho Windows (Chọn phiên bản PHP 8.2 hoặc 8.3).
- Cài đặt và khởi động Apache và MySQL từ XAMPP Control Panel.
- Composer: Tải
Composer-Setup.exevà cài đặt. - Node.js: Tải Node.js LTS (v20 hoặc v22) và cài đặt.
- Miniconda (Quản lý Python): Tải Miniconda3 Windows 64-bit và cài đặt. (Lưu ý: Trong quá trình cài, tick chọn "Add Miniconda3 to my PATH environment variable" nếu muốn dùng tiện lợi trong CMD, hoặc dùng Anaconda Prompt sau này).
-
Mở Terminal (PowerShell hoặc CMD): Di chuyển đến thư mục htdocs của XAMPP.
cd C:\xampp\htdocs -
Tải mã nguồn:
git clone https://github.com/garnalam/Cell-Visualize.git cd Cell-Visualize -
Cài đặt thư viện:
composer install npm install npm run build
-
Cấu hình Database:
- Copy file môi trường:
copy .env.example .env - Mở file
.envvà chỉnh sửa:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=cell_visualization DB_USERNAME=root DB_PASSWORD=
- Copy file môi trường:
-
Mở trình duyệt vào
http://localhost/phpmyadmin, tạo database mới tên làcell_visualization. -
Hoàn tất Laravel:
php artisan key:generate php artisan storage:link php artisan migrate
Mở Anaconda Prompt (hoặc CMD nếu đã add path) và chạy:
# 1. Tạo môi trường 'lab' với Python 3.12
conda create -n lab python=3.12 -y
# 2. Kích hoạt môi trường
conda activate lab
# 3. Di chuyển vào thư mục AI Core
cd C:\xampp\htdocs\Cell-Visualize\ai_core
# 4. Cài đặt các thư viện cần thiết
pip install -r requirements.txtĐây là bước quan trọng nhất để tính năng Segment hoạt động.
-
Tìm thư mục cài đặt: Tại cửa sổ Anaconda Prompt đang active
lab, gõ:python -c "import nnunetv2; print(nnunetv2.__path__[0])"(Kết quả ví dụ:
C:\Users\Admin\miniconda3\envs\lab\Lib\site-packages\nnunetv2). -
Chép dữ liệu Model:
- Tải 4 thư mục dữ liệu từ Google Drive.
- Copy đè (Overwrite) 4 thư mục này vào đường dẫn tìm được ở bước 1.
Trong file ai_core/.env với nội dung (sửa đường dẫn cho đúng thực tế máy bạn):
APP_ENV=local
PORT=8001
LARAVEL_STORAGE_PATH=C:\xampp\htdocs\Cell-Visualize\storage\app\public
# Đường dẫn python.exe của môi trường 'lab'
NNUNET_PYTHON_EXE=C:\Users\Admin\miniconda3\envs\lab\python.exe
# Đường dẫn thư viện nnunetv2 (nơi vừa copy model vào)
NNUNET_BASE_PATH=C:\Users\Admin\miniconda3\envs\lab\Lib\site-packages\nnunetv2
MODEL_CLS_NAME=darkcovidnet_3class_state.pthBạn cần mở 2 cửa sổ Terminal riêng biệt:
Terminal 1 (Laravel):
cd C:\xampp\htdocs\Cell-Visualize
php artisan serve(Web chạy tại: http://127.0.0.1:8000)
Terminal 2 (AI Server):
conda activate lab
cd C:\xampp\htdocs\Cell-Visualize\ai_core
python api_server.py(API chạy tại: http://127.0.0.1:8001)
Phần này hướng dẫn setup trên VPS Linux mới tinh (Fresh Install) dùng Nginx/Apache và Systemd.
Đăng nhập SSH vào server và chạy:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl unzip zip software-properties-common# Thêm repo PHP mới nhất
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# Cài đặt PHP 8.3 và các extension cần thiết
sudo apt install -y php8.3 php8.3-cli php8.3-common php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath
# Cài đặt Apache2
sudo apt install -y apache2 libapache2-mod-php8.3
# Cài đặt MySQL
sudo apt install -y mysql-server# Cài Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# Cài Node.js 20 (LTS)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejsmkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
source ~/.bashrcGiả sử cài đặt vào /var/www/html/CellVisualization.
cd /var/www/html
sudo git clone https://github.com/garnalam/Cell-Visualize.git
sudo chown -R $USER:$USER CellVisualization
cd CellVisualization
# Cài thư viện
composer install --optimize-autoloader --no-dev
npm install
npm run build# Đăng nhập MySQL
sudo mysqlChạy lệnh SQL:
CREATE DATABASE cell_visualization;
CREATE USER 'cell_user'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON cell_visualization.* TO 'cell_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;Cập nhật file .env:
cp .env.example .env
nano .envSửa DB_DATABASE, DB_USERNAME, DB_PASSWORD theo thông tin trên.
Hoàn tất setup Laravel:
php artisan key:generate
php artisan migrate --force
php artisan storage:link# Cấp quyền cho Apache user (www-data) ghi vào storage
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cacheconda create -n lab python=3.12 -y
conda activate lab
# Di chuyển vào ai_core
cd /var/www/html/CellVisualization/ai_core
# Cài thư viện (Linux server thường ko có màn hình, cài opencv-python-headless nếu cần)
pip install -r requirements.txt
# Fix lỗi thiếu libGL nếu có:
sudo apt install libgl1Tìm đường dẫn thư viện:
python -c "import nnunetv2; print(nnunetv2.__path__[0])"
# Ví dụ output: /home/ubuntu/miniconda3/envs/lab/lib/python3.12/site-packages/nnunetv2Upload và Copy Model: Dùng SFTP (FileZilla/WinSCP) để upload 4 thư mục model (nnUNet_raw...) lên server, sau đó copy đè vào đường dẫn trên.
nano /var/www/html/CellVisualization/ai_core/.envNội dung:
APP_ENV=production
PORT=8001
LARAVEL_STORAGE_PATH=/var/www/html/CellVisualization/storage/app/public
# Sửa 2 dòng dưới theo đường dẫn thật trên server của bạn (dùng lệnh `which python` trong env lab để xem)
NNUNET_PYTHON_EXE=/home/ubuntu/miniconda3/envs/lab/bin/python
NNUNET_BASE_PATH=/home/ubuntu/miniconda3/envs/lab/lib/python3.12/site-packages/nnunetv2
MODEL_CLS_NAME=darkcovidnet_3class_state.pthTrên Linux, chúng ta không chạy thủ công mà dùng Systemd để AI Server tự chạy lại khi khởi động máy.
sudo nano /etc/systemd/system/cell-ai.serviceDán nội dung sau (Sửa User và đường dẫn cho đúng):
[Unit]
Description=Cell AI Python Server
After=network.target
[Service]
# User chạy lệnh (nên là user sở hữu code hoặc www-data, nhưng conda env thường nằm ở user thường)
User=ubuntu
Group=www-data
WorkingDirectory=/var/www/html/CellVisualization/ai_core
# Đường dẫn tuyệt đối đến python trong env 'lab'
ExecStart=/home/ubuntu/miniconda3/envs/lab/bin/python api_server.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable cell-ai
sudo systemctl start cell-ai
# Kiểm tra trạng thái
sudo systemctl status cell-aisudo nano /etc/apache2/sites-available/cell-viz.confNội dung:
<VirtualHost *:80>
ServerName your-domain.com
DocumentRoot /var/www/html/CellVisualization/public
<Directory /var/www/html/CellVisualization/public>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>Kích hoạt:
sudo a2ensite cell-viz.conf
sudo a2enmod rewrite
sudo systemctl restart apache2Hoàn tất!
- Web truy cập tại:
http://your-server-ip - AI API chạy ngầm tại:
http://127.0.0.1:8001