Lighttpd: Difference between revisions

From Alpine Linux
(it's time for a real wiki page about lighttpd.. made by mckaygerhard.. adde all need for normal users.. links and explanations)
Line 1: Line 1:
[http://www.lighttpd.net/ lighttpd] is a simple, standards-compliant, secure, and flexible web server.


==General information==
Its name is a portmanteau of "light" and "httpd": [http://www.lighttpd.net/ lighttpd] is a simple, standards-compliant, secure, and flexible web server.


* Configuration file: {{Path|/etc/lighttpd/lighttpd.conf}}
'''It was the most powered server, make in old days to how to handle 10,000 connections in parallel on one server'''. Was used in wikipedia server a log time ago and also some google services.
* Standard directory for files: {{Path|/var/www/localhost/htdocs/}}


== Installation ==
{{Note|As for minimal sites and fast learn purposes are very recommended due it easy configuration process and perfect performance without much configuration.}}
{{Pkg|lighttpd}} is available in the Alpine Linux repositories. To install, simple launch the command below:


{{Cmd|apk add lighttpd}}
== General information ==


== Configuration ==
{{Pkg|lighttpd}} are not so use due common hosting panels does not handle it's configurations management.. in contrash {{Pkg|lighttpd}} are multi treated respect {{Pkg|nginx}} and perfectly support FastCGI process.
If you just want to serve simple HTML pages lighttpd can be used out-of-box. No further configuration needed.


== Controlling Lighttpd ==
{| class="wikitable"
|-
! Feature/Artifac !! Value/Name !! Observations
|-
| Main package name || lighttpd || <code><nowiki>apk add lighttpd</nowiki></code>
|-
| Manpages and DOCs packages || lighttpd-doc || <code><nowiki>apk add lighttpd-doc</nowiki></code>
|-
| Configuration file || {{Path|/etc/lighttpd/lighttpd.conf}} || It's not close to alpine, just vanilla provived!
|-
| Html place for system pages || {{Path|/var/www/localhost/htdocs/}} || Each web server in alpine has own path for that
|-
| Dynamic files (cache, extra) || {{Path|/var/lib/lighttpd/}} || Created dynamically, each server in alpine has own path for that
|-
| Log files (error, access, etc) || {{Path|/var/log/lighttpd/}} || Each web server in alpine has own path for that
|-
| User running the webserver || lighttpd || Others Linux used "www-data" alpine has as a group
|-
| Group to common to webserver || www-data || Used to share things amont others daemons or services, like redis or apache files
|-
| Programed on || C and lua || Main engine code in C, modules and config in Lua variants
|}


==== Important Limitations ====


=== Start lighttpd ===
'''No HTTP/2 or HTTP/3 support, also ''not recommended for large files''.'''
After the installation lighttpd is not running. To start lightttpd, use ''start''.
 
As we read previously.. main purpose was handle several request on one server, so are focused on high load.
 
As main front end web server are perfect and it's '''recommended as reverse proxy server for {{Pkg|apache2}} or {{Pkg|nginx}}'''.
 
== Install Lighttpd ==
 
The installation works just out of the box for only static pages, just with install you can see webserver in action by put any file inside the  {{Path|/var/www/localhost/htdocs/}} directory.
 
Per user web files are supported by default in  {{Path|/home/<user>/public_html}} directory by default if we enable it (process are described below in further section "Lighttpd configuration".
 
{{Pkg|lighttpd}} is available in the Alpine Linux repositories. To install, simple launch the commands below:
 
<pre>
<nowiki>
apk add lighttpd
 
rc-update add lighttpd default
 
rc-service lighttpd restart
</nowiki>
</pre>
 
== Testing Lighttpd ==
 
This section is assuming that lighttpd is running. If you now launch a web browser from a remote system and point it to your web server, you will see a page that says "404 - Not Found". Well, at the moment there is no content available but the server is up and running.
 
Let's add a simple test page to get rid of the "404 - Not Found page".
 
{{Cmd|echo "Lighttpd is running..." > /var/www/localhost/htdocs/index.html}}
 
'''For testing open a browser and go to <code><nowiki>http://127.0.0.1/</nowiki></code> and you will see "Lighttpd is running..."'''. Note that we used "127.0.0.1" if you are using alpine as the only machine for all as your main desktop/pc/machine.
 
If you are using alpine remotelly as web server and just install it the package, '''open a browser in your desktop machine, and go to <code><nowiki>http://<webserveripaddres>/</nowiki></code>. The "webserveripaddres" are the ip address of your setup/server machine.
 
== Lighttpd Configuration ==
 
'''If you just want to serve simple HTML pages lighttpd can be used out-of-box. No further configuration needed.'''
 
For production purposes the [[Production LAMP system: Lighttpd + PHP + MySQL]] wiki page will explain in details all the needs, there's the [[Production Lets Encrypt: dehydrated]] wiki page with futher information to use HTTPS and lets encrypt certificates.
 
Due to the minimalism of alpine linux, '''unfortunately the lighttpd packaging only provided vanilla configurations not close to alpine or easy admin maintenance''', see the [[Production LAMP system: Lighttpd + PHP + MySQL]] wiki page to goin in deep about configuring lighttpd web server.
 
==== Controlling Lighttpd ====
 
'''''Start lighttpd''''': After the installation {{Pkg|lighttpd}} is not running. As we made in first section was started already but if you want to start {{Pkg|lighttpd}} manually use:


{{Cmd|rc-service lighttpd start}}
{{Cmd|rc-service lighttpd start}}
Line 29: Line 92:
</pre>
</pre>


=== Stop lighttpd ===
'''''Stop lighttpd''''': If you want to stop the web server use ''stop'' in the same way of previous command:
If you want to stop the web server use ''stop''.


{{Cmd|rc-service lighttpd stop}}
{{Cmd|rc-service lighttpd stop}}


=== Restart lighttpd ===
'''''Restart lighttpd''''': After changing the configuration file lighttpd needs to be restarted.
After changing the configuration file lighttpd needs to be restarted.


{{Cmd|rc-service lighttpd restart}}
{{Cmd|rc-service lighttpd restart}}


=== Runlevel ===
'''''Proper Runlevel''''': By default no services are added to start process, sysadmin must know what we want and what will services do, also other main reason are due in dockers there's no runlevels per se and Alpine linux are mostly used in dockers containers. You must added the servide only to the default runlevel, not to boot, because need networking activated
Normally you want to start the web server when the system is launching. This is done by adding lighttpd to the needed runlevel.


{{Cmd|rc-update add lighttpd default}}
{{Cmd|rc-update add lighttpd default}}


== Testing Lighttpd ==
= See Also =
This section is assuming that lighttpd is running. If you now launch a web browser from a remote system and point it to your web server, you will see a page that says "404 - Not Found". Well, at the moment there is no content available but the server is up and running.


Let's add a simple test page to get rid of the "404 - Not Found page".
In production web, LAMP means '''L'''inux + '''A'''pache + '''M'''ysql + '''P'''hp installed and integrated, but today the "A" of apache are more used as Nginx or Lighttpd, and the "M" of MySQL are more used as Mariadb, the LAMP focused documents are:
 
{{Cmd|echo "Lighttpd is running..." > /var/www/localhost/htdocs/index.html}}
 
Now you will get the new "test page" if you reload.
 
== Advanced configurations ==


* [[Setting_Up_Lighttpd_with_PHP|Setting Up Lighttpd with PHP]]
* [[Lighttpd Advanced security]]  
* [[Lighttpd Advanced security]]  
* [[Setting_Up_Lighttpd_with_PHP|Setting Up Lighttpd with PHP]]  
* [[Production Lets Encrypt: dehydrated]]
* [[Setting_Up_Lighttpd_With_FastCGI|Setting Up Lighttpd With FastCGI]]
* LAMP deploy of the Web Server with PHP, user html_dir and MariaDB: [[Production LAMP system: Lighttpd + PHP + MySQL]]
* LAMP deploy of the Web Server with PHP 5.6 and MariaDB: [[Production LAMP system: Lighttpd + PHP5 + MySQL]]
* [[Alpine newbie developer]]
* [[Alpine newbie lammers]]


[[Category:Newbie]]
[[Category:Server]]
[[Category:Server]]
[[Category:Web_Server]]
[[Category:Development]]

Revision as of 15:07, 6 April 2020

Its name is a portmanteau of "light" and "httpd": lighttpd is a simple, standards-compliant, secure, and flexible web server.

It was the most powered server, make in old days to how to handle 10,000 connections in parallel on one server. Was used in wikipedia server a log time ago and also some google services.

Note: As for minimal sites and fast learn purposes are very recommended due it easy configuration process and perfect performance without much configuration.

General information

lighttpd are not so use due common hosting panels does not handle it's configurations management.. in contrash lighttpd are multi treated respect nginx and perfectly support FastCGI process.

Feature/Artifac Value/Name Observations
Main package name lighttpd apk add lighttpd
Manpages and DOCs packages lighttpd-doc apk add lighttpd-doc
Configuration file /etc/lighttpd/lighttpd.conf It's not close to alpine, just vanilla provived!
Html place for system pages /var/www/localhost/htdocs/ Each web server in alpine has own path for that
Dynamic files (cache, extra) /var/lib/lighttpd/ Created dynamically, each server in alpine has own path for that
Log files (error, access, etc) /var/log/lighttpd/ Each web server in alpine has own path for that
User running the webserver lighttpd Others Linux used "www-data" alpine has as a group
Group to common to webserver www-data Used to share things amont others daemons or services, like redis or apache files
Programed on C and lua Main engine code in C, modules and config in Lua variants

Important Limitations

No HTTP/2 or HTTP/3 support, also not recommended for large files.

As we read previously.. main purpose was handle several request on one server, so are focused on high load.

As main front end web server are perfect and it's recommended as reverse proxy server for apache2 or nginx.

Install Lighttpd

The installation works just out of the box for only static pages, just with install you can see webserver in action by put any file inside the /var/www/localhost/htdocs/ directory.

Per user web files are supported by default in /home/<user>/public_html directory by default if we enable it (process are described below in further section "Lighttpd configuration".

lighttpd is available in the Alpine Linux repositories. To install, simple launch the commands below:


apk add lighttpd

rc-update add lighttpd default

rc-service lighttpd restart

Testing Lighttpd

This section is assuming that lighttpd is running. If you now launch a web browser from a remote system and point it to your web server, you will see a page that says "404 - Not Found". Well, at the moment there is no content available but the server is up and running.

Let's add a simple test page to get rid of the "404 - Not Found page".

echo "Lighttpd is running..." > /var/www/localhost/htdocs/index.html

For testing open a browser and go to http://127.0.0.1/ and you will see "Lighttpd is running...". Note that we used "127.0.0.1" if you are using alpine as the only machine for all as your main desktop/pc/machine.

If you are using alpine remotelly as web server and just install it the package, open a browser in your desktop machine, and go to http://<webserveripaddres>/. The "webserveripaddres" are the ip address of your setup/server machine.

Lighttpd Configuration

If you just want to serve simple HTML pages lighttpd can be used out-of-box. No further configuration needed.

For production purposes the Production LAMP system: Lighttpd + PHP + MySQL wiki page will explain in details all the needs, there's the Production Lets Encrypt: dehydrated wiki page with futher information to use HTTPS and lets encrypt certificates.

Due to the minimalism of alpine linux, unfortunately the lighttpd packaging only provided vanilla configurations not close to alpine or easy admin maintenance, see the Production LAMP system: Lighttpd + PHP + MySQL wiki page to goin in deep about configuring lighttpd web server.

Controlling Lighttpd

Start lighttpd: After the installation lighttpd is not running. As we made in first section was started already but if you want to start lighttpd manually use:

rc-service lighttpd start

You will get a feedback about the status.

 * Caching service dependencies                                 [ ok ]
 * Starting lighttpd...                                         [ ok ]

Stop lighttpd: If you want to stop the web server use stop in the same way of previous command:

rc-service lighttpd stop

Restart lighttpd: After changing the configuration file lighttpd needs to be restarted.

rc-service lighttpd restart

Proper Runlevel: By default no services are added to start process, sysadmin must know what we want and what will services do, also other main reason are due in dockers there's no runlevels per se and Alpine linux are mostly used in dockers containers. You must added the servide only to the default runlevel, not to boot, because need networking activated

rc-update add lighttpd default

See Also

In production web, LAMP means Linux + Apache + Mysql + Php installed and integrated, but today the "A" of apache are more used as Nginx or Lighttpd, and the "M" of MySQL are more used as Mariadb, the LAMP focused documents are: