在 Ubuntu 20.04 上安装 Akaunting 自托管会计软件

本教程将向您展示如何安装 惊恐 在 Ubuntu 20.04 上 Apache 或 Nginx 网络服务器。 Akaunting 是一款免费的开源自托管会计软件。 您可以使用它来跟踪个人财务或小型企业会计。

令人敬畏的功能

  • 完全免费和开源。
  • 易于使用的基于 Web 的界面。 随时随地在 Mac、PC、平板电脑或手机上在线查看您的财务状况。
  • 手机和平板电脑接口
  • 多语言管理和客户面板
  • 专为小型企业设计
  • 100% 财务数据所有权
  • 寿命 自由 更新
  • 您可以创建客户并向他们发送发票。 您还可以设置密码,以便他们可以访问客户门户。
  • 向客户发送专业发票并开始接受在线支付,无佣金/交易费。
  • 在账户之间添加存款和转账,并保持您的银行账户余额处于活跃状态。
  • 创建供应商,以便您可以向他们分配账单和付款,然后轻松过滤他们的交易。
  • 创建和管理账单,让您的财务始终准确和健康。 知道什么以及何时付款。
  • 将不可计费的费用添加为付款,以使您的银行/现金帐户余额保持最新。
  • 使能够 库存跟踪 并在货物进出时进行管理。 项目还加快了开票速度。
  • 创建无限的银行和现金账户,并跟踪他们的期初余额和当前余额。
  • 以任何货币发送发票和添加费用,并让系统将它们转换为您的主要货币。
  • 一站式管理多家公司的财务 admin 控制板。 将用户分配到不同的公司。
  • 获取详细的财务报告,以帮助您更好地可视化改善业务所需的所有信息。
  • 通过从应用商店安装应用来扩展 Akaunting,您可以安装或购买任何东西。
  • 在角色级别配置权限以保护和简化他们的管理体验。

在 Ubuntu 20.04 上安装 Akaunting 的先决条件

首先,你需要一个至少有 512MB RAM 的 Ubuntu 服务器。 如果您正在寻找 VPS(虚拟专用服务器),那么您可以单击此特殊链接在 Vultr 上创建一个帐户以获得 50 美元的免费赠金(仅限新用户)。 在 Vultr 上拥有帐户后,在您的服务器上安装 Ubuntu 20.04 并按照以下说明进行操作。

Akaunting 需要 PHP 和 MySQL/MariaDB。 要学习本教程,您应该已经设置了 LAMP 堆栈或 LEMP 堆栈。 如果您更喜欢使用 Apache Web 服务器,然后安装 LAMP 堆栈。

  • 如何安装 LAMP (Apache、MariaDB、PHP) 堆栈在 Ubuntu 20.04 上

如果您更喜欢使用 nginx Web 服务器,然后安装 LEMP 堆栈。

  • 如何在 Ubuntu 20.04 上安装 LEMP(Nginx、MariaDB、PHP)堆栈

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

现在让我们安装 Akaunting。

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

登录您的 Ubuntu 20.04 服务器并使用以下命令下载 Akaunting 的最新稳定版本。

wget -O Akaunting.zip https://akaunting.com/download.php?version=latest

然后在 Web 根目录下为 Akaunting 创建一个目录。

sudo mkdir -p /var/www/akaunting/

使用以下命令解压缩 zip 存档 unzip.

sudo apt install unzip  sudo unzip Akaunting.zip -d /var/www/akaunting/

-d 选项指定目标目录。 Akaunting 网络文件将被提取到 /var/www/akaunting/. 接下来,我们需要将此目录的所有者更改为 www-data 以便 Web 服务器可以写入此目录。

sudo chown www-data:www-data /var/www/akaunting/ -R

第 2 步:在 MariaDB 中创建数据库和用户

使用以下命令登录到 MariaDB 数据库服务器。 由于 MariaDB 现在正在使用 unix_socket 验证用户登录的插件,无需输入 MariaDB root 密码。 我们只需要添加前缀 mysql 命令与 sudo.

sudo mysql -u root

然后为 Akaunting 创建一个数据库。 本教程命名数据库 akaunting. 您可以使用任何您喜欢的名称。

create database akaunting;

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

create user 'accountant'@'localhost' identified by 'your-password';

授予此用户所有权限 akaunting 数据库。

grant all privileges on akaunting.* to 'accountant'@'localhost';

刷新权限并退出。

flush privileges;  exit;

第 3 步:安装 PHP 模块

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

sudo apt install php-imagick php7.4-common php7.4-mysql php7.4-gd php7.4-bcmath php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl

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

sudo systemctl restart apache2

第 4 步:设置 Web 服务器

