Настройка web-сервера на основе VPS/VDS в Ubuntu/Debian

Настройка web-сервера на основе VPS/VDS в Ubuntu/Debian

Если уж судьба заставила вас променять обычный хостинг на VDS, для размещения ваших интернет-ресурсов, это скорее всего значит что ваши сайты стали слишком прожорливы и требовательны к ресурсам хостинга. Что ж, есть в этом и свои плюсы, но теперь вам предстоит самому настроить программное обеспечение для организации web-сервера. Большинство провайдеров в комплекте к VDS выдают настроенную OS и удобную хост-панель, но максимальной производительности и стабильности с дефолтными настройками не добьешься.

Собственно я решил поделиться своим опытом в построении полноценного и быстрого веб-сервера. Все в одной статье вместить будет сложно, поэтому я решил написать несколько отдельных статей, касающихся данной темы: настройка LAMP, FTP, ведение статистики, оптимизация быстродействия и т.п.

В данной статье я опишу настройку основных компонентов веб-сервера и некоторых дополнительных полезных вещей, а именно:

  • Apache 2
  • PHP 5
  • MySQL 5
  • phpMyAdmin
  • Nginx
  • Memcached
  • XCache
  • Zend Optimizer

Для своих серверов я использую Debian Lenny, поэтому настройку буду описывать именно для этого дистрибутива, но данные инструкции будут практически идентичны для Ubuntu, за исключением некоторых нюансов, которые я также постараюсь упомянуть.

Итак, у нас есть чистый Дебиан или Убунту. Легким движением руки установим Apache, PHP и MySQL:

В процессе установки конфигуратор попросит задать пароль администратора MySQL.

Вбиваем в браузере IP сервера и должны увидеть что-то типа «It works!» обрадовавшись тому что все работает, пробуем залогиниться в май админ:

Вводим root и пароль который задавали выше. Если залогинись — значит Apache, PHP и MySQL работают нормально.

примечание: в некоторых предыдущих версиях Ubuntu (8.04, 8.10 и т.п.) при установке phpMyAdmin не прописывает автоматически свои настройки в Apache, поэтому нужно сделать это вручную:

и перезапустить Апач:

Далее установим Nginx. Объясню в двух словах что это такое и зачем оно нам. Nginx — это веб-сервер более легкий и быстрый чем Apache, это значит что он быстрее обрабатывает запросы и кушает меньше ресурсов, но при этом имеет меньше возможностей. В нашем случае, Nginx будет делать то, что у него лучше всего получается — отдавать статику (картинки, текст, видео, флеш и т.п.) Apache будет заниматься только обработкой PHP.

Итак установим же его если он такой классный :) В репозиториях как правило лежит старая версия пакета, поэтому качаем новый пакет отсюда:

выбираем последнюю стабильную версию для своей архитектуры, качаем и устанавливаем:

или же лезем на http://nginx.org/ качаем самый новый исходник и собираем Nginx руками, но я не сильно люблю таким страдать. Также нужно установить модуль «mod_rpaf» для Apache, что бы он смог работать в паре с Nginx:

Далее нам нужно сделать так, что бы Nginx слушал 80 порт и отдавал клиентам статику, а запросы к PHP-скриптам передавал на обработку Апачу. Для этого открываем своим любимым редактором (я использую nano) конфиг Апача и вешаем его на другой порт:

там где «Listen *:80» вместо 80 пишем любой другой свободный порт например:

сразу же настроим виртуалхост:

Не буду описывать все тонкости настройки виртуалхостов и директорий в Apache, может когда-то напишу отдельную статью по этому поводу, а сейчас рассмотрим только общий случай настройки дефолтного виртуалхоста под себя:

Теперь настроим Nginx. Открываем главный конфиг:

и приводим его примерно к следующему виду:

параметры, которые отличаются от стандартного конфига я отметил с помощью «#———» и выделил курсивом.

Настроим виртуалхост для Nginx:

Более подробную информацию по настройке Nginx и виртуалхоста к нему можно найти по адресу http://sysoev.ru/nginx/.

Проверим правильность синтаксиса конфигов Nginx:

Установка memcached на данном этапе сводится к одной команде:

Файл конфигурации memcached находится по адресу /etc/php5/conf.d/memcache.ini но я оставил дефолтные настройки.

Теперь установим парочку расширений для PHP — XCache и Zend Optimizer.

XCache — это дополнение к PHP, которое ускоряет обработку PHP-скриптов путем кэширования их байт-кода в оперативной памяти. Устанавливаем:

Для настройки XCache правим его конфиг, который находится в /etc/php5/conf.d/xcache.ini. Здесь можно настроить размер кеша и по желанию включить веб-интерфейс, для просмотра кешированых скриптов. Этот конфиг в принципе тоже можно оставить дефолтным, но все же я приведу свой для примера:

Zend Optimizer — расширение к PHP, для ускорения скриптов, закодированых с помощью Zend Encoder.

Для установки онного идем на офф сайт, регистрируемся и качаем последнюю версию расширения для своей архитектуры. Или качаем последнюю версию на момент написания статьи отсюда:

Распаковываем и в папке data ищем нужный нам модуль в соответствии с нашей версией PHP. Что бы узнать версию PHP:

Копируем файл ZendOptimizer.so в папку с модулями PHP:

и добавляем в него:

Перезагружаем Apache и Nginx:

проверим конфигурацию PHP:

должно быть что-то вроде:

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

