Docs
指南配置

Web 服务器

HWD POS 的 Apache 与 Nginx 配置、public/ 网站根目录、修改端口以及 HTTPS。

安装程序会为您配置 Web 服务器:如果已安装 Apache 或 Nginx 则直接使用,如果都没有则安装 Apache。本页说明安装程序所做的配置,适用于手动安装(例如在控制面板上)或需要调整某些设置的情况。

要求

  • Apache 2.4 或 Nginx 1.18+。
  • PHP-FPM 8.2 或更高版本,通过其套接字访问。
  • 网站根目录(document root)指向 public/ 目录。
  • 所有不对应实际文件的请求都转发到 public/index.php(前端控制器)。

为什么是 public/ 而不是项目根目录

项目目录中包含含有数据库密码的配置、备份和源代码。网站根目录设为 public/ 后,即使有人猜到文件名,也无法从互联网访问其中任何内容。

作为额外一层保护,配置中还显式阻止以 .env、.sql、.md、.sh 和 .lock 结尾的文件。

切勿将网站根目录指向项目根目录(/var/www/HWDPOS)。请始终使用 /var/www/HWDPOS/public。

参考配置

请将项目路径和 PHP-FPM 套接字替换为您自己的值。当存在 deploy/ 目录时,项目中也提供了这些文件:deploy/nginx-hwpos.conf 和 deploy/apache-hwpos.conf。

server {
    listen 80;
    server_name _;                      # or your domain: pos.mystore.com
    root /var/www/HWDPOS/public;        # the project's public/ folder
    index index.php;
    client_max_body_size 32M;

    # Front controller: everything goes through public/index.php.
    location / { try_files $uri $uri/ /index.php?$query_string; }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;   # your PHP-FPM socket
        fastcgi_read_timeout 120;
    }

    # Block credentials, backups and source code (never serve them).
    location ~* \.(env|sql|md|sh|lock)$ { deny all; }
    location ~ /(storage|database|scripts|app|config)/ { deny all; }
    location ~ /\.(?!well-known) { deny all; }
}

在使用 Nginx 的控制面板(aaPanel / 宝塔)上,只需要以下这条伪静态(rewrite)规则:

location / { try_files $uri $uri/ /index.php?$query_string; }

可写目录

系统会写入 storage/(配置、许可证、备份、日志)和 public/uploads/。两者都必须归属于 Web 服务器用户:Ubuntu/Debian 上为 www-data,AlmaLinux 上为 apache,aaPanel/宝塔上通常为 www。

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

在 AlmaLinux 上,SELinux 也必须允许写入;请重新运行 install-almalinux.sh,而不要手动修复。参见 AlmaLinux。

修改端口

安装程序会询问端口(默认 80),并同时修改四处:VirtualHost(或 Nginx 的 listen)、服务器的 Listen 指令(最常被遗漏的一处,遗漏后网站将不会监听)、防火墙以及最终摘要中的访问地址。

安装后修改端口最简单的方法是带上 WEB_PORT= 重新运行安装程序。重新运行是安全的,不会删除数据。

手动修改的方法:

sudo sed -i 's/<VirtualHost \*:80>/<VirtualHost *:8080>/' /etc/apache2/sites-available/hwpos.conf
sudo sed -i 's/^Listen 80$/Listen 8080/'                  /etc/apache2/ports.conf
sudo apache2ctl configtest && sudo systemctl restart apache2
sudo ufw allow 8080/tcp

端口 22(SSH)、3306(MariaDB)和 8108(搜索)已被系统占用,不得用于网站。

终端和平板必须使用包含端口的地址(例如 http://192.168.1.50:8080/)。HWD POS 本身无需任何修改:其内部链接均为相对路径。

HTTPS

不需要将服务器发布到互联网:所有功能在局域网内即可运行。如果希望从门店外部访问,请添加 HTTPS(例如使用 Let's Encrypt)。安装程序不会配置 HTTPS;请在您的 Web 服务器或反向代理上自行配置。

本页目录