本页内容

  • 准备工作
  • 安装依赖项
  • 配置 MariaDB 服务器
  • 配置 PHP
  • 下载 SolidInvoice
  • 配置 Apache 虚拟主机
  • 使用 HTTPS 保护 SolidInvoice
  • 安装 SolidInvoice
  • 总结

SolidInvoice 是一款免费、简洁且优雅的、基于 PHP 的开源发票解决方案。它专为小型企业设计,用于处理日常计费业务。SolidInvoice 提供用于集成的 RESTful API,并支持短信、电子邮件或 HipChat 等多种通知渠道。

本指南将向您展示如何在 Ubuntu 22.04 服务器上安装 SolidInvoice。您将使用 LAMP 技术栈搭建 SolidInvoice,并通过 Certbot 和 letsencrypt 来保护安装。

准备工作

在开始之前,请确保您已具备:

  • 一台 Ubuntu 22.04 服务器。
  • 一个具有 sudo 权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。

安装依赖项

SolidInvoice 是一款使用 PHP 和 MySQL 编写的开源发票应用程序。要安装它,您必须在 Ubuntu 系统上安装 LAMP 技术栈。在本第一步中,您将从 Ubuntu 默认软件源安装 LAMP 技术栈。

使用以下命令更新您的 Ubuntu 软件包索引。

sudo apt update

现在使用以下命令安装 LAMP 技术栈(Linux、Apache、MySQL/MariaDB 和 PHP)的依赖项。在本示例中,您将使用默认的 PHP 8.x 来安装 SolidInvoice。

sudo apt install apache2 mariadb-server mariadb-client php php-curl php-common php-mbstring php-json php-mysql php-opcache php-bcmath php-intl php-gd php-xml php-soap php-zip php-apcu

输入 Y 确认安装。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

安装完成后,运行以下命令检查 Apache 和 MariaDB 服务的状态,以确保这两个服务都在运行。

sudo systemctl status apache2
sudo systemctl status mysql

如果 Apache 或 MariaDB 正在运行,您会看到 active(running) 的输出。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

最后,使用以下命令检查 PHP 版本。您将看到 Ubuntu 系统上已安装 PHP 8.x。

php -v

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

配置 MariaDB 服务器

安装完 LAMP 技术栈后,您需要设置 MariaDB 服务器。首先,您将保护 MariaDB 服务器的安全,然后创建一个 SolidInvoice 将使用的新数据库和用户。

要保护 MariaDB 服务器的安装,请输入以下内容:

sudo mariadb-secure-installation

在此过程中,输入 Y 确认对 MariaDB 的更改,或输入 N 拒绝更改。以下是系统会提示您进行的 MariaDB 服务器配置:

  • 默认的 MariaDB 安装没有密码,当提示输入密码时,请按 ENTER。
  • 现在输入 Y 来设置 MariaDB root 密码。然后,输入 MariaDB 的新密码并重复输入一次。
  • 输入 Y 从 MariaDB 安装中删除匿名用户。
  • 当提示禁用 MariaDB root 用户的远程登录时,再次输入 Y。
  • 输入 Y 移除 MariaDB 中的默认 test 数据库。
  • 最后,输入 Y 重新加载表权限并应用新的更改。

现在您已保护了 MariaDB 的安全,请输入以下内容以默认 root 用户身份登录 MariaDB。系统询问时,请输入您的 MariaDB root 密码。

sudo mariadb -u root -p

登录后,运行以下查询来创建一个新数据库 solidinvoicedb、用户 solidinvoice,密码为 p4ssword。请务必将相关详细信息替换为您自己的信息,这些数据库信息将被 SolidInvoice 使用。

CREATE DATABASE solidinvoicedb;
CREATE USER solidinvoice@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON solidinvoicedb.* TO solidinvoice@localhost;
FLUSH PRIVILEGES;

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

现在运行以下查询,检查用户 solidinvoice 的权限。请确保用户 solidinvoice 可以访问数据库 solidinvoicedb。

SHOW GRANTS FOR solidinvoice@localhost;

最后,输入 quit 退出 MariaDB 服务器。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

配置 PHP

在 MariaDB 服务器完成保护和配置后,您将设置 PHP 安装。在此情况下,您需要修改默认的 PHP 配置文件 php.ini。

使用 nano 编辑器打开默认的 PHP 配置文件 /etc/php/8.1/apache2/php.ini。

sudo nano /etc/php/8.1/apache2/php.ini

将默认的 PHP 配置修改为以下内容,并务必根据您的服务器环境调整 memory_limit 和 date.timezone。

date.timezone = Europe/Amsterdam
memory_limit=512M
upload_max_filesize=64M
post_max_size=120M
max_execution_time=120

保存文件并退出。

现在使用以下命令重启 Apache 服务,以使您对 PHP 的修改生效。

sudo systemctl restart apache2

下载 SolidInvoice

现在您已配置好 MariaDB 和 PHP,可以下载 SolidInvoice 源代码,并设置正确的权限和所有权来完成安装。

进入 /var/www 目录,并使用 wget 下载 SolidInvoice 源代码。请查看 SolidInvoice 发布页面以获取最新版本。

cd /var/www/
wget https://github.com/SolidInvoice/SolidInvoice/releases/download/2.2.5/SolidInvoice-2.2.5.zip