p.s. Прошу прощения за дотошность в некоторых моментах, но статья рассчитана на новичков и хотелось охватить как можно больше мелочей, с которыми сам в свое время сталкивался.

Поделиться ссылкой:

Настройка web-сервера на основе VPS/VDS в Ubuntu/Debian : 22 комментария

Пробовал, все шло но не сел nginx. Требовал более свежих библиотек.

причина понятная и практически очевидная, для ее избежания можно поставить более раннюю версию Nginx из репозитариев.

Здравствуйте, скажите пожалуйста … это для какого Ubuntu Server ?

2 I am: Статью писал для Ubuntu 9.10 и Debian Lenny 5.0, но данные инструкции подойдут так же для более новых или более старых версий Ubuntu, за исключением мелких нюансов, которые я старался упомянуть в своей статье.

И вообще нужно это на Ubuntu Server стовить или на просто Ubuntu Desktop?

Или без разницы?

без разницы. Ubuntu Desktop отличается только наличием графической оболочки и прочей юзерфильной лабуды. если компьютер предполагается использовать только как сервер, то лучше установить Ubuntu Server, т.к. графическая оболочка съедает львиную долю ресурсов и на веб-сервере абсолютно не нужна.

Я хотел бы использовать Ubuntu с флешки, без установки … чтобы научиться пользоваться … а потом уже купить сервер … так можно ? …

что бы «научиться пользоваться» советую установить Убунту на какой-нибудь виртуальной машине типа VMware или Virtualbox, при чем, именно консольную версию (Ubuntu Server). можно, в принципе, и на флешку, но это как по мне неудобно (много гуглить придется паралельно).

У меня на страницу phpmyadmin не заходит, после «Далее установим Nginx» и все что идет дальше. Тоесть до установки Nginx phpmyadmin работал, а сейчас не хочет заходить. В чем может быть проблема?

2 Derman: Неправильно сконфигурирована связка Nginx+Apache. Следует понимать что в статье я привел свои конфиги только для примера, в любом случае их нужно править «под себя». По настройке Nginx советую почитать — http://sysoev.ru/nginx/

Очень интересный пост. По больше таких надо!

2 HuTpu4: А обязательно ставить ngnix? Если будет только Apache2+MySQL+PHP5 то норм будет? А то я пользуюсь webmin, там модуль есть для работы с Apache — очень удобно, а то это, чтобы вхост добавить надо сначало прописывать в Apache, затем еще в ngnix — геморно как то. Можно ведь сделать все, как тут описано, ТОЛЬКО без ngnix?

Необязательно. Если от сервера не требуется высокой производительности, то Nginx по сути вообще не нужен.

У меня ZOptimizer не хочет работать. Ставил все, что в данной статье было написано, кроме nginx. php -v вот что выдает:

PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php5/20060613+lfs//usr/lib/php5/modules/zendoptimizer.so’ — /usr/lib/php5/20060613+lfs//usr/lib/php5/modules/zendoptimizer.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010 03:25:57) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with XCache v1.2.2, Copyright (c) 2005-2007, by mOo with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans with Suhosin v0.9.27, Copyright (c) 2007, by SektionEins GmbH

Разобрался, у меня модули просто находятся не в «modules», а в «20060613+lfs». И я уж было подумал все, терь все норм будет, как вдруг php -v ошибку в конце выводит =(. Кто знает в чем может быть проблема?

PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010 03:25:57) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with XCache v1.2.2, Copyright (c) 2005-2007, by mOo with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans with Suhosin v0.9.27, Copyright (c) 2007, by SektionEins GmbH with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies Ошибка сегментирования (core dumped)

Привет … Да, вот всё таки пришлось купить сервер и очень рад что сохранил страницу в закладки. Хотел вот что узнать, если ли в Debian команда или что-то, что может сбросить все настройки, например если я посталю MySQL, но передумал и хочу использовать Oracle, так вот как удалить MySQL ? … Или например хочу удалить PHP и поставить другой язык … Именно без переустановки ОС вернуться к чистому листу как можно ?

HuTpu4, что-то редко видать в блоге … =[

2 I am: что бы удалить, или установить пакет есть специальные утилиты. в Дебиане/Убунту это например apt-get или aptitude. например, что бы удалить MySQL сервер:

apt-get remove mysql-server

штатных средств «вернуться к чистому листу» нету. это можно организовать какими-то сторонними утилитами, создавая образы дисков, или что-то в этом роде, но т.к. с хорошим инетом установка Debian с минимального диска занимает минут 20, то смысла нету заморачиваться с образами.

з.ы. Новогодние праздники, личная жизнь, последние недели 2 на блог элементарно не хватало времени даже на коммент ответить.

HuTpu4, ну всё … праздники закончились, пора возвращаться в строй … =] Спасибо за ответ … сейчас поставил ISP … но всё таки по этой статье ещё поставлю всё что не хаватает …

Вот вы представляете каково настраивать Debian виндусятнику (то есть мне) при практически нулевом знании оного? И при этом я умудряюсь натыкаться на пропущенные ньюансы в вашей статье. Для меня этот опыт ценен, сделайте одолжение исправьте недочеты ;) А то так скоро совсем седой буду ))))

Эта статья не панацея….нет рецепта на все случаи жизни, нюансы есть и будут всегда :) Но все же, о каких недочетах вы говорите? Можно конкретней?

📎📎📎📎📎📎📎📎📎📎