本教程將向您展示如何在 Ubuntu 20.04 上安裝 Invoice Ninja Apache 或 Nginx Web 服務器。 InvoiceNinja 是一款開源自託管計費軟件,是 Freshbooks 等商業在線計費平台的低成本替代品。 InvoiceNinja 提供託管計費服務,但如果您想要自託管軟件,請按照以下步驟操作。

發票忍者功能

  • InvoiceNinja 允許您使用自己的域名和品牌向客戶開具發票。
  • 使用一個帳戶管理多個企業的發票。
  • 通過自動為長期客戶開具定期發票來節省時間。
  • 輕鬆創建精美的建議並將其發送給您的客戶。
  • 請在您的發票上附上第三方文件。
  • 創建項目任務並跟踪時間。
  • 使用可視化項目管理工具來組織和計劃客戶的工作。
  • 讓您的客戶對與您的每筆交易一目了然。
  • Zapier 自動化允許您在您的計費帳戶和流行的應用程序之間傳輸數據,例如 Gmail、Google 表格、QuickBooks Online、Slack、Pipeline 和 MailChimp。
  • 在同一張發票上一遍又一遍地要求存款和部分付款。
  • 發票通知客戶他們需要使用一組預先製作的自動提醒電子郵件付款。
  • 當客戶查看發票並付款時,您會收到通知。
  • 還有很多

先決條件

首先,您需要一台具有 512MB 或更多 RAM 的 Linux 服務器。單擊此特殊鏈接可在 Digital Ocean 上賺取 100 美元的免費積分。 (僅限新用戶)。如果您已經是 Digital Ocean 用戶,您可以單擊此特殊鏈接在 Vultr 中獲得 50 美元的免費積分(僅限新用戶)。 擁有 DigitalOcean 或 Vultr 帳戶後,在您的服務器上安裝 Ubuntu 20.04 並按照以下步驟操作。

Invoice Ninja 需要 PHP 和 MySQL / MariaDB。 LAMP 堆棧或 LEMP 堆棧必須已配置為遵循本教程。如果您還沒有這樣做,請使用以下指南之一。

  • 如何在 Ubuntu 20.04 上安裝 LAMP(Apache、MariaDB、PHP)堆棧
  • 如何在 Ubuntu 20.04 上安裝 LEMP(Nginx、MariaDB、PHP)堆棧

您還需要一個域名,以便客戶可以使用該域名查看發票。我在 NameCheap 中註冊了我的域名。這是為了以低廉的價格提供終身免費的whois隱私保護。

現在讓我們安裝 Invoice Ninja。

第 1 步:將 Invoice Ninja 安裝 Zip 文件下載到您的 Ubuntu 20.04 服務器

通過 SSH 登錄 Ubuntu 20.04 服務器。然後運行以下命令將最新版本的 Invoice Ninjazip 文件下載到您的服務器。

wget -O invoice-ninja.zip https://download.invoiceninja.com/

下載後,解壓壓縮包到 /var/www/ 目錄和 unzip..

sudo apt install unzip

sudo mkdir -p /var/www/

sudo unzip invoice-ninja.zip -d /var/www/

這個 -d 該選項指定目標目錄。 InvoiceNinja web 文件將被提取到 /var/www/ninja..為了更好地識別每個目錄,您可以將其重命名如下: invoice-ninja..

sudo mv /var/www/ninja /var/www/invoice-ninja

接下來,您需要更改該目錄的所有者,如下所示: www-data 允許 Web 服務器寫入此目錄。

sudo chown www-data:www-data /var/www/invoice-ninja/ -R

您還需要更改權限 storage 目錄。

sudo chmod 755 /var/www/invoice-ninja/storage/ -R

第 2 步:在 MariaDB 中創建數據庫和用戶

使用以下命令登錄 MariaDB 數據庫服務器: 因為 MariaDB 目前正在使用它 unix_socket 無需輸入 MariaDB 根密碼即可對用戶登錄進行身份驗證的插件。只需添加前綴 mysql 命令與 sudo..

sudo mysql

