Invoice Ninja là ứng dụng lập hóa đơn trực tuyến miễn phí và mã nguồn mở dành cho người làm việc tự do và doanh nghiệp, giúp bạn chấp nhận thanh toán, theo dõi chi phí, tạo đề xuất và nhiệm vụ theo thời gian. Đây là ứng dụng lập hóa đơn tự lưu trữ rất giống với các ứng dụng lập hóa đơn thương mại như Freshbooks. Ứng dụng này cho phép bạn tạo hóa đơn tùy chỉnh của riêng mình và gửi trực tuyến trong vòng một giây.
Invoice Ninja rất hữu ích cho các doanh nghiệp vừa và nhỏ. Nếu bạn đang tìm kiếm phần mềm lập hóa đơn an toàn và dễ sử dụng thì Invoice Ninja là lựa chọn tốt nhất dành cho bạn.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Invoice Ninja với Apache và Let's Encrypt SSL trên máy chủ Ubuntu 20.04.
Sau khi tất cả các gói được cập nhật, hãy cài đặt các phụ thuộc bắt buộc khác bằng lệnh sau:
Sau khi tất cả các phụ thuộc được cài đặt, bạn có thể tiến hành bước tiếp theo.
Sau khi cài đặt cả hai gói, bạn sẽ cần cài đặt PHP phiên bản 7.2 và các tiện ích mở rộng khác trong hệ thống của mình.
Theo mặc định, Ubuntu 20.04 được cài đặt sẵn PHP phiên bản 7.4. Vì vậy, bạn sẽ cần thêm kho lưu trữ Ondrej vào hệ thống của mình.
Bạn có thể thêm kho lưu trữ Ondrej của PHP bằng lệnh sau:
Sau khi kho lưu trữ được thêm vào, hãy cài đặt PHP và các tiện ích mở rộng khác bằng lệnh sau:
Sau khi cài đặt tất cả các gói, hãy xác minh phiên bản PHP đã cài đặt bằng lệnh sau:
Bạn sẽ thấy kết quả sau:
Sau khi đăng nhập, hãy tạo cơ sở dữ liệu và người dùng bằng lệnh sau:
Tiếp theo, cấp tất cả các quyền cho invoicedb bằng lệnh sau:
Tiếp theo, xóa các quyền và thoát khỏi bảng điều khiển MariaDB bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống vào thư mục gốc Apache bằng lệnh sau:
Tiếp theo, hãy thiết lập quyền và quyền sở hữu phù hợp bằng lệnh sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Thêm các dòng sau:
Lưu và đóng tệp, sau đó bật tệp máy chủ ảo bằng lệnh sau:
Tiếp theo, bật các mô-đun apache cần thiết bằng lệnh sau:
Cuối cùng, khởi động lại dịch vụ Apache để áp dụng các thay đổi:
Bây giờ bạn có thể xác minh trạng thái của Apache bằng lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
Tại thời điểm này, Apache được cấu hình để phục vụ Invoice Ninja. Bây giờ bạn có thể tiến hành bước tiếp theo.
Cung cấp URL trang web, thông tin chi tiết về cơ sở dữ liệu, tên người dùng quản trị, mật khẩu và nhấp vào nút Gửi. Bạn sẽ được chuyển hướng đến màn hình đăng nhập Invoice Ninja:
Cung cấp tên người dùng quản trị, mật khẩu và nhấp vào nút ĐĂNG NHẬP. Bạn sẽ thấy bảng điều khiển Invoice Ninja trong màn hình sau:
Sau khi Certbot được cài đặt, hãy chạy lệnh sau để bảo mật trang web của bạn bằng Let's Encrypt SSL:
Bạn sẽ được yêu cầu cung cấp email và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Nhập 2 và nhấn Enter để cài đặt Let's Encrypt SSL cho trang web của bạn:
Bây giờ, bạn có thể truy cập trang web của mình một cách an toàn bằng URL https://invoice.example.com.
Invoice Ninja rất hữu ích cho các doanh nghiệp vừa và nhỏ. Nếu bạn đang tìm kiếm phần mềm lập hóa đơn an toàn và dễ sử dụng thì Invoice Ninja là lựa chọn tốt nhất dành cho bạn.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Invoice Ninja với Apache và Let's Encrypt SSL trên máy chủ Ubuntu 20.04.
Điều kiện tiên quyết
- Một máy chủ chạy Ubuntu 20.04.
- Một tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
- Một mật khẩu gốc được cấu hình cho máy chủ.
Bắt đầu
Trước tiên, bạn nên cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Chạy lệnh sau để cập nhật tất cả các gói:
Mã:
apt-get update -y
Mã:
apt-get install software-properties-common apt-transport-https ca-certificates gnupg2 -y
Cài đặt LAMP Server
Tiếp theo, bạn sẽ cần cài đặt Apache, MariaDB và PHP vào hệ thống của mình. Trước tiên, hãy cài đặt các gói Apache và MariaDB bằng lệnh sau:
Mã:
apt-get install apache2 mariadb-server -y
Theo mặc định, Ubuntu 20.04 được cài đặt sẵn PHP phiên bản 7.4. Vì vậy, bạn sẽ cần thêm kho lưu trữ Ondrej vào hệ thống của mình.
Bạn có thể thêm kho lưu trữ Ondrej của PHP bằng lệnh sau:
Mã:
add-apt-repository ppa:ondrej/php
Mã:
apt-get install php7.2 libapache2-mod-php7.2 php-imagick php7.2-fpm php7.2-mysql php7.2-common php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp unzip -y
Mã:
php -v
Mã:
PHP 7.2.34-8+ubuntu20.04.1+deb.sury.org+1 (cli) (xây dựng: 31 tháng 10 năm 2020 16:57:33) (NTS)Bản quyền (c) 1997-2018 The PHP GroupZend Engine v3.2.0, Bản quyền (c) 1998-2018 Zend Technologies với Zend OPcache v7.2.34-8+ubuntu20.04.1+deb.sury.org+1, Bản quyền (c) 1999-2018, của Zend Technologies
Cấu hình Cơ sở dữ liệu MariaDB
Tiếp theo, bạn sẽ cần tạo cơ sở dữ liệu và người dùng cho Invoice Ninja. Trước tiên, hãy đăng nhập vào bảng điều khiển MariaDB bằng lệnh sau:
Mã:
mysql
Mã:
MariaDB [(none)]> create database invoicedb;
MariaDB [(none)]> create user invoice@localhost defined by 'password';
Mã:
MariaDB [(none)]> grant all privileges on invoicedb.* to invoice@localhost;
Mã:
MariaDB [(none)]> xóa các quyền;
MariaDB [(none)]> exit;
Cài đặt Invoice Ninja
Trước tiên, hãy tải xuống phiên bản mới nhất của Invoice Ninja từ trang web chính thức của ứng dụng:
Mã:
wget -O invoice-ninja.zip https://download.invoiceninja.com/
Mã:
unzip invoice-ninja.zip -d /var/www/html/
Mã:
chown -R www-data:www-data /var/www/html/ninja
chmod -R 755 /var/www/html/ninja
Cấu hình Apache cho Invoice Ninja
Tiếp theo, bạn sẽ cần tạo tệp cấu hình máy chủ ảo Apache cho Invoice Ninja. Bạn có thể tạo tệp này bằng lệnh sau:
Mã:
nano /etc/apache2/sites-available/ninja.conf
Mã:
ServerName invoice.example.com DocumentRoot /var/www/html/ninja/public DirectoryIndex index.php Tùy chọn +FollowSymLinks AllowOverride All Yêu cầu tất cả đã cấp ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined Include /etc/apache2/conf-available/php7.2-fpm.conf
Mã:
a2ensite ninja.conf
Mã:
a2enmod mpm_event proxy_fcgi setenvif
a2enmod rewrite
Mã:
systemctl restart apache2
Mã:
systemctl status apache2
Mã:
? apache2.service - Máy chủ HTTP Apache Đã tải: đã tải (/lib/systemd/system/apache2.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2020-12-27 07:15:15 UTC; 11 giây trước Tài liệu: https://httpd.apache.org/docs/2.4/ Tiến trình: 25097 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) PID chính: 25113 (apache2) Nhiệm vụ: 55 (giới hạn: 2353) Bộ nhớ: 5,3M CGroup: /system.slice/apache2.service ??25113 /usr/sbin/apache2 -k start ??25114 /usr/sbin/apache2 -k start ??25115 /usr/sbin/apache2 -k start27 tháng 12 07:15:15 ubuntu systemd[1]: Khởi động Máy chủ HTTP Apache..
Truy cập Invoice Ninja
Bây giờ, hãy mở trình duyệt web của bạn và truy cập Invoice Ninja bằng URL . Bạn sẽ được chuyển hướng đến trang sau:Cung cấp URL trang web, thông tin chi tiết về cơ sở dữ liệu, tên người dùng quản trị, mật khẩu và nhấp vào nút Gửi. Bạn sẽ được chuyển hướng đến màn hình đăng nhập Invoice Ninja:
Cung cấp tên người dùng quản trị, mật khẩu và nhấp vào nút ĐĂNG NHẬP. Bạn sẽ thấy bảng điều khiển Invoice Ninja trong màn hình sau:
Bảo mật Invoice Ninja bằng Let's Encrypt SSL
Luôn là một ý tưởng hay khi bảo mật trang web của bạn bằng Let's Encrypt SSL. Bạn sẽ cần cài đặt ứng dụng khách Certbot để cài đặt và quản lý SSL. Bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install python3-certbot-apache -y
Mã:
certbot --apache -d invoice.example.com
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator standalone, Installer NoneNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có muốn chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuậnphát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)ó: CCác plugin đã chọn: Authenticator apache, Installer apacheNhận chứng chỉ mớiThực hiện các thử thách sau:http-01 challenge for invoice.example.comĐã bật mô-đun ghi đè ApacheĐang chờ xác minh...Dọn dẹp các thử tháchĐã tạo một vhost SSL tại /etc/apache2/sites-available/invoice-le-ssl.confĐã bật mô-đun Apache socache_shmcbĐã bật mô-đun Apache sslTriển khai chứng chỉ tới VirtualHost /etc/apache2/sites-available/invoice-le-ssl.confĐã bật trang web khả dụng: /etc/apache2/sites-available/invoice-le-ssl.conf
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Mã:
Bật mô-đun viết lại ApacheĐang chuyển hướng vhost trong /etc/apache2/sites-enabled/invoice.conf sang ssl vhost trong /etc/apache2/sites-available/invoice-le-ssl.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://invoice.example.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=invoice.example.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/invoice.example.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/invoice.example.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 23-10-2020. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le