mini_httpd with Haserl and Lua

From Alpine Linux
Revision as of 21:39, 26 July 2023 by Zcrayfish (talk | contribs) (Changed hyperlink to https)

mini_httpd is a small HTTP server. Its performance is not great, but for low or medium traffic sites it's quite adequate. It implements all the basic features of an HTTP server.

Haserl is a small program that uses shell or Lua script to create cgi web scripts. It is intended for environments where PHP or ruby are too big.

Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

mini_httpd setup

For setting up mini_httpd please see article mini_httpd

Haserl and Lua setup

Haserl and Lua packages are available in the Alpine Linux repositories. To install them run:

apk add haserl lua

You need to modify mini_httpd.conf (to add cgipat)

vi /etc/mini_httpd/mini_httpd.conf

## do not leave empty lines in here!
#host=www.example.org
port=80
user=minihttpd
dir=/www
cgipat=**.sh|**.cgi|**.lua
nochroot

mini_httpd service should be restarted because we have changed it's configuration

rc-service mini_httpd restart

Creating sample Lua script

vi /www/test.lua

#!/usr/bin/haserl --shell=lua
Content-type: text/html

<html>
<body>
<table border=1><tr>
<% 
	t = {'Red', 'Blue', 'Yellow', 'Cyan'}
	for k,v in ipairs(t) do
		io.write('<td bgcolor="'..v..'">'..v..'</td>')
	end
%>
</tr></table>
</body>
</html>

Setting execution permission

chmod +x /www/*.lua

Troubleshooting

For troubleshooting you can try running commands:

lua /www/test.lua

/www/test.lua

/usr/bin/haserl --shell=lua /www/test.lua

apk add sudo sudo -u minihttpd /usr/bin/haserl /www/test.lua

apk add curl curl http://localhost/test.lua