接下來,為 InvoiceNinja 創建一個數據庫。為本教程命名數據庫 invoiceninja..你可以使用任何你喜歡的名字。

create database invoiceninja;

創建數據庫用戶。同樣,您可以為該用戶使用您喜歡的任何名稱。交換 your-password 請使用您的首選密碼。

create user ninja@localhost identified by 'your-password';

授予此用戶所有權限 invoiceninja 數據庫。

grant all privileges on invoiceninja.* to ninja@localhost;

更新權限並退出。

flush privileges;

exit;

第 3 步:安裝 PHP 模塊

請注意,Invoice Ninja 目前不支持 PHP 7.4。為獲得最佳兼容性,我們建議您添加 PHP7.3PPA 並安裝 PHP7.3。

sudo add-apt-repository ppa:ondrej/php

然後運行以下命令安裝 Invoice Ninja 需要或推薦的 PHP 模塊。

sudo apt install php-imagick php7.3-fpm php7.3-mysql php7.3-common php7.3-gd php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

如果您使用 Apache Web 服務器,則需要禁用 PHP 模塊 Apache。

sudo a2dismod php7.4

您還需要禁用 prefork MPM 模塊。

sudo a2dismod mpm_prefork

接下來,您需要運行以下命令來為這三個模塊啟用 PHP-FPM。 mod_php 它安裝在服務器上。

sudo a2enmod mpm_event proxy_fcgi setenvif

然後重新啟動 Apache。

sudo systemctl restart apache2

第 4 步:設置您的網絡服務器

您可以使用 Apache 或 Nginx 網絡服務器。

阿帕奇

如果您需要 Apache,請為 Invoice Ninja 創建一個虛擬主機文件。

sudo nano /etc/apache2/sites-available/invoice-ninja.conf

將以下文本放入文件中。交換 invoice.yourdomain.com 使用您自己的 InvoiceNinja 子域。 記得在 DNS Manager 中為您的域名設置 A 記錄。 (請注意,webroot 設置為 /var/www/invoice-ninja/public/, 數字 /var/www/invoice-ninja/)。

<VirtualHost *:80>
    ServerName invoice.yourdomain.com
    DocumentRoot /var/www/invoice-ninja/public

    <Directory /var/www/invoice-ninja/public>
       DirectoryIndex index.php
       Options +FollowSymLinks
       AllowOverride All
       Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log
    CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined

    Include /etc/apache2/conf-available/php7.3-fpm.conf
</VirtualHost>

保存並關閉文件。然後啟用這個虛擬主機。

sudo a2ensite invoice-ninja.conf

您需要啟用重寫模塊。

sudo a2enmod rewrite

重新啟動 Apache 以使更改生效。

sudo systemctl restart apache2

立即訪問 invoice.yourdomain.com 您將被重定向到 Invoice Ninja 設置嚮導頁面 (invoice.yourdomain.com/setup)。如果您看到默認的 Apache 頁面而不是設置嚮導,則需要禁用默認虛擬主機。

sudo a2dissite 000-default.conf

重啟阿帕奇。

必須先啟用 HTTPS,然後才能在設置嚮導中輸入信息。這將在第 4 步中解釋。

nginx

如果你需要 Nginx, invoice-ninja.conf 記錄 /etc/nginx/conf.d/ 目錄。

sudo nano /etc/nginx/conf.d/invoice-ninja.conf

將以下文本放入文件中。交換 invoice.yourdomain.com 使用您自己的 InvoiceNinja 子域。 記得在 DNS Manager 中為您的域名設置 A 記錄。 (請注意,webroot 設置為 /var/www/invoice-ninja/public/, 數字 /var/www/invoice-ninja/)。

server {
    listen 80;
    listen [::]:80;
    server_name invoice.yourdomain.com;

    root /var/www/invoice-ninja/public/;
    index index.php index.html index.htm;
    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log  /var/log/nginx/invoiceninja.access.log;
    error_log   /var/log/nginx/invoiceninja.error.log;

    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /.ht {
        deny all;
    }
}

保存並關閉文件。接下來,測試您的 Nginx 配置。

