Это старая версия документа.


Решил оформить наконец своё HOW-TO на форуме (http://forum.ubuntu.ru/index.php?topic=52552.0) в нашей вики, т.к. это правильнее и форматирование здесь удобнее. Я постарался изложить материал кратко, намеренно упустив подробности, которые не относятся напрямую к сути (вроде того, что конфиги сервера нужно править от рута). Считаем, что читатель имеет базовый уровень работы с линукс-системами.

Предложения и правки просьба писать в тему на форуме.

Базовая установка и настройка веб-сервера

Выполнив этот раздел, вы получите базовый, работающий веб-сервер

Установка

apt-get install apache2 php5 php5-mysql mysql-server phpmyadmin
apache2 - веб-сервер

php5 - интерпретатор языка php

php5-mysql - для работы с мускулем из php

mysql-server - СУБД MySQL

phpmyadmin - веб-интерфейс для управления БД MySQL.

Иногда при копипасте кода установки может вылезать ошибка, что какой-то пакет не найден. На самом деле все правильно, просто глюк копипаста. Решение вбить руками команду или попробовать стереть название проблемного пакета вместе с пробелами по краям и вбить руками только его.

Настройка Apache

Персональные настройки

Свои настройки следует писать в /etc/apache2/conf.d, т.е. создать там файл, например, myconf.conf и определить в нём свои настройки.
## Файл персональных настроек веб-сервера Apache

## Чтобы устранить предупреждение при перезапуске Apache (хотя в целом на производительности это не отразится)
ServerName localhost

## Для того, чтобы Apache интерпретировал php и не предлагал сохранить php-файл
AddType application/x-httpd-php .php .phtml

## Установка кодировки UTF-8 по умолчанию
AddDefaultCharset UTF-8
После внесения изменений в конфиги Apache, его нужно перезапустить, чтобы измнения вступили в силу
service apache2 restart

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

Есть несколько способов, я же расскажу о том как повесить несколько виртуальных хостов на один IP c доступом к ним по имени сервера.

  • В /etc/hosts прописываем наши хосты:
127.0.0.1    host2.server1 host1.server1
  • Идём в /etc/apache2/sites-available

и создаём там файлы, названиями которых будут названия, создаваемых серверов, например host1.server1 и host2.server1 в эти файлы пишем (здесь показано простейшее, подробнее можно заценить в файле default):

<VirtualHost *:80>
    ServerName host1.server1
    DocumentRoot /var/www/host1.server1
    <Directory /var/www/host1.server1>
        AllowOverride All
    </Directory>
</VirtualHost>
<VirtualHost *:80>
        ServerName host2.server1
        DocumentRoot /var/www/host2.server1
        <Directory /var/www/host2.server1>
                AllowOverride All
        </Directory>
</VirtualHost>
  • Далее создаём симлинки на эти файлы в директории /etc/apache2/sites-enabled с помощью команды a2ensite:
a2ensite host1.server1 host2.server1
Удаляются симлинки таким же образом командой a2dissite
  • Перезапускаем Apache, пробуем в браузере открыть хосты
http://host1.server1
http://host2.server1

Твики и трюки

Этот раздел применять не обязательно, у вас уже всё работает после 1-го раздела. Однако вы можете найти здесь что-то полезное. Я рекомендую не обделить вниманием ускорение (opcode cacher)

Ускоряем сервер (Opcode Cacher)

Акселератор PHP — программа, ускоряющая исполнение сценариев PHP интерпретатором путём кэширования их байткода.

http://ru.wikipedia.org/wiki/Акселератор_PHP

Ставим или APC или XCACHE, оба ставить не надо!

APC

apt-get install php-apc

Файл настройки /etc/php5/apache2/conf.d/apc.ini.

extension=apc.so
realpath_cache_size=4096k
apc.max_file_size=4M
apc.shm_size=128M
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.ttl=3600
apc.user_ttl=3600
apc.gc_ttl=3600

XCACHE

apt-get install php-xcache

Файл настройки /etc/php5/apache2/conf.d/xcache.ini.

realpath_cache_size=4096k
xcache.size=40M
xcache.slots=8K
xcache.ttl=3600

Также можно указать число ядер вашего процессора:

xcache.count=2

понятно, что это для 2-х голового.

Однако, я получил при этом падение производительности в Битриксе на 5-10%. Попробуйте, мб в вашем случае будет рост.

Выключаем автозапуск apache2 и mysql

ВАМ ЭТО ДЕЙСТВИТЕЛЬНО НУЖНО? Эти демоны стартуют в родной для себя среде в разы быстрее чем денвер в винде, думаю от 1 сек к времени загрузки ОС и 10 мб ОЗУ вам хуже не станет, а лишних телодвижений не будет…

Выключаем автозапуск Apache:

sudo update-rc.d -f apache2 remove

Выключаем автозапуск MySQL:

sudo nano /etc/init/mysql.conf

комментируем строки:

start on (net-device-up
          and local-filesystems
          and runlevel [2345])

т.е. должно быть так:

#start on (net-device-up
#          and local-filesystems
#          and runlevel [2345])

Разрешаем подключение к MySQL из Мира

Нужно для подключения веб-сервера или другой программы, находящейся на другом сервере. В случае, если у вас они крутятся на одном сервере этого делать не нужно!
по умолчанию mysql не принимает tcp соединения т.к. прослушивает только 127.0.0.1

/etc/mysql/my.cnf

#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

Самое простое - просто закомментировать эту строку.

Кроме этого требуется добавить пользователя, который с разных мест и из разных программ может соединяться с базой, например «admin»:

GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'my_admin_password' WITH GRANT OPTION;