Atlantic.Net Blog

How to Set Up Lighttpd Web Server on Ubuntu 18.04

Hitesh Jethva
by Atlantic.Net (43posts) under VPS Hosting
0 Comments

Lighttpd is a free, open-source, and high-performance web server designed for speed-critical environments. It is lightweight, secure, fast, and consumes very few resources compared to other web servers.  Lighttpd also supports FastCGI, CGI, Output-Compression, Auth and URL-Rewriting, which makes it the perfect web server. Lighttpd can handle up to 10000 connections in parallel on a single server.

If you are looking for a fast, efficient, and secure web server, then Lighttpd is the best choice for you.

In this tutorial, we will explain how to install Lighttpd web server with PHP and PHP-FPM support on Ubuntu 18.04.

Prerequisites

  • A fresh Ubuntu 18.04 VPS on the Atlantic.Net Cloud Platform.
  • A static IP address configured on your server.

Step 1 – Create an Atlantic.Net Cloud Server

First, log in to your Atlantic.Net Cloud Server.  Create a new server, choosing Ubuntu 18.04 as the operating system with at least 2GB RAM. Connect to your Cloud Server via SSH and log in using the credentials highlighted at the top of the page.

Once you are logged into your Ubuntu 18.04 server, run the following command to update your base system with the latest available packages.

apt-get update -y

Step 2 – Installing Lighttpd

By default, Lighttpd is available in the Ubuntu 18.04 default repository. You can install it by just running the following command:

apt-get install lighttpd -y

Once the installation is completed, check the status of Lighttpd with the following command:

systemctl status lighttpd

If everything goes fine, you should get the following output:

● lighttpd.service - Lighttpd Daemon
   Loaded: loaded (/lib/systemd/system/lighttpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-05-25 09:18:47 UTC; 20s ago
 Main PID: 1860 (lighttpd)
    Tasks: 1 (limit: 1114)
   CGroup: /system.slice/lighttpd.service
           └─1860 /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

May 25 09:18:47 ubuntu1804 systemd[1]: Starting Lighttpd Daemon...
May 25 09:18:47 ubuntu1804 systemd[1]: Started Lighttpd Daemon.

You can check the version of the Lighttpd installed on your server with the following command:

lighttpd -version

You should see the following output:

lighttpd/1.4.45 (ssl) - a light and fast webserver
Build-Date: Feb  6 2018 12:41:51

You can also check Lighttpd by visiting the URL http://your-server-ip on your web browser. You should see the Lighttpd default page per the following screen:

The main configuration file for Lighttpd is located at /etc/lighttpd/lighttpd.conf.

cat /etc/lighttpd/lighttpd.conf

Output:

server.modules = (
            "mod_access",
            "mod_alias",
            "mod_compress",
            "mod_redirect",
)

server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80

index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
## Use ipv6 if available
#include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

This is the main configuration file from where you can change default document root, port, and index file, and enable/disable any modules per your requirements.

You can also see all the configuration files using the tree command. First, install the tree package with the following command:

apt-get install tree -y

Once installed, you can see all the configuration files as shown below:

tree /etc/lighttpd/

You should see the following output:

/etc/lighttpd/
├── conf-available
│   ├── 05-auth.conf
│   ├── 10-accesslog.conf
│   ├── 10-cgi.conf
│   ├── 10-dir-listing.conf
│   ├── 10-evasive.conf
│   ├── 10-evhost.conf
│   ├── 10-expire.conf
│   ├── 10-fastcgi.conf
│   ├── 10-flv-streaming.conf
│   ├── 10-no-www.conf
│   ├── 10-proxy.conf
│   ├── 10-rewrite.conf
│   ├── 10-rrdtool.conf
│   ├── 10-simple-vhost.conf
│   ├── 10-ssi.conf
│   ├── 10-ssl.conf
│   ├── 10-status.conf
│   ├── 10-userdir.conf
│   ├── 10-usertrack.conf
│   ├── 11-extforward.conf
│   ├── 15-fastcgi-php.conf
│   ├── 90-debian-doc.conf
│   └── README
├── conf-enabled
└── lighttpd.conf

Once you have finished, you can proceed to the next step.

Step 3 – Enable PHP and PHP-FPM Support

By default, Lighttpd does not support PHP. You will need to install PHP with PHP-FPM to work with Lighttpd. PHP-FPM stands for “FastCGI Process Manager” and is an alternative PHP FastCGI implementation with some additional features that can be used for sites of any size.

You can install them by simply running the following command:

apt-get install php php-cgi php-fpm -y

Once the installation is completed,  the Apache web server also installed automatically along with PHP. So, you will need to remove the Apache package from your system.

First, stop the Apache service with the following command:

systemctl stop apache2
systemctl disable apache2

Next, remove the Apache package with the following command:

apt-get remove apache2  -y

Next, you will need to configure PHP-FPM to run a FastCGI server on port 9000. By default, PHP listens on the UNIX socket /run/php/php7.2-fpm.sock. Edit the file /etc/php/7.2/fpm/pool.d/www.conf as shown below:

nano /etc/php/7.2/fpm/pool.d/www.conf

Find the following line:

listen = /run/php/php7.2-fpm.sock

And replace it with the following line:

listen = 127.0.0.1:9000

Save the file then restart PHP-FPM service to apply the changes:

systemctl restart php7.2-fpm

Next, you will also need to configure PHP to work with Lighttpd. You can do it by editing the php.ini file:

nano /etc/php/7.2/fpm/php.ini

Find and uncomment the following line:

cgi.fix_pathinfo=1

Save the file when you are finished.

Next, configure PHP-FPM to run a FastCGI server on port 9000. You can do this by editing the file 15-fastcgi-php.conf:

nano /etc/lighttpd/conf-available/15-fastcgi-php.conf

Find the following lines:

"bin-path" => "/usr/bin/php-cgi",
"socket" => "/var/run/lighttpd/php.socket",

Replace them with the following lines:

"host" => "127.0.0.1",
"port" => "9000",

Save the file. Then, enable FastCGI and FastCGI-PHP modules using the following command:

lighty-enable-mod fastcgi
lighty-enable-mod fastcgi-php

Next, reload the Lighttpd service the enable the changes:

service lighttpd force-reload

Step 4 – Testing Lighttpd

At this point, Lighttpd is configured to work with PHP and PHP-FPM. It’s time to test it.

First, create a sample info.php file in the Lighttpd default document root directory:

nano /var/www/html/info.php

Add the following lines:

<?php

phpinfo();

?>

Save and close the file. Then, change the ownership of the info.php file to www-data:

chown www-data:www-data /var/www/html/info.php

Now, open your web browser and visit the URL http://your-server-ip/info.php. You will be redirected to the following page:

That means PHP is working well with Lighttpd.

Note : Don’t forget to remove the file /var/www/html/info.php after testing.

rm -rf /var/www/html/info.php

Conclusion

Congratulations! You have successfully installed and configured Lighttpd on an Ubuntu 18.04 server. I hope you have now enough knowledge to deploy PHP applications with Lighttpd and PHP-FPM. Get started with Lighttpd today with a VPS hosting plan from Atlantic.Net.

Get A Free To Use Cloud VPS

Free Tier Includes:
G2.1GB Cloud VPS Free to Use for One Year
50 GB of Block Storage Free to Use for One Year
50 GB of Snapshots Free to Use for One Year


Looking for a Hosting Solution?

We Provide Cloud, Dedicated, & Colocation.

  • Seven Global Data Center Locations.
  • Flexible Private, Public, & Hybrid Hosting.
  • 24x7x365 Security, Support, & Monitoring.
Contact Sales Today! Med Tech Award FTC
SOC Audit HIPAA Audit HITECH Audit

Case Studies

White Papers

Resources


HIPAA Partners


Recent Posts

Get started with 12 months of free cloud VPS hosting

Free Tier includes:
G2.1GB Cloud VPS Server Free to Use for One Year
50 GB of Block Storage Free to Use for One Year
50 GB of Snapshots Free to Use for One Year


New York, NY

100 Delawanna Ave, Suite 1

Clifton, NJ 07014

United States

San Francisco, CA

2820 Northwestern Pkwy,

Santa Clara, CA 95051

United States

Dallas, TX

2323 Bryan Street,

Dallas, Texas 75201

United States

Ashburn, VA

1807 Michael Faraday Ct,

Reston, VA 20190

United States

Orlando, FL

440 W Kennedy Blvd, Suite 3

Orlando, FL 32810

United States

Toronto, Canada

20 Pullman Ct, Scarborough,

Ontario M1X 1E4

Canada

London, UK

14 Liverpool Road, Slough,

Berkshire SL1 4QZ

United Kingdom

Resources