如何使用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
如果未安装这些模块,则登录后将看到以下错误。
步骤6:使用安装向导完成安装
现在去 invoice.yourdomain.com
并输入数据库信息,SMTP设置并创建一个admin用户。
如果您想使用自己的邮件服务器向客户发送电子邮件,请查看以下文章以设置您自己的邮件服务器。 注意 我强烈建议在全新的干净操作系统上运行iRedMail邮件服务器。 在具有其他Web应用程序的OS上安装iRedMail可能会失败,并可能破坏现有应用程序。
- 如何使用iRedMail在Ubuntu 18.04上轻松设置功能齐全的邮件服务器
使用自己的电子邮件服务器时,有两种驱动程序可供选择: SMTP
和 Sendmail
。
- 选择
SMTP
如果您的邮件服务器和“忍者发票”在两个不同的主机上运行。 - 选择
Sendmail
如果您的邮件服务器和“忍者发票”在同一主机上运行。
如果你选择 SMTP
,请使用如下设置。
- 主办:mail.yourdomain.com 港口:587 加密:TLS。 并输入您的用户名和密码。
如果你选择 Sendmail
,请使用如下设置。
- 主办:127.0.0.1 港口:25 加密: 没有。 您不需要输入用户名或密码。
创建管理员用户后,您可以登录InvoiceNinja。
设置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。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。 保重🙂