sudo nginx -t

如果測試成功,請重新加載 Nginx 以使更改生效。

sudo systemctl reload nginx

立即訪問 invoice.yourdomain.com 您將被重定向到 Invoice Ninja 設置嚮導頁面 (invoice.yourdomain.com/setup)。必須先啟用 HTTPS,然後才能在設置嚮導中輸入信息。

第 5 步:啟用 HTTPS

要加密 HTTP 流量,請安裝 Let’s Encrypt 頒發的免費 TLS 證書並啟用 HTTPS。通過運行以下命令在 Ubuntu 20.04 服務器上安裝 Let’s Encrypt 客戶端 (certbot):

sudo apt install certbot

如果要使用 Nginx,還需要安裝 Certbot Nginx 插件。

sudo apt install python3-certbot-nginx

然後運行以下命令獲取並安裝 TLS 證書。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d invoice.yourdomain.com

如果您使用 Apache,請安裝 Certbot Apache 插件。

sudo apt install python3-certbot-apache

運行此命令以獲取並安裝 TLS 證書。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d invoice.yourdomain.com

在哪裡

  • --nginx: 使用 nginx 插件。
  • --apache: 使用 Apache 插入。
  • --agree-tos: 我接受使用條款。
  • --redirect: 301 通過重定向強制 HTTPS。
  • --hsts:將 Strict-Transport-Security 標頭添加到所有 HTTP 響應。強制瀏覽器始終對域使用 TLS。 防止 SSL / TLS 剝離。
  • --staple-ocsp:啟用 OCSP 訂書釘。有效的 OCSP 響應被裝訂到 TLS 期間服務器提供的證書。

現在將自動獲取並安裝證書。

步驟 6:使用安裝嚮導完成安裝

我現在就去 invoice.yourdomain.com 然後輸入數據庫信息、SMTP 設置並創建一個管理員用戶。

如果您想使用自己的郵件服務器向客戶發送電子郵件,請查看以下文章來設置您自己的郵件服務器。 筆記 強烈建議在新的干淨操作系統上運行 iRedMail 郵件服務器。使用其他 Web 應用程序在您的操作系統上安裝 iRedMail 可能會失敗或損壞現有應用程序。

  • 如何使用 iRedMail 在 Ubuntu 20.04 上輕鬆設置全功能郵件服務器

如果您使用自己的電子郵件服務器,則可以在兩個驅動程序之間進行選擇。 SMTP 什麼時候 Sendmail..

  • 選擇 SMTP 如果您的郵件服務器和 Invoice Ninja 在兩個不同的主機上運行。
  • 選擇 Sendmail 如果您的郵件服務器和 Invoice Ninja 在同一台主機上運行。

如果選擇 SMTP使用以下設置。

  • 主持人: Mail.yourdomain.com 港口: 587 加密: TLS。輸入您的用戶名和密碼。

如果選擇 Sendmail使用以下設置。

  • 主持人: 127.0.0.1 港口:二十五 加密: 沒有什麼。您無需輸入用戶名或密碼。

創建管理員用戶後,您可以登錄 Invoice Ninja。

Invoice Ninja ubuntu 服務器設置

cron 作業設置

要發送定期發票和電子郵件提醒,您需要設置 Cron 作業。 編輯 root 用戶的 crontab 文件。

sudo crontab -e

將以下行添加到此文件的末尾:

#InvoiceNinja
0 8 * * * /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-invoices > /dev/null
0 8 * * * /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-reminders > /dev/null

保存並關閉文件。這兩個 cron 作業每天早上 8 點運行。您也可以手動運行作業,如下所示:

sudo /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-invoices

刪除發票忍者品牌

默認情況下,發票帶有 Invoice Ninja 品牌。您可以以每年 30 美元的價格購買白標許可證,以從您的發票和客戶門戶中刪除 Invoice Ninja 品牌。去 settings -> Invoice Design, 點擊 white-label 購買鏈接在底部。

結論是

我們希望本教程能幫助您在 Ubuntu 20.04 服務器上安裝 Invoice Ninja。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。照顧好自己?