如何使用Apache / Nginx在Ubuntu 18.04服务器上安装InvoiceNinja

本教程将向您展示如何在具有Apache或Nginx Web服务器的Ubuntu 18.04上安装InvoiceNinja。 InvoiceNinja是一种开源的,自托管的发票软件,它是诸如Freshbooks之类的商业在线发票平台的低成本替代产品。 InvoiceNinja提供托管的发票服务,但是如果您想自行托管软件,则可以按照以下说明进行操作。

忍者发票功能

  • 使用InvoiceNinja,您可以使用自己的域名和品牌将发票发送给客户。
  • 一个帐户即可管理多个企业的发票。
  • 通过使用定期发票自动为长期客户开帐单来节省时间。
  • 轻松创建精美的提案并将其发送给您的客户。
  • 将第三方文件附加到发票。
  • 创建项目任务和跟踪时间。
  • 使用可视化的项目管理工具来组织和计划您的客户工作。
  • 让您的客户一眼就能看到与您的所有交易。
  • Zapier自动化使您可以在发票帐户和常用应用程序(包括Gmail,Google表格,QuickBooks Online,Slack,管道,MailChimp等)之间传输数据。
  • 一次又一次使用同一张发票要求定金和部分付款。
  • 使用预写的自动提醒电子邮件序列来提醒客户您需要支付发票。
  • 客户查看并支付您的发票时会收到通知。
  • 还有很多

先决条件

首先,您需要一台至少具有512MB RAM的Linux服务器。 您可以单击此特殊链接,以在DigitalOcean上获得$ 100的免费信用。 (仅适用于新用户)。 如果您已经是DigitalOcean用户,则可以单击此特殊链接以在Vultr上获得$ 50的免费信用(仅适用于新用户)。 在DigitalOcean或Vultr中拥有帐户后,请在服务器上安装Ubuntu 18.04,然后按照以下说明进行操作。

InvoiceNinja需要PHP和MySQL / MariaDB。 要遵循本教程,您应该已经设置了LAMP堆栈或LEMP堆栈。 如果您尚未这样做,请使用以下指南之一。

  • 如何在Ubuntu 18.04上安装LAMP(Apache,MariaDB,PHP)堆栈
  • 如何在Ubuntu 18.04上安装LEMP(Nginx,MariaDB,PHP)堆栈

而且您还需要一个域名,以便您的客户可以通过您的域名查看发票。 我在NameCheap上注册了我的域名,因为价格低廉,并且终身免费提供Whois隐私保护。

现在,让我们安装InvoiceNinja。

步骤1:下载InvoiceNinja在Ubuntu 18.04服务器上安装Zip文件

通过SSH登录到Ubuntu 18.04服务器。 然后运行以下命令,将最新版本的InvoiceNinja zip文件下载到您的服务器上。

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

下载完成后,使用 unzip

sudo apt install unzip

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。 您可以使用任何喜欢的名称。

create database invoiceninja;

创建数据库用户。 同样,您可以为该用户使用您的首选名称。 更换 your-password 使用您的首选密码。

create user [email protected] identified by 'your-password';

授予该用户所有的权限 invoiceninja 数据库。

grant all privileges on invoiceninja.* to [email protected];

刷新特权并退出。

flush privileges;

exit;

步骤3:设置Web服务器

我们可以使用Apache或Nginx Web服务器。

阿帕奇

如果您喜欢Apache,请为Invoice Ninja创建一个虚拟主机文件。

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

将以下文本放入文件中。 将红色文本替换为您的实际数据。 不要忘记为域名设置A记录。 (请注意,网络根目录设置为 /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

</VirtualHost>

保存并关闭文件。 然后启用此虚拟主机。

sudo a2ensite invoice-ninja.conf

我们需要启用重写模块。

sudo a2enmod rewrite

重新启动Apache,以使更改生效。

sudo systemctl restart apache2

现在访问 invoice.yourdomain.com 您将被重定向到“发票忍者设置向导”页面(invoice.yourdomain.com/setup)。 如果看到默认的Apache页面而不是设置向导,则需要禁用默认的虚拟主机。

sudo a2dissite 000-default.conf

并重新启动Apache。

在设置向导中输入任何信息之前,我们需要启用HTTPS。

Nginx的

如果您喜欢Nginx,请创建一个 invoice-ninja.conf 归档在 /etc/nginx/conf.d/ 目录。

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

将以下文本放入文件中。 将红色文本替换为您的实际数据。 不要忘记为域名设置A记录。 (请注意,网络根目录设置为 /var/www/invoice-ninja/public/,不是 /var/www/invoice-ninja/

server {
    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.2-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.yourdomain.com/setup)。 在设置向导中输入任何信息之前,我们需要启用HTTPS。

步骤4:启用HTTPS

为了加密HTTP流量,我们可以通过安装由Let’s Encrypt发行的免费TLS证书来启用HTTPS。 运行以下命令在Ubuntu 18.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期间提供的证书。

现在应该获得证书并自动安装。

步骤5:安装PHP模块

运行以下命令以安装InvoiceNinja所需或推荐的PHP模块。

sudo apt install php-imagick 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

然后重新启动Apache。 (如果使用Nginx,则无需重新启动Nginx。)

sudo systemctl restart apache2

如果未安装这些模块,则登录后将看到以下错误。

Whoops, looks like something went wrong.

步骤6:使用安装向导完成安装

现在去 invoice.yourdomain.com 并输入数据库信息,SMTP设置并创建一个admin用户。

发票忍者ubuntu apache nginx

如果您想使用自己的邮件服务器向客户发送电子邮件,请查看以下文章以设置您自己的邮件服务器。 注意 我强烈建议在全新的干净操作系统上运行iRedMail邮件服务器。 在具有其他Web应用程序的OS上安装iRedMail可能会失败,并可能破坏现有应用程序。

  • 如何使用iRedMail在Ubuntu 18.04上轻松设置功能齐全的邮件服务器

使用自己的电子邮件服务器时,有两种驱动程序可供选择: SMTPSendmail

  • 选择 SMTP 如果您的邮件服务器和“忍者发票”在两个不同的主机上运行。
  • 选择 Sendmail 如果您的邮件服务器和“忍者发票”在同一主机上运行。

如果你选择 SMTP,请使用如下设置。

  • 主办:mail.yourdomain.com 港口:587 加密:TLS。 并输入您的用户名和密码。

如果你选择 Sendmail,请使用如下设置。

  • 主办:127.0.0.1 港口:25 加密: 没有。 您不需要输入用户名或密码。

创建管理员用户后,您可以登录InvoiceNinja。

设置发票忍者ubuntu服务器

设置Cron作业

我们需要设置Cron作业以发送定期发票和电子邮件提醒。 编辑root用户的crontab文件。

sudo crontab -e

在此文件的末尾添加以下行。

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

保存并关闭文件。 这两个Cron作业将每天早上8点运行。 您也可以手动运行以下作业。

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

删除发票忍者品牌

默认情况下,您的发票上将带有“发票忍者”品牌,您可以以每年30美元的价格购买白标许可,以从发票和客户门户中删除“发票忍者”品牌。 去 settings -> Invoice Design, 点击 white-label 底部的链接进行购买。

结论

我希望本教程可以帮助您在Ubuntu 18.04服务器上安装Invoice Ninja。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂

Sidebar