Архивная версия сайта e-luge.net. Последняя запись сделана 1 марта 2011 года.
Город съехавших крыш
19-02-2009 15:47   |  Метки: howto, php, lighttpd, mysql, установка, сервер

Не знаю почему, но народ последнее время всё больше задумывается на тему использования на серверах вместо привычного apache его более шустрого аналога. Вдаваться в рассуждения на тему того, что в 90% случаев апача хватило бы за глаза не хочется. Все, ведь, почему-то уверены, что их сайт станет мега-популярным и посещаеым. Так вот, решил, чтобы в аську всякие умники за объяснением на пальцах не лезли, сделать что-то пипа howto по установке всего этого добра. Под рукой была только Ubuntu 8.10, так что весь процесс провёл на ней. Сделать тоже самое на другой системе, думаю, никому труда не составит.

Установка MySQL

sudo apt-get install mysql-server mysql-client

Это нам даст установленнный и запущенный сервер MySQL. В процессе установки будет запрошен пароль для пользователя root. По умолчаниб он пустой. Если Вы пропустили этот шаг, то зададим пароль вручную.

sudo  mysqladmin -u root password ПАРОЛЬ

Проверим, какие адреса слушает сервер

sudo netstat -tap | grep mysql

Вывести должно что-то вроде:
tcp 0 0 localhost:mysql *:* LISTEN 1695/mysqld
т.е. доступ к серверу только с локально.

Установка lighthttpd

Всё просто

sudo apt-get install lighttpd

Когда установка закончена, проверим работу веб-сервера. В браузере наберите IP адрес сервера или, если вся установка происходит на локальной нашине, то http://localhost. lighttpd должен отобразить страничку-заглушку.

Все отображаемые файлы по умолчанию хранятся в /var/www и конфиг в /etc/lighttpd/lighttpd.conf

Установка PHP5

PHP работает с lighttpd через FastCGI инерфейс. Установим PHP:

sudo apt-get install php5-cgi

Подключим PHP к lighhtpd

sudo  nano /etc/php5/cgi/php.ini
и в конец файла добавляем
cgi.fix_pathinfo = 1

сохранить и закрыть.

Затем правим /etc/lighttpd/lighttpd.conf. Добавляем "mod_fastcgi" к списку модулей

sudo nano /etc/lighttpd/lighttpd.conf

server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_expire",
"mod_compress",
"mod_rewrite",
"mod_fastcgi",
#  "mod_redirect",
#  "mod_evhost",
#  "mod_usertrack",
#  "mod_rrdtool",
#  "mod_webdav",
#  "mod_flv_streaming",
#  "mod_evasive" )

И в конце файла:
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php5-cgi",
"socket" => "/tmp/php.socket"
)))

Перезапускаем lighthttpd:

sudo /etc/init.d/lighttpd restart

Проверяем сборку

По умолчанию Document Root установлен /var/www. Проверим работу PHP. Создаём файл test.php

sudo nano /var/www/test.php

И пишем в него:

<?php phpinfo(); ?>

Теперь вызываем http://АДРЕС_СЕРВЕРА/test.php и, если всё работает, получаем описание конфигурации PHP. В пункте Server API указано, что PHP работает как FastCGI. Ниже указаны все установленные модули. MySQL среди них нет.

Включение поддержки MySQL в PHP5

Установим php5-mysql расширение

sudo apt-get install php5-mysql

И перезагрузим веб-сервер

sudo /etc/init.d/lighttpd restart

Обновим test.php в браузере и теперь в списке должны появиться модули MySQL.

Всё, сервер готов к использованию!

Установка eAccelerator

Cтавим средства разработки для php:

sudo apt-get install php5-dev

Качаем eAccelerator

wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2

и распаковываем его
tar xvjf eaccelerator-0.9.5.2.tar.bz2

Переходим в директорию eaccelerator-0.9.5.2

cd eaccelerator-0.9.5.2

Компилируем и устанавливаем:

sudo phpize
sudo ./configure –enable-eaccelerator=shared
sudo make
sudo make install

Настраиваем. Для этого правим /etc/php5/cgi/php.ini

sudo nano /etc/php5/cgi/php.ini

добавляя туда в секцию [PHP] такие строки:
; eAccelerator configuration
; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension
; If you are using a thread safe build of PHP you must use
; zend_extension_ts instead of zend_extension
;extension = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
zend_extension = "/usr/lib/php5/20060613+lfs/eaccelerator.so"
eaccelerator.shm_size = "16″
eaccelerator.cache_dir = "/var/cache/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1″
eaccelerator.check_mtime = "1″
eaccelerator.debug = "0″
eaccelerator.filter = ""
eaccelerator.shm_max = "0″
eaccelerator.shm_ttl = "0″
eaccelerator.shm_prune_period = "0″
eaccelerator.shm_only = "0″
eaccelerator.compress = "1″
eaccelerator.compress_level = "9″

Создаем каталог для кеша скриптов:

sudo mkdir -p /var/cache/eaccelerator
sudo chmod 0777 /var/cache/eaccelerator

Перезапускаем lighttpd и проверяем в phpinfo. Должа появится секция eAccelerator.

sudo /etc/init.d/lighttpd restart

Ну, и вдруг, действительно проект у нас масштабируемый и без memcached не обойтись.

Устаовка Memcached

sudo apt-get install php-pear
sudo apt-get install zlib1g-dev
sudo apt-get install memcached
sudo pecl install Memcache

правим php.ini

sudo nano /etc/php5/cgi/php.ini

Добавляем строчку

extension=memcache.so

И, как всегда, рестарт сервера

sudo /etc/init.d/lighttpd restart

Настройка виртуальных хостов

Сделаем всё на примере.

  • Внешний IP: 84.19.180.132
  • Имена хостов: example1.com and example2.com
  • Document Root по умолчанию: /var/www/default/htdocs
  • Document Root по умолчанию для example1.com: /var/www/example1.com/htdocs
  • Document Root по умолчанию для example2.com: /var/www/example2.com/htdocs

Создаём необходимые дирректории

sudo mkdir -p /var/www/default/htdocs
sudo mkdir -p /var/www/example1.com/htdocs
sudo mkdir -p /var/www/example1.com/logs
sudo mkdir -p /var/www/example2.com/htdocs
sudo mkdir -p "/var/www/example2.com/logs

Сменим владельца для /var/www/

sudo chown -R www-data: www-data /var/www/

Правим lighttpd.conf:

sudo nano /etc/lighttpd/lighttpd.conf

Меняем Document Root:

server.document-root = "/var/www/default/htdocs"

Указываем IP и порт:
server.port = 80
server.bind = "84.19.180.132"

В конце файла добавляем

include "example1.com.conf"
include "example2.com.conf"

Сохранить и закрыть

Создаём файл конфигурации для example1.com:

Открываем /etc/lighttpd/example1.com.conf:

sudo nano /etc/lighttpd/example1.com.conf

И пишем туда следующее

$HTTP["host"] =~ "example1\.com" {
            server.document-root = "/var/www/example1.com/htdocs"
            accesslog.filename = "/var/www/example1.com/logs/access.log"
}

Сохранить и закрыть

Создаём файл конфигурации для example2.com:

sudo nano /etc/lighttpd/example2.com.conf

И по аналогии

$HTTP["host"] =~ "example2\.net" {
            server.document-root = "/var/www/example2.com/http"
            accesslog.filename = "/var/www/example2.com/logs/access.log"
}

Сохранить и закрыть.

рестарт сервера

sudo /etc/init.d/lighttpd restart

На этом, пожалуй, на сегодня все. Комментарии и исправления приветствуются.

Комментарии (0):

Комментариев пока нет. Станете первым?

Это архив блога. Добавление комментариев запрещено.

© Павел Новицкий 2009 - 2011
(: time: 31.6s, sql: 82, memory: 300Mb :)