FreeBSD: Lighttpd + MySQL + PHP

From Wiki³


IconUNDER CONSTRUCTION: The document is currently being modified!
# $Id: Lighttpd-HOWTO,v 1.6 2009/10/18 07:00:30 k Exp $
#
# Lighttpd + MySQL + PHP HOWTO


  [1] MYSQL SETUP

  Begin the installation of the first daemon, mysql. You will need to 
  build the default permissions database, add mysql to the startup at 
  boot, and set the MySQL root password. When done go ahead and start 
  the daemon. Note that 'yourpassword' should represent your password 
  of choice and not actually 'yourpassword'.

	www# cd /usr/ports/databases/mysql51-server/ && make \
		BUILD_OPTIMIZED=yes install clean
	www# /usr/local/bin/mysql_install_db
	www# chown -R mysql:mysql /var/db/mysql/
	www# echo 'mysql_enable="YES"' >> /etc/rc.conf
	www# cp /usr/local/share/mysql/my-medium.cnf \
		/var/db/mysql/my.cnf
	www# chown mysql:wheel /var/db/mysql/my.cnf
	www# $EDITOR /var/db/mysql/my.cnf
		Add under 'port' the line 'bind-address = 1.2.3.4'
	www# /usr/local/etc/rc.d/mysql-server start
	www# /usr/local/bin/mysqladmin -u root password yourpassword


  [2] LIGHTTPD

  Continue via installing lighttpd from the ports collection. Then 
  setup a very basic daemon configuration file. The only lines in the 
  config that need your attention are the ones shown below.

	www# cd /usr/ports/www/lighttpd/ && make install clean
	www# $EDITOR /usr/local/etc/lighttpd.conf

	server.modules		= (
		"mod_access",
		"mod_accesslog",
		"mod_cgi",
		"mod_fastcgi",
		"mod_redirect" )
	server.document-root	= "/usr/local/www/_base/"
	server.errorlog		= "/usr/local/www/lighttpd.error.log"
	index-file.names	= ( "index.php", "index.html",
				    "index.htm", "default.htm" )
	server.event-handler	= "freebsd-kqueue"
	accesslog.filename	= "/usr/local/www/lighttpd.access.log"
	fastcgi.server = ( ".php" => ( "localhost" => (
		"socket" => "/var/run/lighttpd/php-fastcgi.socket",
		"bin-path" => "/usr/local/bin/php-cgi"
	) ) )
	cgi.assign		= ( ".pl"  => "/usr/bin/perl",
				    ".cgi" => "/usr/bin/perl" )
	include			"/usr/local/etc/lighttpd-mime.conf"
	include			"/usr/local/etc/lighttpd-vhosts.conf"

  If you notice I have included I file for all my mime's and removed 
  them from the main config file for readability sake. There is also 
  a file included at the end for all of your vhosts. I won't get too 
  far into detail about vhost setup but I will leave you with the 
  following example.

	$HTTP["host"]	== "sub1.domain.com" {
		server.document-root = "/usr/local/www/sub1/"
		server.dir-listing = "disable"
		server.error-handler-404 = "/?404"
	}
	$HTTP["host"]	== "sub2.domain.com" {
		server.document-root = "/usr/local/www/sub2/"
	}

  Make the directories for document-root and logs, set permissions, 
  and then start the daemon. Be sure to also make directories that 
  match any virtual hosts that you may or may not have added.

	www# mkdir -p /usr/local/www/_base/ /usr/local/www/_log/ \
		/var/run/lighttpd/
	www# touch /var/run/lighttpd/php-fastcgi.socket
	www# chown -R www:www /usr/local/www/ /var/run/lighttpd/
	www# /usr/local/etc/rc.d/lighttpd start


  [3] PHP5 AND EXTENSIONS

  Install php5 & php5-extensions from the ports tree. Make sure the 
  following options are used when building.

	www# cd /usr/ports/lang/php5/ && make WITH_MULTIBYTE=yes \
		WITHOUT_IPV6 install clean
	www# cd /usr/ports/lang/php5-extensions/
	www# make config-recusive

		Add Options: +BZ2 +CURL +FTP +GD +MCRYPT +MHASH
				+MYSQL +MYSQLI +ZIP +ZLIB

	www# make install clean

  Set the standard configuration file for php and then install the 
  eAccelerator PHP extension. Add the extension into the php.ini. 
  Note that actual location of extension if printed on screen at the 
  end of eAccelerator install.

	www# cp /usr/local/etc/php.ini-recommended \
		/usr/local/etc/php.ini
	www# cd /usr/ports/www/eaccelerator/ && make install clean
	www# $EDITOR /usr/local/etc/php.ini

	;;;;;;;;;;;;;;;;;;;;;;
	; Dynamic Extensions ;
	;;;;;;;;;;;;;;;;;;;;;;
	zend_extension="/usr/local/lib/php/20060613/eaccelerator.so"


  [4] FINISH!

  Now that the web server is installed go ahead and restart the web 
  daemon. Then feel free to add mysql user accounts as necessary.

	www# /usr/local/etc/rc.d/lighttpd reload
	www# mysql -p
	mysql> GRANT ALL ON db.* TO username@localhost \
		IDENTIFIED BY 'yourpassword';
	mysql> FLUSH PRIVILEGES;
	mysql> \q


------------------------------------------------------------------------

  [A] REFERENCES

  http://redmine.lighttpd.net/wiki/lighttpd/Docs:Configuration
  http://dev.mysql.com/doc/refman/5.1-maria/en/adding-users.html