Docs
指南安装

网络安装

用一条命令下载并配置好 HWD POS 所需的一切。

网络安装是安装 HWD POS 的推荐方式。它总是获取最新版本的安装脚本和系统,一条命令即可完成全部工作:安装 Web 服务器、PHP、数据库、打印、两个后台服务、防火墙规则以及 hwdpanel 服务器面板。

耗时在网络良好的全新服务器上约 10–20 分钟
你需要一台全新服务器、root(或 sudo)权限、互联网访问和激活密钥
结果系统开始运行,可从网络中的任何电脑通过浏览器打开

开始之前,请先检查系统要求。

安装命令

通过 SSH 或在服务器控制台上运行:

curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo bash

就这么简单。该脚本会:

检测系统家族(apt → Ubuntu/Debian,dnf → AlmaLinux/Rocky/RHEL),并下载对应的安装程序。

在安装任何东西之前,询问所需的信息(见下一节)。

下载并安装系统及其所有依赖。

显示 ✓ / ✗ 摘要,以及在浏览器中完成设置的地址。

系统软件包(.zip)不包含安装脚本。安装程序会从 https://3r.com.pa/hwdpos_inst/ 下载其辅助脚本(install-workers.sh、hwdpanel.sh 和 check.sh),并将它们连同自身一起放在 /var/www/HWDPOS/deploy/ 中。该文件夹属于 root,Web 服务器无法修改它,hwdpanel 和之后的修复操作都会在这里查找这些脚本。

安装程序的提问

所有问题都有意在开始时一次问完,避免在下载过程中被打断。正常安装时,直接接受三个默认值即可。

1. 安装模式

Modo de instalación:
   1) Todo en uno  — servidor web + base de datos en ESTE servidor  (predeterminado)
   2) Solo web     — servidor web + PHP; la base de datos está en OTRO servidor
   3) Solo base de datos — únicamente MariaDB abierto a la red (sin web ni PHP)
Opción [1/2/3]:
选项适用场景
1) Todo en uno(一体化)常规选择。 门店使用一台服务器。这是默认值:直接按 Enter。
2) Solo web(仅 Web)数据库已位于另一台机器上(或者你希望为了性能而将二者分开)。会要求输入数据库服务器的 IP。
3) Solo base de datos(仅数据库)你正在准备数据库服务器。会要求输入允许访问的 Web 服务器 IP。

模式 2 和 3 详见独立数据库服务器。

2. 网站端口

Puerto [80]:

按 Enter 使用 80 端口。如需其他端口,请参见站点端口。

3. 服务器时区

仅当服务器尚未使用巴拿马时间时才会询问:

Zona horaria del servidor: UTC. El sistema trabaja con la hora de Panamá (America/Panama).
¿Poner la zona horaria del servidor en America/Panama? [S/n]:

按 Enter 接受。如果使用其他时区,服务器时钟、日志时间戳和数据库时间将与系统时间不一致。在独立的数据库服务器上也应接受。

4. 没有其他问题

安装程序会自行生成数据库密码,并保存在 deploy/DB-CREDENTIALS.txt 中(仅 root 可读)。如果服务器上已有密码(例如再次运行安装程序时),会保留原密码。参见升级与重新安装。

无人值守运行

没有交互式终端时(cron、cloud-init、ssh server 'command')不会提出任何问题:模式为“一体化”,端口为 80,时区不做更改(摘要中标记为 ✗ 并显示更改时区的命令),其余一切通过变量设置。如果存在终端但无法打开,则按没有终端处理。

最终摘要

安装完成后,你会看到类似下面的内容(在 AlmaLinux 上会额外多出三行 SELinux 检查):

==================== RESUMEN DE INSTALACIÓN (all) ====================
  ✓ Apache (activo)
  ✓ PHP 8.3-FPM (activo)
  ✓ PHP: pdo_mysql
  ✓ PHP: mbstring
  ✓ PHP: curl
  ✓ PHP: zip
  ✓ PHP: gd
  ✓ PHP: opcache
  ✓ PHP: sodium (recomendado; hay polyfill)
  ✓ CUPS (impresión A4/IP)
  ✓ Chrome/Chromium (PDF de documentos A4; se probó ejecutándolo)
  ✓ Worker de impresión (hwpos-print)
  ✓ Worker de impresión (arranque auto)
  ✓ Worker de plugins (hwpos-plugins)
  ✓ Worker de plugins (arranque auto)
  ✓ Zona horaria del servidor: America/Panama
  ✓ MariaDB (activo)
  ✓ Base de datos 'hwd_pos' creada
  ✓ Código del sistema en /var/www/HWDPOS
  ✓ Panel de administración (hwdpanel)
  ✓ Puerto 80 escuchando

  IP interna (LAN):  192.168.1.50
  IP externa (WAN):  203.0.113.10
