本教程將向您展示如何在 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。
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。與往常一樣,如果您覺得本文有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。照顧好自己?