Cách cài đặt BoxBilling trên Debian 11

theanh

Administrator
Nhân viên
BoxBilling là phần mềm lập hóa đơn do cộng đồng điều hành được viết bằng PHP. Đây là phần mềm lập hóa đơn miễn phí và mã nguồn mở được thiết kế để dễ sử dụng cho cả khách hàng và người bán. BoxBilling cung cấp trải nghiệm tuyệt vời cho khách hàng với giao diện trực quan và cũng hỗ trợ nhiều cổng thanh toán.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt BoxBilling với Nginx, PHP-FPM và MariaDB trên Debian 11 Bullseye.

Điều kiện tiên quyết​

  • Máy chủ Debian 11 Bullseye.
  • Người dùng có quyền root sudo.
  • Tên miền hoặc tên miền phụ trỏ đến địa chỉ IP của máy chủ. Đặc biệt là trong môi trường sản xuất.

Cài đặt và cấu hình PHP​

Đầu tiên, bạn sẽ cài đặt và cấu hình PHP-FPM trên hệ thống Debian của mình. Phiên bản mới nhất của BoxBilling yêu cầu PHP-FPM 7.4 trở lên, đây là phiên bản PHP mặc định trên kho lưu trữ Debian.

Trước khi bắt đầu, hãy làm mới chỉ mục gói Debian bằng lệnh 'apt' bên dưới.
Mã:
sudo apt update
Sau khi kho lưu trữ được làm mới, hãy chạy lệnh sau để cài đặt PHP-FPM với tất cả các tiện ích mở rộng bổ sung cho BoxBilling.
Mã:
sudo apt install php-fpm php-cli php-common php-zip php-mysql php-gd php-intl php-curl php-imap php-mbstring php-xml php-json libpcre3 openssl git unzip -y
Sau khi hoàn tất cài đặt PHP, hãy chỉnh sửa tệp 'php.ini' bằng trình soạn thảo nano.
Mã:
sudo nano /etc/php/7.4/fpm/php.ini
sudo nano /etc/php/7.4/cli/php.ini
Thay đổi tùy chọn 'memory_limit', 'max_execution_time' và 'date.timezone' bằng môi trường bạn muốn. Trong ví dụ này, chúng tôi đang sử dụng máy chủ có bộ nhớ RAM 2GB, vì vậy chúng tôi sẽ phân bổ 'memory_limit' cho PHP thành '512MB'. Đối với tùy chọn 'data.timezone', hãy thay đổi tùy chọn này theo múi giờ của bạn.
Mã:
memory_limit = 512M
max_execution_time = 360
date.timezone = Europe/Paris
Lưu tệp và thoát.

Bây giờ, hãy khởi động lại dịch vụ PHP-FPM và áp dụng cấu hình mới bằng cách chạy lệnh 'systemctl' bên dưới.
Mã:
sudo systemctl restart php7.4-fpm
Cuối cùng, hãy xác minh dịch vụ PHP-FPM bằng lệnh bên dưới.
Mã:
sudo systemctl status php7.4-fpm
Bạn sẽ thấy đầu ra khi dịch vụ PHP-FPM đang chạy tích cực.


Cài đặt Nginx và MariaDB​

Trong bước này, bạn sẽ cài đặt máy chủ web Nginx và cơ sở dữ liệu MariaDB. Ứng dụng BoxBilling yêu cầu ít nhất MySQL v8, nhưng cũng hỗ trợ một triển khai MySQL khác như MariaDB.

Cài đặt Nginx và MariaDB trên máy chủ Debian 11 bằng lệnh 'apt' bên dưới.
Mã:
sudo apt install nginx-full mariadb-server -y
Sau khi cài đặt Nginx và MariaDB hoàn tất, hãy chạy lệnh sau để xác minh dịch vụ Nginx và dịch vụ MariaDB.
Mã:
sudo systemctl status nginx
sudo systemctl status mariadb
Bây giờ bạn sẽ nhận được đầu ra khi các dịch vụ Nginx và MariaDB đang hoạt động và chạy.




Thiết lập cơ sở dữ liệu MariaDB​

Sau khi cài đặt MariaDB, bạn nên thiết lập mật khẩu gốc cho MariaDB. Bạn sẽ sử dụng lệnh 'mysql_secure_installation' để thiết lập mật khẩu gốc MariaDB và triển khai MariaDB với bảo mật cơ bản.