将 SolidInvoice 源代码解压到 solidinvoice 目录,并将所有权更改为 www-data 用户。因此,SolidInvoice 安装的 DocumentRoot(Web 根目录)将为 /var/www/solidinvoice。

unzip SolidInvoice-2.2.5.zip -d solidinvoice
sudo chown -R www-data:www-data /var/www/solidinvoice

现在运行以下命令,确保 www-data 用户可以对 SolidInvoice 的部分目录和文件进行写入。

sudo chmod u+rw /var/www/solidinvoice/app/cache
sudo chmod u+rw /var/www/solidinvoice/app/logs
sudo chmod u+rw /var/www/solidinvoice/var/cache
sudo chmod u+rw /var/www/solidinvoice/var/logs
sudo chmod u+rw /var/www/solidinvoice/web/upload
sudo chmod u+rw /var/www/solidinvoice/app/config/parameters.yml

配置 Apache 虚拟主机

在您为 SolidInvoice 配置好 DocumentRoot 目录后,需要创建一个新的 Apache 虚拟主机来运行安装。因此,请确保您已为 SolidInvoice 准备好域名。

首先,运行以下命令以启用 Apache 中的 rewrite 模块。

sudo a2enmod rewrite

使用下面的 nano 编辑器命令创建新的 Apache 虚拟主机配置文件 /etc/apache2/sites-available/solidinvoice.conf。

sudo nano /etc/apache2/sites-available/solidinvoice.conf

插入以下配置,并确保将 ServerName 选项更改为您的目标域名。

<VirtualHost *:80>
 ServerName invoice.howtoforge.local
 ServerAlias www.invoice.howtoforge.local
 DocumentRoot /var/www/solidinvoice/public
 <Directory //var/www/solidinvoice/public>
 # enable the .htaccess rewrites
 AllowOverride All
 Order allow,deny
 Allow from All
 </Directory>
 ErrorLog /var/log/apache2/solidinvoice.error.log
 CustomLog /var/log/apache2/solidinvoice.access.log combined
</VirtualHost>

保存文件并退出编辑器。

现在输入以下命令以激活虚拟主机文件 solidinvoice.conf 并检查您的 Apache 语法。如果语法正确,您将看到 ' Syntax OK ' 的输出。

sudo a2ensite solidinvoice.conf
sudo apachectl configtest

最后,输入以下命令重启 Apache 并应用新的虚拟主机文件 solidinvoice.conf。执行后,您的 SolidInvoice 应该已在运行。

sudo systemctl restart apache2

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

使用 HTTPS 保护 SolidInvoice

在本示例中,您将通过 Certbot 和 letsencrypt 使用 SSL/TLS 证书保护 SolidInvoice。因此,现在您将安装 Certbot 并为您的 SolidInvoice 域名生成 SSL/TLS 证书。

首先,使用以下命令安装 Certbot 和 Certbot Apache 插件。输入 Y 确认安装。

sudo apt install certbot python3-certbot-apache

安装完成后,使用以下 certbot 命令生成 SSL/TLS 证书。请务必将域名和电子邮件地址信息替换为您自己的信息。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email 
[email protected]
 -d howtoforge.local

过程完成后,您的 SSL/TLS 证书应位于 /etc/letsencrypt/live/domain.com 目录中。此外,您的 SolidInvoice 安装应已自动通过 HTTPS 得到保护。

安装 SolidInvoice

打开 Web 浏览器并访问您的域名,例如 https://invoice.howtoforge.local/。在系统要求检查(System Requirements Check)中,确保一切正常,然后点击“下一步”(Next)确认。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

将数据库驱动选择为 MySQL,并输入您为 SolidInvoice 准备的 MariaDB 数据库和用户信息。完成后,再次点击“下一步”(Next)。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

现在您可以看到 SolidInvoice 的数据库架构已创建,点击“下一步”(Next)继续。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

在系统设置(System Settings)中,将默认区域设置为 English,并输入您的管理员用户、电子邮件和密码信息。然后再次点击“下一步”(Next)确认。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

安装完成后,您将看到 ' You have successfully installed SolidInvoice! ' 的输出,以及创建 cron 任务的附加说明。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

返回服务器终端,使用以下命令为 www-data 用户创建一个新的 cron 任务。

sudo crontab -u www-data -e

粘贴页面中的 crontab 脚本,然后保存并关闭文件。

* * * * * php /var/www/solidinvoice/bin/console cron:run -e prod -n

返回您的 Web 浏览器,点击“立即登录”(Log In Now)。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

现在系统会要求您创建公司名称和默认货币。点击“创建”(Create)确认。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

如果一切顺利,您应该会看到如下所示的 SolidInvoice 仪表盘。

在 Ubuntu 22.04 上安装 SolidInvoice 发票管理系统

总结

恭喜!您已成功在 Ubuntu 22.04 服务器上安装了 SolidInvoice。您已在 Ubuntu 上使用 LAMP 技术栈(Apache、MySQL/MariaDB 和 PHP)运行 SolidInvoice,并通过 Letsencrypt 使用 HTTPS 保护了您的安装。现在,您可以向 SolidInvoice 添加 SMTP 服务器等新组件并使用它。