如何在 Ubuntu 22.04 上安装发票忍者 5
发票是任何企业最基本的文件之一。它用于告知已提供哪些商品或服务以及支付多少费用。它提供了一种个人可以提出正式付款请求的方法。
当今市场上有多种发票解决方案。大多数小型和成长型企业都依赖开源发票系统来运行。这样做的主要好处是不需要任何成本,因此可以最大限度地降低运营成本。最流行的发票系统有发票飞机、发票忍者、Ledgersmb、Dolibarr、Crater App 等。
在本指南中,我们将学习如何在 Ubuntu 22.04 上安装 Invoice Ninja 5。
什么是发票忍者?
Invoice Ninja 是 Freshbooks 等商业发票解决方案的广泛使用的开源替代方案之一。 Invoice Ninja 是一款面向自由职业者和企业的自托管发票软件。它允许用户进行和接受付款、跟踪费用以及创建提案和时间任务。
使用 Invoice Ninja,用户可以执行以下操作:
- 创建项目任务和跟踪时间,这样您就可以摆脱第三方时间跟踪器,例如clockify.me。
- 使用预先编写的自动提醒电子邮件序列来提醒客户您的发票需要支付。
- 当客户查看并支付您的发票时收到通知。
- 使用同一张发票一次又一次地要求押金和部分付款。
- 轻松创建精美提案并将其发送给您的客户。
- 通过定期发票自动向长期客户计费,节省时间。
- 在一个帐户下管理多个企业的发票。
- 使用您自己的域名和品牌向您的客户发送发票。
- Zapier 自动化允许您在发票帐户和流行应用程序之间传输数据,包括 Gmail、QuickBooks Online、Google Sheets、Slack、Pipeline、MailChimp 等数百个应用程序。
- 让您的客户一目了然地看到他们与您的所有交易。
- 将第 3 方文件附加到发票。
今天,我们将安装 Invoice Ninja 5,它具有以下新增功能:
- 扩展支付功能:每个账户支持多个支付网关,能够多付/少付发票,并支持在多张发票上应用一笔付款。
- 扩展任务和项目:在这里,我们可以将文档附加到定时任务,并指定添加的任务本身的速率。
- 从您的 Gmail 帐户发送的发票:用户可以通过 Gmail 发送发票、报价和付款提醒。
- “发票生命周期”添加新“状态”:满足一系列全球会计需求;添加了取消发票、冲销发票和恢复发票。
- 创建组设置:这允许用户添加或删除不同“组”中的客户端,以在“组”级别控制自定义设置。他们还能够向不同的客户群体展示不同的公司徽标和联系方式。
让我们深入了解一下!
如何在 Ubuntu 22.04 上安装发票忍者
如果您具备以下条件,本指南将最有效:
- Ubuntu 22.04 运行
- 须藤访问
- 域名指向您的IP
首先,将您的系统和可用软件包更新到最新的可用版本:
sudo apt update && sudo apt upgrade -y
[ -f /var/run/reboot-required ] && sudo reboot -f
安装所需的软件包:
sudo apt install software-properties-common apt-transport-https ca-certificates gnupg2 vim -y
设置系统的主机名。
sudo hostnamectl set-hostname invoiceninja.computingforgeeks.com
确保您已将其添加到主机文件中:
$ sudo vim /etc/hosts
192.168.205.22 invoiceninja.computingforgeeks.com invoiceninja
#1.在 Ubuntu22.04 上安装 LAMP Stack
LAMP 由 Apache Web 服务器、PHP 和 MariaDB 数据库组成。可以使用以下命令将这些软件包安装在我们的 Ubuntu 系统上。
安装 Apache 和 MariaDB
sudo apt install apache2 mariadb-server mariadb-client
Invoice Ninja 5 目前兼容 Ubuntu 22.04 默认存储库提供的 PHP 8.1,我们不需要添加额外的存储库来安装它。
sudo apt install php-{fpm,soap,bcmath,common,imagick,mysql,gmp,curl,intl,mbstring,xmlrpc,gd,xml,cli,zip,bz2} libapache2-mod-php
完成后,检查版本:
$ php -v
PHP 8.1.2-1ubuntu2.8 (cli) (built: Nov 2 2022 13:35:25) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.8, Copyright (c), by Zend Technologies
确保 PHP-FPM 正在运行:
$ systemctl status php*-fpm.service
● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-11-18 13:28:27 EAT; 41s ago
Docs: man:php-fpm8.1(8)
Process: 18793 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81 (code=exited, status=0/SUCCESS)
Main PID: 18790 (php-fpm8.1)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4629)
Memory: 10.6M
CPU: 55ms
CGroup: /system.slice/php8.1-fpm.service
├─18790 "php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
├─18791 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
└─18792 "php-fpm: pool www" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
Nov 18 13:28:27 invoiceninja.computingforgeeks.com systemd[1]: Starting The PHP 8.1 FastCGI Process Manager...
Nov 18 13:28:27 invoiceninja.computingforgeeks.com systemd[1]: Started The PHP 8.1 FastCGI Process Manager.
#2.配置发票 Ninja 5 数据库
我们已经安装了 MariaDB 服务器。在继续之前,我们需要启动并启用该服务:
sudo systemctl enable --now mariadb
保护安装:
sudo mysql_secure_installation
如下图所示进行:
Enter current password for root (enter for none): Press Enter
....
Switch to unix_socket authentication [Y/n] y
.......
Change the root password? [Y/n] y
New password: Enter Password
Re-enter new password: Re-Enter Password
......
Remove anonymous users? [Y/n] y
...
Disallow root login remotely? [Y/n] y
...
...
Remove test database and access to it? [Y/n] y
....
Reload privilege tables now? [Y/n] y
.....
Thanks for using MariaDB!
使用上面创建的密码登录 shell:
sudo mysql -u root -p
现在为 Invoice Ninja 5 创建一个数据库。
create database invoicedb;
create user invoice@localhost identified by 'Str0ngPassw0rd123';
grant all privileges on invoicedb.* to invoice@localhost;
flush privileges;
exit;
#3。在 Ubuntu 22.04 上安装发票忍者 5
我们首先从 Github 发布页面下载最新的存档。这也可以使用 wget 来完成,如下所示:
首先,导出最新的可用版本:
VER=$(curl -s https://api.github.com/repos/invoiceninja/invoiceninja/releases/latest|grep tag_name|cut -d '"' -f 4|sed 's/v//')
现在下载存档
wget https://github.com/invoiceninja/invoiceninja/releases/download/v${VER}/invoiceninja.zip
下载后,将其解压到 Apache 根目录:
sudo unzip invoiceninja.zip -d /var/www/html/
为创建的目录设置所需的权限:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
现在导航到该目录:
cd /var/www/html
将环境文件复制到备份文件:
sudo cp .env.example .env
编辑文件:
sudo vim .env
修改以下行:
APP_URL=http://invoiceninja.example.com
DB_CONNECTION=mysql
MULTI_DB_ENABLED=false
DB_HOST=localhost
DB_DATABASE=invoicedb
DB_USERNAME=invoice
DB_PASSWORD=Str0ngPassw0rd123
DB_PORT=3306
保存并关闭文件,然后设置文件的正确所有权:
sudo chown www-data:www-data /var/www/html/.env
为您的 InvoiceNinja 安装生成唯一的应用程序密钥。
$ sudo php /var/www/html/artisan key:generate
APPLICATION IN PRODUCTION.
Do you really wish to run this command? (yes/no) [no]
❯ yes
INFO Application key set successfully
使用以下命令迁移数据库:
$ sudo php /var/www/html/artisan migrate:fresh --seed
APPLICATION IN PRODUCTION.
Do you really wish to run this command? (yes/no) [no]
❯ yes
Dropping all tables ................................................ 5ms DONE
INFO Preparing database.
Creating migration table .......................................... 64ms DONE
INFO Loading stored database schemas.
database/schema/mysql-schema.dump
.....
Database\Seeders\PaymentTypesSeeder ................................. RUNNING
Database\Seeders\PaymentTypesSeeder .......................... 126.68 ms DONE
Database\Seeders\GatewayTypesSeeder ................................. RUNNING
Database\Seeders\GatewayTypesSeeder ........................... 71.04 ms DONE
Database\Seeders\DateFormatsSeeder .................................. RUNNING
Database\Seeders\DateFormatsSeeder ........................... 130.51 ms DONE
Database\Seeders\DesignSeeder ....................................... RUNNING
Database\Seeders\DesignSeeder ................................ 255.06 ms DONE
#4。为 Invoice Ninja 5 配置 Apache
现在我们需要配置 Apache Web 服务器以便能够为 Invoice Ninja 5 页面提供服务。这可以通过创建虚拟主机文件来完成,如下所示:
sudo vim /etc/apache2/sites-available/ninja.conf
在该文件中,添加以下行:
<VirtualHost *:80>
ServerName invoiceninja.computingforgeeks.com
DocumentRoot /var/www/html/public
<Directory /var/www/html/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/php8.1-fpm.conf
</VirtualHost>
在该文件中,正确替换服务器名称和 PHP-FPM 版本。完成更改后,保存文件并启用站点:
sudo a2ensite ninja.conf
启用所需的 apache 模块:
sudo a2enmod mpm_event proxy_fcgi setenvif
sudo a2enmod rewrite
禁用默认页面:
sudo a2dissite 000-default.conf
要应用所做的更改,请重新启动 Apache:
sudo systemctl restart apache2
验证 Apache 是否正常运行:
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-11-18 13:35:12 EAT; 5s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 19270 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 19274 (apache2)
Tasks: 6 (limit: 4629)
Memory: 15.2M
CPU: 56ms
CGroup: /system.slice/apache2.service
├─19274 /usr/sbin/apache2 -k start
├─19275 /usr/sbin/apache2 -k start
├─19276 /usr/sbin/apache2 -k start
├─19277 /usr/sbin/apache2 -k start
├─19278 /usr/sbin/apache2 -k start
└─19279 /usr/sbin/apache2 -k start
Nov 18 13:35:12 invoiceninja.computingforgeeks.com systemd[1]: Starting The Apache HTTP Server...
Nov 18 13:35:12 invoiceninja.computingforgeeks.com systemd[1]: Started The Apache HTTP Server.
#5。 (可选)为 Invoice Ninja 5 启用 HTTPS
还可以使用 SSL 证书为您启用 HTTPS。要为您的域名生成免费的 SSL 证书,您可以使用 Let’s Encrypt。
首先,安装所需的软件包:
sudo apt install python3-certbot-apache -y
安装后,您可以使用以下命令为您的站点生成证书:
certbot --apache -d invoiceninja.computingforgeeks.com
在上述命令中,将 invoiceninja.computingforgeeks.com 替换为您的完全限定域名。
系统将要求您接受许可条款并提供一些详细信息。
aving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2022.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for invoice.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/ninja-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/ninja-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/ninja-le-ssl.conf
现在允许 HTTP 流量重定向到 HTTPS
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
此后,您将把所有 HTTP 请求重定向到 HTTPS。
#6。在 Ubuntu 22.04 上访问发票忍者 5
现在我们可以在 Ubuntu 22.04 上访问 Invoice Ninja 5。这可以通过您最喜欢的浏览器使用 URL http://domain_name 或 https://http://domain_name 来完成
您将被重定向到以下页面。继续并进行初始设置。提供您网站的 URL。
提供后,点击测试 PDF。如果成功,请继续并配置之前创建的数据库。
提供详细信息后,测试连接。
在下一页上,您可以配置SMTP,以便能够使用您的 GMAIL 帐户转发发票。所需的详细信息是:
- 驱动程序:SMTP
- 主机:smtp.gmail.com
- 用户名:您的 Gmail 用户名
- 密码:您的 Gmail 密码
- 端口:587
- 加密:STARTTLS
- 密码:google-app-password
google-app-password 是您应用程序的特定密码,可以通过导航至安全 > 应用密码从您的 Gmail 帐户生成,如图所示。
点击应用密码后,从下拉菜单中选择邮件应用程序。
对于设备,选择其他(自定义名称),并提供invoice Ninja 名称或任何其他首选名称。
现在生成应用程序的密码。
一旦生成。您需要复制此密码,因为下面的步骤将需要它。
填写详细信息,如图所示:
提供详细信息后,测试电子邮件是否有效。最后,为 Invoice Ninja 创建一个管理员帐户
然后您将被重定向到登录页面。使用上面创建的用户凭据登录:
通过身份验证后,您需要设置公司名称、主题、语言和货币。
现在您将获得以下仪表板:
您将使用 Invoice Ninja 5。为了演示如何开始,我们将创建一个示例客户端。
保存后,客户端将如图所示。
继续并创建产品/服务
有了产品和客户,您现在可以生成发票
您可以保存发票、通过电子邮件发送、打印和查看等
#7.为发票忍者安排电子邮件提醒
您现在可以配置 Cron 作业来发送定期发票和电子邮件提醒。这可以使用以下命令来完成:
sudo -u www-data crontab -e
在该文件中,添加以下行:
#InvoiceNinja
0 8 * * * /usr/bin/php /var/www/html/artisan ninja:send-recurring > /dev/null
0 8 * * * /usr/bin/php /var/www/html/artisan ninja:send-reminders > /dev/null
* * * * * /usr/bin/php /var/www/html/artisan schedule:run >> /dev/null 2>&1
关闭文件并测试 Cron 作业是否可以无错误地执行。
sudo /usr/bin/php /var/www/html/artisan schedule:run
判决
这标志着关于如何在 Ubuntu 22.04 上为 Ninja 5 开发票的详细指南的结束。我们仅介绍了如何开始使用 Invoice Ninja 5。您还可以使用 Invoice Ninja 5 执行许多其他功能。您现在可以自行探索它们。
查看更多:
- 在 CentOS 8 上安装 Invoice Ninja |洛基 Linux 8
- 在 Debian 上安装 Crater 发票解决方案