The way I print everything is like this:
Printers setup locally to a Mac Mini that acts as a print server.
PHP script running on Mac Mini that calls a simple shell script to send a file/data to a printer.
Mac Mini access accessable from the outside world, on static ip.
My remote web server hosts the backend order system, and user interface. Actions on there can trigger something to print by sending a HTTP request via cURL with the file/data to be printed, and which printer to print on.