我们可以用 Apache 或 Nginx 网络服务器。

Apache

若你宁可 Apache,使用像 Nano 这样的命令行文本编辑器为 Akaunting 创建一个虚拟主机文件。

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

将以下文本放入文件中。 代替 accounting.yourdomain.com 使用您真正的 Akaunting 子域。 不要忘记在域注册商的 DNS 管理器中为域名设置 DNS A 记录。

<VirtualHost *:80>     ServerName accounting.yourdomain.com     DocumentRoot /var/www/akaunting/      <Directory /var/www/akaunting/>        DirectoryIndex index.php        Options +FollowSymLinks        AllowOverride All        Require all granted     </Directory>      ErrorLog ${APACHE_LOG_DIR}/akaunting.error.log     CustomLog ${APACHE_LOG_DIR}/akaunting.access.log combined  </VirtualHost>

Save 和 close 文件。 然后启用这个虚拟主机。

sudo a2ensite akaunting.conf

我们需要启用重写模块。

sudo a2enmod rewrite

重新开始 Apache 以使更改生效。

sudo systemctl restart apache2

现在访问 accounting.yourdomain.com 您将被重定向到设置向导页面(accounting.yourdomain.com/install/language)。 如果你看到默认 Apache 页面而不是设置向导,那么您需要禁用默认的虚拟主机。

sudo a2dissite 000-default.conf

并重新启动 Apache.

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

nginx

如果您更喜欢 Nginx,请创建一个 akaunting.conf 归档 /etc/nginx/conf.d/ 目录。

sudo nano /etc/nginx/conf.d/akaunting.conf

将以下文本放入文件中。 代替 accounting.yourdomain.com 使用您真正的 Akaunting 子域。 不要忘记在域注册商的 DNS 管理器中为域名设置 DNS A 记录。

server {     listen      80;     listen [::]:80;     server_name accounting.yourdomain.com;      root /var/www/akaunting/;     index index.php index.html index.htm;     charset utf-8;     error_log /var/log/nginx/akaunting.error;     access_log /var/log/nginx/akaunting.access;      add_header X-Frame-Options "SAMEORIGIN";     add_header X-XSS-Protection "1; mode=block";     add_header X-Content-Type-Options "nosniff";      location / {         try_files $uri $uri/ /index.php?$query_string;     }      # Prevent Direct Access To Protected Files     location ~ .(env|log) {         deny all;     }      # Prevent Direct Access To Protected Folders     location ~ ^/(^app$|bootstrap|config|database|resources|routes|storage|tests|artisan) {         deny all;     }       # Prevent Direct Access To modules/vendor Folders Except Assets     location ~ ^/(modules|vendor)/(.*).((?!ico|gif|jpg|jpeg|png|js|css|less|sass|font|woff|woff2|eot|ttf|svg).)*$ {         deny all;     }          error_page 404 /index.php;      location ~ .php$ {         fastcgi_split_path_info ^(.+.php)(/.+)$;         fastcgi_pass unix:/run/php/php7.4-fpm.sock;         fastcgi_index index.php;         include fastcgi_params;         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;     }      location ~ /.(?!well-known).* {         deny all;     }  } 

Save 和 close 文件。 然后测试 Nginx 配置。

sudo nginx -t

如果测试成功,请重新加载 Nginx 以使更改生效。

sudo systemctl reload nginx

现在访问 accounting.yourdomain.com 您将被重定向到设置向导页面(accounting.yourdomain.com/setup)。 在设置向导中输入任何信息之前,我们需要启用 HTTPS。

步骤 5:启用 HTTPS

为了加密 HTTP 流量,我们可以通过安装 Let’s Encrypt 颁发的免费 TLS 证书来启用 HTTPS。 运行以下命令在 Ubuntu 20.04 服务器上安装 Let’s Encrypt 客户端(certbot)。

sudo apt install certbot

如果你使用 Apache,你还需要安装Certbot Apache 插入。

sudo apt install python3-certbot-apache

并运行此命令以获取并安装 TLS 证书。

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d accounting.yourdomain.com

如果你使用 nginx, 安装 Certbot Nginx 插件。

sudo apt install python3-certbot-nginx

接下来,运行以下命令获取并安装 TLS 证书。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d accounting.yourdomain.com

在哪里

  • --nginx: 使用nginx插件。
  • --apache: 使用 Apache 插入。
  • --agree-tos: 同意服务条款。
  • --redirect: 通过 301 重定向强制 HTTPS。
  • --hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应。 强制浏览器始终对域使用 TLS。 防御 SSL/TLS 剥离攻击。
  • --staple-ocsp:启用 OCSP 装订。 有效的 OCSP 响应被装订到服务器在 TLS 期间提供的证书。

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