Chạy lệnh 'mysql_secure_installation' trên máy chủ đầu cuối của bạn.
Mã:
mysql_secure_installation
Bây giờ bạn sẽ được yêu cầu nhập mật khẩu gốc cho MariaDB. Nhấn ENTER để tiếp tục vì cài đặt MariaDB mặc định không có mật khẩu gốc.
Mã:
Nhập mật khẩu hiện tại cho root (enter nếu không có):
OK, mật khẩu đã sử dụng thành công, tiếp tục...
Bây giờ hãy nhập 'Y' để chuyển xác thực mặc định cho người dùng root sang phương thức 'unix_socket_authentication'. Điều này sẽ đảm bảo người dùng root luôn được kết nối với MariaDB từ máy cục bộ.
Mã:
Đặt mật khẩu root hoặc sử dụng unix_socket đảm bảo rằng không ai
có thể đăng nhập vào người dùng root MariaDB mà không có quyền hạn thích hợp.

Bạn đã bảo vệ tài khoản root của mình, vì vậy bạn có thể trả lời 'n' một cách an toàn.

Chuyển sang xác thực unix_socket [Y/n] Y
Đã bật thành công!
Đang tải lại bảng đặc quyền..
... Thành công!
Nhập 'Y' để thay đổi mật khẩu root cho MariaDB, sau đó nhập mật khẩu mới cho MariaDB và lặp lại.
Mã:
Bạn đã bảo vệ tài khoản root của mình, vì vậy bạn có thể trả lời 'n' một cách an toàn.

Đổi mật khẩu root? [Y/n] Y
Mật khẩu mới:
Nhập lại mật khẩu mới:
Đã cập nhật mật khẩu thành công!
Đang tải lại bảng đặc quyền..
... Thành công!
Nhập 'Y' để xóa người dùng ẩn danh mặc định trên MariaDB.
Mã:
Theo mặc định, cài đặt MariaDB có một người dùng ẩn danh, cho phép bất kỳ ai
đăng nhập vào MariaDB mà không cần phải tạo tài khoản người dùng cho họ. Điều này chỉ nhằm mục đích thử nghiệm và để quá trình cài đặt
diễn ra suôn sẻ hơn một chút. Bạn nên xóa những người dùng này trước khi chuyển sang
môi trường sản xuất.

Xóa người dùng ẩn danh? [Y/n] Y
... Thành công!
Nhập 'Y' để vô hiệu hóa đăng nhập từ xa cho người dùng root.
Mã:
Thông thường, root chỉ được phép kết nối từ 'localhost'. Điều này
đảm bảo rằng không ai có thể đoán được mật khẩu root từ mạng.

Không cho phép root đăng nhập từ xa? [Y/n] Y
... Thành công!
Nhập 'Y' để xóa cơ sở dữ liệu mặc định 'test' và tất cả các đặc quyền trên đó.
Mã:
Theo mặc định, MariaDB đi kèm với một cơ sở dữ liệu có tên là 'test' mà bất kỳ ai cũng có thể
truy cập. Cơ sở dữ liệu này cũng chỉ dành cho mục đích thử nghiệm và nên được xóa
trước khi chuyển sang môi trường sản xuất.

Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] Y
- Đang xóa cơ sở dữ liệu thử nghiệm...
... Thành công!
- Đang xóa các đặc quyền trên cơ sở dữ liệu thử nghiệm...
... Thành công!
Cuối cùng, hãy tải lại các đặc quyền của bảng trên MariaDB để áp dụng các thay đổi mới.
Mã:
Tải lại các bảng đặc quyền sẽ đảm bảo rằng tất cả các thay đổi được thực hiện cho đến nay
sẽ có hiệu lực ngay lập tức.

Tải lại các bảng đặc quyền ngay bây giờ? [Y/n] Y
... Thành công!

Đang dọn dẹp...
Và bạn đã định cấu hình mật khẩu gốc MariaDB và máy chủ MariaDB của bạn hiện đã được bảo mật.
Mã:
Hoàn tất! Nếu bạn đã hoàn tất tất cả các bước trên, thì cài đặt MariaDB của bạn hiện đã an toàn.

Cảm ơn bạn đã sử dụng MariaDB!

Thiết lập Cơ sở dữ liệu và Người dùng Mới cho BoxBilling​

Trong bước này, bạn sẽ tạo một cơ sở dữ liệu và người dùng mới để cài đặt BoxBilling. Tất cả dữ liệu liên quan đến BoxBilling sẽ được lưu trữ trên cơ sở dữ liệu MariaDB.

Bây giờ, hãy đăng nhập vào shell MariaDB bằng lệnh sau.
Mã:
mysql -u root -p
Chạy các truy vấn sau để tạo một cơ sở dữ liệu và người dùng mới 'boxbilling' với mật khẩu 'dbpassBoxBilling', sau đó cấp tất cả các đặc quyền trên cơ sở dữ liệu 'boxbilling' cho người dùng 'boxbilling@localhost'. Sau đó, tải lại tất cả các quyền bảng để áp dụng các thay đổi mới trên MariaDB.
Mã:
CREATE DATABASE boxbilling;
CREATE USER boxbilling@localhost IDENTIFIED BY 'dbpassBoxBilling';
GRANT ALL ON boxbilling.* TO boxbilling@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
Bây giờ hãy nhập 'exit' để đăng xuất khỏi shell MariaDB. Và bạn đã tạo cơ sở dữ liệu MariaDB và người dùng mới cho cài đặt BoxBilling.


