网络安装
用一条命令下载并配置好 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 bashHWPOS_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。