Mini httpd with Haserl and Lua: Difference between revisions
No edit summary |
(use cat template & remove sudo dependency) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:mini_httpd with Haserl and Lua}} | {{DISPLAYTITLE:mini_httpd with Haserl and Lua}} | ||
[ | [https://acme.com/software/mini_httpd/ 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. | ||
[ | [https://haserl.sourceforge.net/ 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. | ||
[https://www.lua.org Lua] is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description. | [https://www.lua.org Lua] is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description. | ||
Line 14: | Line 14: | ||
You need to modify mini_httpd.conf (to add cgipat) | You need to modify mini_httpd.conf (to add cgipat) | ||
{{ | {{Cat|/etc/mini_httpd/mini_httpd.conf|## do not leave empty lines in here! | ||
#host{{=}}www.example.org | |||
## do not leave empty lines in here! | port{{=}}80 | ||
#host=www.example.org | user{{=}}minihttpd | ||
port=80 | dir{{=}}/www | ||
user=minihttpd | cgipat{{=}}**.sh|**.cgi|**.lua | ||
dir=/www | |||
cgipat=**.sh|**.cgi|**.lua | |||
nochroot | nochroot | ||
}} | |||
mini_httpd service should be restarted because we have changed it's configuration | mini_httpd service should be restarted because we have changed it's configuration | ||
Line 29: | Line 27: | ||
Creating sample Lua script | Creating sample Lua script | ||
{{ | {{Cat|/www/test.lua|#!/usr/bin/haserl --shell{{=}}lua | ||
#!/usr/bin/haserl --shell=lua | |||
Content-type: text/html | Content-type: text/html | ||
<html> | <html> | ||
<body> | <body> | ||
<table border=1><tr> | <table border{{=}}1><tr> | ||
<% | <% | ||
t = {'Red', 'Blue', 'Yellow', 'Cyan'} | t {{=}} {'Red', 'Blue', 'Yellow', 'Cyan'} | ||
for k,v in ipairs(t) do | for k,v in ipairs(t) do | ||
io.write('<td bgcolor="'..v..'">'..v..'</td>') | io.write('<td bgcolor{{=}}"'..v..'">'..v..'</td>') | ||
end | end | ||
%> | %> | ||
Line 46: | Line 42: | ||
</body> | </body> | ||
</html> | </html> | ||
}} | |||
Setting execution permission | Setting execution permission | ||
Line 56: | Line 52: | ||
{{cmd|/www/test.lua}} | {{cmd|/www/test.lua}} | ||
{{cmd|<nowiki>/usr/bin/haserl --shell=lua /www/test.lua</nowiki>}} | {{cmd|<nowiki>/usr/bin/haserl --shell=lua /www/test.lua</nowiki>}} | ||
{{cmd| | {{cmd|su - minihttpd | ||
/usr/bin/haserl /www/test.lua}} | |||
{{cmd|<nowiki>apk add curl | {{cmd|<nowiki>apk add curl | ||
curl http://localhost/test.lua</nowiki>}} | curl http://localhost/test.lua</nowiki>}} |
Latest revision as of 14:10, 25 August 2023
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)
Contents of /etc/mini_httpd/mini_httpd.conf
mini_httpd service should be restarted because we have changed it's configuration
rc-service mini_httpd restart
Creating sample Lua script
Contents of /www/test.lua
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
su - minihttpd /usr/bin/haserl /www/test.lua
apk add curl curl http://localhost/test.lua