Tải xuống Mã nguồn BoxBilling​

BoxBilling có thể được cài đặt theo nhiều cách. Bạn có thể cài đặt phiên bản mới nhất của BoxBilling từ mã nguồn và cài đặt tất cả các phụ thuộc PHP bằng 'Composer' hoặc tải xuống phiên bản ổn định của BoxBilling và di chuyển nó đến thư mục gốc web.

Trong bước này, chúng tôi sẽ cài đặt phiên bản ổn định mới nhất của BoxBilling. Vào thời điểm viết bài này, phiên bản ổn định mới nhất của BoxBilling là v4.22.

Tạo một thư mục gốc web mới '/var/www/boxbilling' và di chuyển thư mục làm việc của bạn vào đó.
Mã:
mkdir -p /var/www/boxbilling/
cd /var/www/boxbilling
Tải xuống phiên bản ổn định mới nhất của mã nguồn BoxBilling bằng lệnh wget và giải nén tệp 'BoxBilling.zip' bằng lệnh unzip.
Mã:
wget https://github.com/boxbilling/boxbilling/releases/download/4.22.1.3/BoxBilling.zip
unzip Boxbilling.zip
Bây giờ, hãy tạo một thư mục mới 'cache' và 'upload' trên '/var/www/boxbilling/'.
Mã:
mkdir -p /var/www/boxbilling/bb-data/{cache,uploads}
Tiếp theo, thay đổi quyền sở hữu thư mục '/var/www/boxbilling' thành người dùng và nhóm 'www-data' bằng lệnh bên dưới.
Mã:
sudo chown -R www-data:www-data /var/www/boxbilling
Cho phép người dùng 'www-data' ghi vào thư mục 'cache' và 'upload'.
Mã:
sudo chmod u+rw /var/www/boxbilling/bb-data/{cache,uploads}
Và bây giờ bạn đã sẵn sàng để thiết lập máy chủ web Nginx cho BoxBilling phần mềm.

Cấu hình Nginx cho BoxBilling​

Trong bước này, bạn sẽ thêm các khối máy chủ Nginx mới cho BoxBilling. Trước khi tạo cấu hình khối máy chủ, hãy đảm bảo rằng bạn đã trỏ tên miền đến máy chủ. Ngoài ra, hãy đảm bảo rằng bạn đã tạo chứng chỉ SSL cho tên miền của mình, bạn có thể sử dụng chứng chỉ SSL miễn phí từ Letsencrypt.

Di chuyển thư mục làm việc của bạn đến '/etc/nginx/sites-available' và tạo cấu hình khối máy chủ mới 'boxbilling.conf' bằng trình chỉnh sửa nano.
Mã:
cd /var/www/sites-available/
nano boxbilling.conf
Sao chép và dán cấu hình sau. Và hãy đảm bảo thay đổi tên miền và đường dẫn của chứng chỉ SSL.
Mã:
server {
 listen 80;
 server_name billing.example.io;
 return 302 https://$server_name$request_uri;
}

server {
 listen 443 ssl http2;

 set $root_path '/var/www/boxbilling';

 server_name billing.example.io;

 index index.html index.htm index.php;
 root $root_path;
 try_files $uri $uri/ @rewrite;
 sendfile off;

 ssl_certificate /etc/letsencrypt/live/billing.example.io/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/billing.example.io/privkey.pem;

 ssl_protocols TLSv1.2;
 ssl_prefer_server_ciphers bật;
 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
 ssl_ecdh_curve secp384r1; # Yêu cầu nginx >= 1.1.0
 ssl_session_timeout 10 phút;
 ssl_session_cache shared:SSL:10 phút;
 ssl_session_tickets tắt; # Yêu cầu nginx >= 1.5.9
 # ssl_stapling bật; # Yêu cầu nginx >= 1.3.7
 # ssl_stapling_verify bật; # Yêu cầu nginx => 1.3.7
 trình phân giải 8.8.8.8 8.8.4.4 hợp lệ=300 giây;
 trình phân giải_hết_thời_gian_5 giây;
 thêm_tiêu_đề Tùy_chọn_khung_XUẤT_BỎ;
 thêm_tiêu_đề Tùy_chọn_loại_nội_dung_XS không_niff;
 thêm_tiêu_đề Bảo_vệ_XSS "1; chế_độ=chặn";

 nhật_ký_truy_cập /var/log/nginx/example.com.access.log;
 nhật_ký_lỗi /var/log/nginx/example.com.error.log;

 vị_trí @viết_lại {
 viết lại ^/(.*)$ /index.php?_url=/$1;
 }

 vị_trí ~ \.php$ {
 bao_gồm_các_đoạn_snippet/fastcgi-php.conf;
 fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
 include fastcgi_params;
 fastcgi_intercept_errors on;
 }

 # Vô hiệu hóa thực thi PHP trong bb-uploads và bb-data
 location ^~ /bb-uploads/ { }
 location ^~ /bb-data/ {
 deny all;
 }

 location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
 root $root_path;
 expires off;
 proxy_no_cache 1;
 proxy_cache_bypass 1;
 }

 location ~ /\.ht {
 deny all;
 }
}
Lưu tệp và thoát.

