Docs
GuidesInstallation

AlmaLinux, Rocky and RHEL

Installing HWD POS on AlmaLinux, Rocky Linux, RHEL and CentOS Stream 8/9, and what is different from Ubuntu.

AlmaLinux 9 and 8, Rocky Linux, RHEL and CentOS Stream are fully supported. They use their own installer, install-almalinux.sh, with the same questions, modes and final summary as on Ubuntu.

The network install detects dnf automatically and runs install-almalinux.sh:

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

To install from a .zip package instead, follow the Ubuntu instructions using install-almalinux.sh:

cd /var/www && sudo unzip -q /root/HWDPOS-v1.5.0.zip
sudo APP_DIR=/var/www/HWDPOS bash /root/hwdpos-inst/install-almalinux.sh

Why there is a separate installer

On AlmaLinux it is not just "the same thing with a different package manager". There are five differences, and the third one is what ruins an installation done by hand:

PHP comes as modules. PHP is installed with dnf module enable php:8.2, not as versioned packages. If the system does not offer 8.1 or later, the installer adds the Remi repository.

The service is called httpd (not apache2) and all its configuration lives in a single directory, /etc/httpd/conf.d/. There is no sites-available and no a2ensite.

SELinux is enabled out of the box. Without a write context on storage/ and public/uploads, and without permission to connect to the network, the system installs but cannot write, update itself, send email or validate the license, and no error message mentions SELinux. The installer configures it and verifies it in the summary.

The firewall is firewalld, not ufw.

PHP-FPM runs as the apache user, and the installer creates a dedicated pool (/etc/php-fpm.d/hwpos.conf) on its own socket, so it does not change the pool of any other site on the server.

SELinux

The installer applies the file contexts (semanage + restorecon) so the web server can write to storage/ and public/uploads, and turns on the booleans that let PHP reach the network and the database:

  • httpd_unified
  • httpd_can_network_connect
  • httpd_can_network_connect_db
  • httpd_execmem

The final summary adds three SELinux lines. If they are ✓, you do not need to do anything.

Symptoms of SELinux not configured

Everything looks fine but nothing is saved, updates fail and no email is sent. Confirm it with:

sudo ausearch -m avc -ts recent

The fix is to run install-almalinux.sh again: it reapplies the contexts and booleans without deleting data. Do not disable SELinux.

Firewall and port

The installer opens the site port in firewalld. If you change the port by hand, the files are /etc/httpd/conf.d/hwpos.conf and /etc/httpd/conf.d/hwpos-listen.conf, the service is httpd, and the firewall command is:

sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload

Running the installer again with WEB_PORT= is simpler. See Web server.

Printing on AlmaLinux

The A4 PDF renderer is Chromium from the distribution packages. If A4 documents do not print, install it:

sudo dnf install -y chromium

See Printing.

Diagnostics on AlmaLinux

check.sh works on both families. On AlmaLinux, Rocky, RHEL and CentOS it checks packages with rpm (a single php-fpm package, with pdo_mysql included in php-mysqlnd) and repairs by running install-almalinux.sh, which also puts SELinux and the firewall back in order.

sudo bash /var/www/HWDPOS/deploy/check.sh

If bootstrap.sh stops right away on Rocky/Alma/CentOS, or check.sh marks everything with ✗, you have an older version of the script (it called apt-get or dpkg, which do not exist there). Download it again with the command at the top of this page.

On this page