FreeBSD: Lighttpd + MySQL + PHP
From Wiki³
| UNDER 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