Tiếp theo, chạy lệnh sau để kích hoạt cấu hình khối máy chủ 'boxbilling.conf' và xác minh cấu hình Nginx.
Mã:
ln -s /etc/nginx/sites-available/boxbilling.conf /etc/nginx/sites-enabled/
sudo nginx -t
Nếu cấu hình Nginx của bạn đúng, bạn sẽ thấy thông báo đầu ra như 'Cú pháp OK'.

Cuối cùng, khởi động lại dịch vụ Nginx để áp dụng cấu hình mới.
Mã:
sudo systemctl restart nginx

Cài đặt và cấu hình BoxBilling​

Tại thời điểm này, bạn đã cấu hình máy chủ web BoxBilling và Nginx. Bây giờ bạn sẽ bắt đầu cài đặt và cấu hình BoxBilling từ trình duyệt web.

Mở trình duyệt web và nhập tên miền BoxBilling vào thanh địa chỉ.


Đảm bảo tất cả các yêu cầu đều có màu xanh lá cây, nghĩa là hệ thống của bạn đáp ứng được yêu cầu cài đặt BoxBilling.

Đánh dấu vào ô Giấy phép 'Tôi đồng ý' và nhấp vào nút 'TIẾP THEO'.



Nhập cơ sở dữ liệu và người dùng cho BoxBilling và nhấp vào nút 'TIẾP THEO' một lần nữa.



Bây giờ, hãy nhập người dùng quản trị mới, email và mật khẩu cho BoxBilling và nhấp vào 'TIẾP THEO'.



Và bạn đã cài đặt BoxBilling thành công, nhưng bạn sẽ cần một số thiết lập bổ sung mà bạn phải áp dụng cho máy chủ BoxBilling.

Nhấp vào Nút 'HOÀN THÀNH' và bạn đã hoàn tất quá trình cài đặt BoxBilling.



Bạn có thể di chuyển đến trang chủ của BoxBilling và bạn sẽ thấy một trang tương tự như bên dưới.


Sau khi cài đặt BoxBilling xong​

Sau khi quá trình cài đặt Boxbilling hoàn tất, bạn sẽ cần xóa thư mục 'install' và thay đổi quyền của tệp 'bb-config.php', sau đó tạo một cronjob mới cho ứng dụng BoxBilling.

Xóa thư mục 'install' của BoxBilling bằng lệnh sau.
Mã:
rm -rf /var/www/boxbilling/install
Thay đổi quyền của 'bb-config.php' thành 644. Điều này có nghĩa là chỉ người dùng 'www-data' mới được phép ghi vào tệp này.
Mã:
sudo chmod 644 /var/www/boxbilling/bb-config.php
Bây giờ hãy tạo một cronjob mới cho người dùng 'www-data'. Ứng dụng BoxBilling chủ yếu chạy dưới máy chủ web Nginx với người dùng 'www-data'.
Mã:
export EDITOR=nano
sudo crontab -u www-data -e
Sao chép và dán tập lệnh sau.
Mã:
*/5 * * * * php /var/www/boxbilling/bb-cron.php
Lưu cron và thoát.

Bây giờ BoxBilling của bạn đã sẵn sàng cho khách hàng và người dùng của bạn.

Đăng nhập vào Trang quản trị BoxBilling​

Trang quản trị BoxBilling nằm tại đường dẫn URL '/bb-admin'. Nhập URL sau vào thanh địa chỉ của trình duyệt web của bạn.


Trên trang đăng nhập quản trị BoxBilling, nhập tên người dùng và mật khẩu của bạn, nhấp vào nút 'ĐĂNG NHẬP'.



Bây giờ bạn sẽ thấy bảng điều khiển quản trị Boxbilling như bên dưới.


Kết luận​

Xin chúc mừng! Bây giờ bạn đã cài đặt BoxBilling với PHP-FPM, Nginx và MariaDB trên Debian 11 bullseye mới nhất. Bây giờ bạn có thể sử dụng nó làm công cụ quản lý mua hàng trung tâm miễn phí với khách hàng và khách hàng của mình.
 
Back
Bên trên