SolidInvoice là giải pháp lập hóa đơn miễn phí, đơn giản và thanh lịch dựa trên PHP. Giải pháp này được thiết kế cho các doanh nghiệp nhỏ để xử lý các hoạt động lập hóa đơn hàng ngày của họ. SolidInvoice cung cấp API RESTful để tích hợp và cung cấp nhiều kênh thông báo như tin nhắn văn bản, email hoặc HipChat.
Hướng dẫn này sẽ chỉ cho bạn cách cài đặt SolidInvoice trên máy chủ Ubuntu 22.04. Bạn sẽ thiết lập SolidInvoice với LAMP Stack và bảo mật cài đặt bằng Certbot và letsencrypt.
Cập nhật chỉ mục gói Ubuntu của bạn bằng lệnh bên dưới.
Bây giờ hãy cài đặt các phụ thuộc LAMP Stack (Linux, Apache, MySQL/MariaDB và PHP) bằng lệnh sau. Trong ví dụ này, bạn sẽ sử dụng PHP 8.x mặc định để cài đặt SolidInvoice.
Nhập Y để xác nhận cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22195%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy chạy lệnh sau để kiểm tra trạng thái dịch vụ Apache và MariaDB để đảm bảo cả hai dịch vụ đều đang chạy.
Nếu Apache hoặc MariaDB đang chạy, bạn sẽ thấy đầu ra active(running).
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22308%22%3E%3C/svg%3E
Cuối cùng, hãy kiểm tra phiên bản PHP bằng lệnh bên dưới. Bạn sẽ thấy PHP 8.x được cài đặt trên hệ thống Ubuntu của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22143%22%3E%3C/svg%3E
Để bảo mật cài đặt máy chủ MariaDB, hãy nhập thông tin sau:
Trong quá trình này, hãy nhập Y để xác nhận các thay đổi đối với MariaDB hoặc N để từ chối. Dưới đây là các cấu hình máy chủ MariaDB mà bạn sẽ được nhắc:
Sau khi đăng nhập, hãy chạy các truy vấn sau để tạo cơ sở dữ liệu mới solidinvoicedb, một người dùng solidinvoice, với mật khẩu p4ssword. Hãy đảm bảo thay đổi thông tin chi tiết bằng thông tin của bạn, các thông tin chi tiết cơ sở dữ liệu này sẽ được SolidInvoice sử dụng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để kiểm tra quyền của người dùng solidinvoice. Đảm bảo rằng người dùng solidinvoice có thể truy cập cơ sở dữ liệu solidinvoicedb.
Cuối cùng, nhập quit để thoát khỏi máy chủ MariaDB.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E
Mở cấu hình PHP mặc định /etc/php/8.1/apache2/php.ini bằng trình chỉnh sửa nano.
Thay đổi cấu hình PHP mặc định bằng lệnh sau và đảm bảo điều chỉnh memory_limit và date.timezone bằng máy chủ của bạn môi trường.
Lưu tệp và thoát.
Bây giờ hãy khởi động lại dịch vụ Apache để áp dụng sửa đổi của bạn vào PHP bằng lệnh sau.
GO qua thư mục /var/www và tải xuống mã nguồn SolidInvoice bằng wget. Kiểm tra trang phát hành SolidInvoice để tải phiên bản mới nhất.
Trích xuất mã nguồn SolidInvoice vào thư mục solidinvoice và đổi quyền sở hữu thành người dùng www-data. Vì vậy, thư mục DocumentRoot hoặc Web-root để cài đặt SolidInvoice sẽ là /var/www/solidinvoice.
Bây giờ hãy chạy lệnh bên dưới để đảm bảo người dùng www-data có thể ghi vào một số thư mục SolidInvoice và tệp.
Đầu tiên, hãy chạy lệnh bên dưới để kích hoạt mô-đun viết lại trong Apache.
Tạo cấu hình máy chủ ảo Apache mới /etc/apache2/sites-available/solidinvoice.conf bằng lệnh nano editor bên dưới.
Chèn cấu hình sau và đảm bảo thay đổi tùy chọn ServerName bằng tên miền mục tiêu của bạn.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Bây giờ hãy nhập lệnh sau để kích hoạt tệp máy chủ ảo solidinvoice.conf và kiểm tra cú pháp Apache của bạn. Nếu bạn có cú pháp đúng, bạn sẽ thấy đầu ra 'Cú pháp OK'.
Cuối cùng, nhập lệnh bên dưới để khởi động lại Apache và áp dụng tệp máy chủ ảo mới solidinvoice.conf. Sau khi thực thi, SolidInvoice của bạn sẽ chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22274%22%3E%3C/svg%3E
Trước tiên, hãy cài đặt plugin Certbot và Certbot Apache bằng lệnh sau. Nhập Y để xác nhận cài đặt
Sau khi cài đặt hoàn tất, hãy tạo chứng chỉ SSL/TLS bằng lệnh certbot sau. Đảm bảo thay đổi thông tin tên miền và địa chỉ email bằng thông tin chi tiết của bạn.
Sau khi quá trình hoàn tất, chứng chỉ SSL/TLS của bạn sẽ có trong thư mục /etc/letsencrypt/live/domain.com. Ngoài ra, cài đặt SolidInvoice của bạn sẽ được bảo mật tự động bằng HTTPS.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22455%22%3E%3C/svg%3E
Chọn trình điều khiển cơ sở dữ liệu MySQL và nhập thông tin chi tiết về cơ sở dữ liệu MariaDB và người dùng của bạn cho SolidInvoice. Khi hoàn tất, hãy nhấp vào Tiếp theo một lần nữa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22659%22%20height=%22750%22%3E%3C/svg%3E
Bây giờ bạn có thể thấy lược đồ cơ sở dữ liệu cho SolidInvouice đã được tạo, hãy nhấp vào Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22278%22%3E%3C/svg%3E
Đối với Cài đặt hệ thống, hãy chọn ngôn ngữ mặc định là tiếng Anh và nhập thông tin chi tiết về người dùng quản trị, email và mật khẩu của bạn. Sau đó, nhấp vào Tiếp theo một lần nữa để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22478%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, bạn sẽ thấy đầu ra 'Bạn đã cài đặt thành công SolidInvoice!' và hướng dẫn bổ sung để tạo tác vụ cron.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Quay lại thiết bị đầu cuối máy chủ và tạo một công việc cron mới cho người dùng www-data bằng lệnh bên dưới.
Dán tập lệnh crontab từ trang, sau đó lưu và đóng tệp.
Quay lại trình duyệt web của bạn và nhấp vào Đăng nhập ngay.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22677%22%20height=%22668%22%3E%3C/svg%3E
Bây giờ bạn sẽ được yêu cầu tạo tên công ty và loại tiền tệ mặc định. Nhấp vào Tạo để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22409%22%3E%3C/svg%3E
Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy bảng điều khiển SolidInvoice như sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22452%22%3E%3C/svg%3E
Hướng dẫn này sẽ chỉ cho bạn cách cài đặt SolidInvoice trên máy chủ Ubuntu 22.04. Bạn sẽ thiết lập SolidInvoice với LAMP Stack và bảo mật cài đặt bằng Certbot và letsencrypt.
Điều kiện tiên quyết
Trước khi bắt đầu, hãy đảm bảo rằng bạn có:- Máy chủ Ubuntu 22.04.
- Người dùng không phải root có quyền sudo.
- Tên miền trỏ đến địa chỉ IP của máy chủ.
Cài đặt các phụ thuộc
SolidInvoice là ứng dụng lập hóa đơn nguồn mở được viết bằng PHP và MySQL. Để cài đặt, bạn phải cài đặt LAMP Stack trên hệ thống Ubuntu của mình. Trong bước đầu tiên này, bạn sẽ cài đặt LAMP Stack từ kho lưu trữ Ubuntu mặc định.Cập nhật chỉ mục gói Ubuntu của bạn bằng lệnh bên dưới.
Mã:
sudo apt update
Mã:
sudo apt install apache2 mariadb-server mariadb-client php php-curl php-common php-mbstring php-json php-mysql php-opcache php-bcmath php-intl php-gd php-xml php-soap php-zip php-apcu
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22195%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy chạy lệnh sau để kiểm tra trạng thái dịch vụ Apache và MariaDB để đảm bảo cả hai dịch vụ đều đang chạy.
Mã:
sudo systemctl status apache2
sudo systemctl status mysql
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22308%22%3E%3C/svg%3E
Cuối cùng, hãy kiểm tra phiên bản PHP bằng lệnh bên dưới. Bạn sẽ thấy PHP 8.x được cài đặt trên hệ thống Ubuntu của mình.
Mã:
php -v
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22143%22%3E%3C/svg%3E
Thiết lập máy chủ MariaDB
Sau khi cài đặt LAMP Stack, bạn cần thiết lập cài đặt máy chủ MariaDB. Trước tiên, bạn sẽ bảo mật máy chủ MariaDB, sau đó tạo một cơ sở dữ liệu và người dùng mới mà SolidInvoice sẽ sử dụng.Để bảo mật cài đặt máy chủ MariaDB, hãy nhập thông tin sau:
Mã:
sudo mariadb-secure-installation
- Cài đặt MariaDB mặc định không có mật khẩu, hãy nhấn ENTER khi được nhắc nhập mật khẩu.
- Bây giờ hãy nhập Y để thiết lập mật khẩu gốc MariaDB. Sau đó, nhập mật khẩu mới cho MariaDB và lặp lại mật khẩu.
- Nhập Y để xóa người dùng ẩn danh khỏi cài đặt MariaDB của bạn.
- Nhập Y một lần nữa khi được nhắc tắt đăng nhập từ xa cho người dùng gốc MariaDB.
- Nhập Y để xóa kiểm tra cơ sở dữ liệu mặc định khỏi MariaDB của bạn.
- Cuối cùng, nhập Y để tải lại các đặc quyền bảng và áp dụng các thay đổi mới.
Mã:
sudo mariadb -u root -p
Mã:
CREATE DATABASE solidinvoicedb;
CREATE USER solidinvoice@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON solidinvoicedb.* TO solidinvoice@localhost;
FLUSH PRIVILEGES;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22220%22%3E%3C/svg%3E
Bây giờ hãy chạy truy vấn bên dưới để kiểm tra quyền của người dùng solidinvoice. Đảm bảo rằng người dùng solidinvoice có thể truy cập cơ sở dữ liệu solidinvoicedb.
Mã:
SHOW GRANTS FOR solidinvoice@localhost;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22245%22%3E%3C/svg%3E
Thiết lập PHP
Sau khi máy chủ MariaDB được bảo mật và cấu hình, bạn sẽ thiết lập cài đặt PHP của mình. Trong trường hợp này, bạn cần sửa đổi tệp cấu hình PHP mặc định php.ini.Mở cấu hình PHP mặc định /etc/php/8.1/apache2/php.ini bằng trình chỉnh sửa nano.
Mã:
sudo nano /etc/php/8.1/apache2/php.ini
Mã:
date.timezone = Europe/Amsterdam
memory_limit=512M
upload_max_filesize=64M
post_max_size=120M
max_execution_time=120
Bây giờ hãy khởi động lại dịch vụ Apache để áp dụng sửa đổi của bạn vào PHP bằng lệnh sau.
Mã:
sudo systemctl restart apache2
Tải xuống SolidInvoice
Bây giờ bạn đã cấu hình MariaDB và PHP, bạn có thể tải xuống mã nguồn SolidInvoice và thiết lập cài đặt với quyền và quyền sở hữu hợp lệ.GO qua thư mục /var/www và tải xuống mã nguồn SolidInvoice bằng wget. Kiểm tra trang phát hành SolidInvoice để tải phiên bản mới nhất.
Mã:
cd /var/www/
wget https://github.com/SolidInvoice/SolidInvoice/releases/download/2.2.5/SolidInvoice-2.2.5.zip
Mã:
unzip SolidInvoice-2.2.5.zip -d solidinvoice
sudo chown -R www-data:www-data /var/www/solidinvoice
Mã:
sudo chmod u+rw /var/www/solidinvoice/app/cache
sudo chmod u+rw /var/www/solidinvoice/app/logs
sudo chmod u+rw /var/www/solidinvoice/var/cache
sudo chmod u+rw /var/www/solidinvoice/var/logs
Mã:
sudo chmod u+rw /var/www/solidinvoice/web/upload
sudo chmod u+rw /var/www/solidinvoice/app/config/parameters.yml
Thiết lập máy chủ ảo Apache
Sau khi bạn đã định cấu hình thư mục DocumentRoot cho SolidInvoice, bạn cần tạo một máy chủ ảo Apache mới sẽ được sử dụng để chạy cài đặt. Vì vậy, hãy đảm bảo rằng bạn đã chuẩn bị tên miền của mình cho SolidInvoice.Đầu tiên, hãy chạy lệnh bên dưới để kích hoạt mô-đun viết lại trong Apache.
Mã:
sudo a2enmod rewrite
Mã:
sudo nano /etc/apache2/sites-available/solidinvoice.conf
Mã:
ServerName invoice.howtoforge.local
ServerAlias www.invoice.howtoforge.local
DocumentRoot /var/www/solidinvoice/public
# enable the .htaccess rewrites
AllowOverride All
Order allow,deny
Allow from All
ErrorLog /var/log/apache2/solidinvoice.error.log
CustomLog /var/log/apache2/solidinvoice.access.log combined
Bây giờ hãy nhập lệnh sau để kích hoạt tệp máy chủ ảo solidinvoice.conf và kiểm tra cú pháp Apache của bạn. Nếu bạn có cú pháp đúng, bạn sẽ thấy đầu ra 'Cú pháp OK'.
Mã:
sudo a2ensite solidinvoice.conf
sudo apachectl configtest
Mã:
sudo systemctl restart apache2
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22274%22%3E%3C/svg%3E
Bảo mật SolidInvoice bằng HTTPS
Trong ví dụ này, bạn sẽ bảo mật SolidInvoice bằng chứng chỉ SSl/TLS thông qua Certbot và letsencrypt. Bây giờ bạn sẽ cài đặt Certbot và tạo chứng chỉ SSL/TLS cho tên miền SolidInvoice của mình.Trước tiên, hãy cài đặt plugin Certbot và Certbot Apache bằng lệnh sau. Nhập Y để xác nhận cài đặt
Mã:
sudo apt install certbot python3-certbot-apache
Mã:
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [emailprotected] -d howtoforge.local
Cài đặt SolidInvoice
Mở trình duyệt web của bạn và truy cập tên miền của bạn như https://invoice.howtoforge.local/. Trong Kiểm tra yêu cầu hệ thống, hãy đảm bảo mọi thứ đều ổn, sau đó nhấp vào Tiếp theo để xác nhận.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22455%22%3E%3C/svg%3E
Chọn trình điều khiển cơ sở dữ liệu MySQL và nhập thông tin chi tiết về cơ sở dữ liệu MariaDB và người dùng của bạn cho SolidInvoice. Khi hoàn tất, hãy nhấp vào Tiếp theo một lần nữa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22659%22%20height=%22750%22%3E%3C/svg%3E
Bây giờ bạn có thể thấy lược đồ cơ sở dữ liệu cho SolidInvouice đã được tạo, hãy nhấp vào Tiếp theo để tiếp tục.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22278%22%3E%3C/svg%3E
Đối với Cài đặt hệ thống, hãy chọn ngôn ngữ mặc định là tiếng Anh và nhập thông tin chi tiết về người dùng quản trị, email và mật khẩu của bạn. Sau đó, nhấp vào Tiếp theo một lần nữa để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22478%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, bạn sẽ thấy đầu ra 'Bạn đã cài đặt thành công SolidInvoice!' và hướng dẫn bổ sung để tạo tác vụ cron.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%22%3E%3C/svg%3E
Quay lại thiết bị đầu cuối máy chủ và tạo một công việc cron mới cho người dùng www-data bằng lệnh bên dưới.
Mã:
sudo crontab -u www-data -e
Mã:
* * * * * php /var/www/solidinvoice/bin/console cron:run -e prod -n
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22677%22%20height=%22668%22%3E%3C/svg%3E
Bây giờ bạn sẽ được yêu cầu tạo tên công ty và loại tiền tệ mặc định. Nhấp vào Tạo để xác nhận.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22409%22%3E%3C/svg%3E
Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy bảng điều khiển SolidInvoice như sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22452%22%3E%3C/svg%3E