本页内容
- 准备工作
- 安装依赖项
- 配置 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 确认安装。

安装完成后,运行以下命令检查 Apache 和 MariaDB 服务的状态,以确保这两个服务都在运行。
sudo systemctl status apache2
sudo systemctl status mysql
如果 Apache 或 MariaDB 正在运行,您会看到 active(running) 的输出。

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

配置 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;

现在运行以下查询,检查用户 solidinvoice 的权限。请确保用户 solidinvoice 可以访问数据库 solidinvoicedb。
SHOW GRANTS FOR solidinvoice@localhost;
最后,输入 quit 退出 MariaDB 服务器。

配置 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

使用 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)确认。

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

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

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

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

返回服务器终端,使用以下命令为 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)。

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

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

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