=======================================================================

Termine la instalación en el navegador (desde cualquier equipo de la red):
   http://192.168.1.50/install

继续之前请先阅读摘要。 每个 ✗ 的含义都在常见问题中有说明。

  • sodium、Chrome/Chromium 或时区显示 ✗,不影响继续。
  • pdo_mysql、MariaDB 或端口显示 ✗,则无法继续。
  • Chrome/Chromium 这一行不只是检查命令是否存在:它会以 Web 服务器用户身份实际运行该命令,因为没有 snapd 时,Snap 版 chromium-browser 虽然存在却无法工作。
  • 最后一行只有在 hwdpanel 确实安装成功时才会提供它;否则会指出缺少哪个文件。

然后打开显示的地址,继续进行安装向导。

命令变体

所有变体的运行方式相同,只是开头的变量不同:

# Different port, without asking
curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo WEB_PORT=8080 bash

# No printing (a server that does not print)
curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo WITH_PRINTING=no bash

# With your own domain name
curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo DOMAIN=pos.mystore.com bash

# Only the ENVIRONMENT (dependencies and services), without the system code
curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo ENV_ONLY=1 bash

# From a specific package already on the server
curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo HWPOS_ZIP=/root/HWDPOS-v1.5.0.zip bash

# No questions (cron, cloud-init, ssh server 'command'), changing the time zone
curl -fsSL https://3r.com.pa/hwdpos_inst/bootstrap.sh | sudo HWPOS_ZIP=/root/HWDPOS-v1.5.0.zip SET_TIMEZONE=yes bash

HWPOS_ZIP 接受服务器上的本地路径或 URL。软件包会解压到 /var/www/HWDPOS,并从分发服务器下载对应系统家族的安装程序(.zip 中不包含安装程序)。.zip 的根文件夹必须是 HWDPOS/,官方软件包即是如此。

在已经安装的系统上,HWPOS_ZIP 会拒绝运行:要更新,请使用 «Sistema → Actualizaciones»(系统 → 更新)。如果确实要替换现有安装,请加上 HWPOS_REPLACE=1;原文件夹会保留为 HWDPOS.anterior-DATE,而不会被删除。

任何失败或取消都会以非零退出码结束,因此自动化流程绝不会把失败的安装误认为成功。

完整的变量列表见安装程序变量。

交互式菜单

不通过管道运行时,同一个脚本会在执行任何操作之前先询问,让你选择只安装环境,还是从 .zip 安装全部内容:

sudo bash /root/hwdpos-inst/bootstrap.sh

没有终端时不会显示菜单:请传入 HWPOS_ZIP=… 或 ENV_ONLY=1(或 MODE=db),否则脚本会报错退出。

站点端口

安装程序会询问端口,如果不另行选择则使用 80。

端口访问方式适用场景
80(默认)http://192.168.1.50/服务器专用于 HWD POS 时。无需输入端口。
其他端口(如 8080)http://192.168.1.50:8080/服务器已在 80 端口上运行其他站点时。

系统已占用的端口会被直接拒绝:22(SSH)、3306(MariaDB)和 8108(搜索引擎)。这比让 Web 服务器无法启动要好。

选择端口后,安装程序会同时修改相互关联的四项内容:VirtualHost(或 Nginx 的 listen)、服务器的 Listen 指令(手动修改时最容易遗漏的一项,遗漏后站点将不会监听)、防火墙以及最终摘要中的地址。

要在安装之后更改端口,最简单的方法是带上 WEB_PORT= 再次运行安装程序。再次运行是安全的,不会删除数据。手动步骤见 Web 服务器。

终端和平板必须指向包含端口的地址。系统本身无需调整:其内部链接都是相对路径。

服务器无互联网时的安装

如果服务器无法从互联网下载,可以通过 USB 或 SCP 复制 .zip 软件包进行安装。参见 Ubuntu 和 Debian(AlmaLinux 使用其专用安装程序,步骤相同)。

即使代码来自 .zip,激活也始终需要互联网。在安装向导的最后一步,服务器必须能够访问 https://3r.com.pa。

本页目录