lighttpd is an open-source web server more optimized for speed-critical environments than common products while remaining standards-compliant, secure and flexible. This tutorial shows how you can install Lighttpd on a CentOS 6 server with PHP (PHP-FPM).
First, update CentOS to latest version, login root and type the following command
# yum update -y
Install some packages need for the following steps
# yum install wget make cpp gcc gcc-c++ -y
Make a folder where you will store lighttpd and php sources
# mkdir -p /opt/source
Installing Lighttpd
You need to download the latest lighttpd source from http://www.lighttpd.net/download into the /opt/source. Type the following command
# cd /opt/source # wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.30.tar.gz
Extract lighttpd-1.4.30.tar.gz package
# tar zxvf lighttpd-1.4.30.tar.gz # cd lighttpd-1.4.30
To build lighttpd, type the following command
# ./configure --prefix=/webserver/lighttpd --disable-ipv6 # make # make install
During ./configure, you might get some errors like the following
... configure: error: pcre-config not found, install the pcre-devel package or build with --without-pcre ...
To solve the problem, type the following command
# yum install pcre pcre-devel
... configure: error: zlib-headers and/or libs where not found, install them or build with --without-zlib ...
To solve the problem, type the following command
# yum install zlib zlib-devel
... configure: error: bzip2-headers and/or libs where not found, install them or build with --without-bzip2 ...
To solve the problem, type the following command
# yum install bzip2 bzip2-devel
Configuring Lighttpd
Access to folder of lighttpd, where lighttpd installed [/webserver/lighttpd] and make dirs
# cd /webserver/lighttpd # mkdir -p etc/init.d # mkdir -p etc/sysconfig # mkdir -p www/htdocs # mkdir -p var/run # mkdir -p var/log # mkdir -p var/lock/subsys # mkdir -p var/cache
Add a user called “lighttpd” and chown all dir made for lighttpd user
# useradd -s /sbin/nologin -d /webserver/lighttpd/www/ lighttpd # chown lighttpd -R etc # chown lighttpd -R var # chown lighttpd -R www
Return back forder /opt/source/lighttpd-1.4.30 to copy configuration files
# cd /opt/source/lighttpd-1.4.30 # cp doc/config/modules.conf /webserver/lighttpd/etc/ # cp -r doc/config/conf.d /webserver/lighttpd/etc/ # cp -r doc/config/vhosts.d/ /webserver/lighttpd/etc/
Create default lighttpd configuration file: /webserver/lighttpd/etc/lighttpd.conf (download sample lighttpd.conf file). Type the following command
# wget http://www.lifelinux.com/wp-content/uploads/2012/04/lighttpd.conf_.txt -O /webserver/lighttpd/etc/lighttpd.conf
If you want to run lighttpd by default when the system boots, create file called lighttpd in /webserver/lighttpd/etc/init.d/
# vi /webserver/lighttpd/etc/init.d/lighttpd
Append following line
#!/bin/sh # # lighttpd Startup script for the lighttpd server # # chkconfig: - 85 15 # description: Lightning fast webserver with light system requirements # # processname: lighttpd # config: /webserver/lighttpd/etc/lighttpd.conf # config: /webserver/lighttpd/etc/sysconfig/lighttpd # pidfile: /webserver/lighttpd/var/run/lighttpd.pid # # Note: pidfile is assumed to be created # by lighttpd (config: server.pid-file). # If not, uncomment 'pidof' line. # Source function library . /etc/rc.d/init.d/functions if [ -f /webserver/lighttpd/etc/sysconfig/lighttpd ]; then . /webserver/lighttpd/etc/sysconfig/lighttpd fi if [ -z "$LIGHTTPD_CONF_PATH" ]; then LIGHTTPD_CONF_PATH="/webserver/lighttpd/etc/lighttpd.conf" fi prog="lighttpd" lighttpd="/webserver/lighttpd/sbin/lighttpd" RETVAL=0 start() { echo -n $"Starting $prog: " daemon $lighttpd -f $LIGHTTPD_CONF_PATH RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /webserver/lighttpd/var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc $lighttpd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /webserver/lighttpd/var/lock/subsys/$prog return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc $lighttpd -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; condrestart) if [ -f /webserver/lighttpd/var/lock/subsys/$prog ]; then stop start fi ;; reload) reload ;; status) status $lighttpd RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}" RETVAL=1 esac exit $RETVAL
Chmod lighttpd with executed permission and create symbolic link in “/etc/init.d”. Type the following command
# chmod +x /webserver/lighttpd/etc/init.d/lighttpd # ln -s /webserver/lighttpd/etc/init.d/lighttpd /etc/init.d/lighttpd
Create file called “lighttpd” in /webserver/lighttpd/etc/sysconfig
# vi /webserver/lighttpd/etc/sysconfig/lighttpd
Append following line
LIGHTTPD_CONF_PATH=/webserver/lighttpd/etc/lighttpd.conf
To start lighttpd for the first time, type the following command
# /etc/init.d/lighttpd start
Install PHP (PHP-FPM)
Download latest version of PHP at http://download.php.net
# cd /opt/source # wget http://www.php.net/get/php-5.3.10.tar.gz/from/ca.php.net/mirror
To Extract its, enter
# tar zxvf php-5.3.10.tar.gz # cd php-5.3.10
To build PHP, I’ll create bash file called build.sh
# vi build.sh
Append following line
#!/bin/sh "./configure" \ "--prefix=/webserver/php" \ "--enable-fpm" \ "--with-libdir=lib64" \ "--with-bz2" \ "--with-config-file-path=/webserver/php/etc" \ "--with-config-file-scan-dir=/webserver/php/etc/php.d" \ "--with-curl=/usr/local/lib" \ "--with-gd" \ "--with-gettext" \ "--with-jpeg-dir=/usr/local/lib" \ "--with-freetype-dir=/usr/local/lib" \ "--with-kerberos" \ "--with-mcrypt" \ "--with-mhash" \ "--with-mysql" \ "--with-mysqli" \ "--with-pcre-regex=/usr" \ "--with-pdo-mysql=shared" \ "--with-pdo-sqlite=shared" \ "--with-pear=/usr/local/lib/php" \ "--with-png-dir=/usr/local/lib" \ "--with-pspell" \ "--with-sqlite=shared" \ "--with-tidy" \ "--with-xmlrpc" \ "--with-xsl" \ "--with-zlib" \ "--with-zlib-dir=/usr/local/lib" \ "--with-openssl" \ "--with-iconv" \ "--enable-bcmath" \ "--enable-calendar" \ "--enable-exif" \ "--enable-ftp" \ "--enable-gd-native-ttf" \ "--enable-libxml" \ "--enable-magic-quotes" \ "--enable-soap" \ "--enable-sockets" \ "--enable-mbstring" \ "--enable-zip" \ "--enable-wddx"
Type the following command to install PHP
# sh build.sh # make # make install
If you have problems building PHP then read the article. Next step, copy php.ini to /webserver/php/etc/, enter
# cp php.ini-production /webserver/php/etc/php.ini
Rename php-fpm.conf, enter
# cd /webserver/php/etc # cp php-fpm.conf.default php-fpm.conf
Open php-fpm.conf, type
# vi php-fpm.conf
Append following line
[global] pid = run/php-fpm.pid error_log = log/php-fpm.log [www] listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 user = nobody group = nobody pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 pm.max_requests = 500
If you want to run PHP-FPM by default when the system boots, create file called php-fpm in /etc/init.d/
# vi /etc/init.d/php-fpm
Append following line
#! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO php_fpm_BIN=/webserver/php/sbin/php-fpm php_fpm_CONF=/webserver/php/etc/php-fpm.conf php_fpm_PID=/webserver/php/var/run/php-fpm.pid php_opts="--fpm-config $php_fpm_CONF" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-exit" exit 1 else echo " done" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload}" exit 1 ;; esac
Chmod php-fpm with executed permission, enter
# chmod +x /etc/init.d/php-fpm
To start PHP-FPM for the first time, type the following command
# /etc/init.d/php-fpm start
Configure PHP-FPM and Lighttpd working together
Uncomment the following line in /webserver/lighttpd/etc/modules.conf
## ## FastCGI (mod_fastcgi) ## include "conf.d/fastcgi.conf"
Open /webserver/lighttpd/etc/conf.d/fastcgi.conf, and append following line
server.modules += ( "mod_fastcgi" ) fastcgi.server = ( ".php" => ( "php-tcp" => ( "host" => "127.0.0.1", "port" => "9000" ) ) )
Save and close the file. Type the following command to restart Lighttpd
# /etc/init.d/lighttpd restart
This completes the installation steps. To test php you can create a info.php file in the document root folder
# vi /webserver/lighttpd/www/htdocs/info.php
Append following line
<?php phpinfo(); ?>
If you see the above, you have completed a successful installation of lighttpd and php.
Related Posts:
- How To Install Nginx And PHP-FPM On CentOS 6 Via Yum
- How To Setup A LAMP Server On Centos 6.0
- How To Flush/Remove All Iptables Rules In Linux
- Setting Up Password Aging In Linux
- How To Configure Static IP Address On CentOS
- How To Restart Networking Service In Linux
- How To Install Nginx And PHP (PHP-FPM) On CentOS 6
- How To Enable/Disable Firewall On Centos / RedHat / Fedora
- How To Increase The Number Of PTY (Pseudo-Terminal Driver)
- How To Enable IP Forwarding On CentOS / RedHat