Настройка 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 виндусятнику (то есть мне) при практически нулевом знании оного? И при этом я умудряюсь натыкаться на пропущенные ньюансы в вашей статье. Для меня этот опыт ценен, сделайте одолжение исправьте недочеты ;) А то так скоро совсем седой буду ))))
Эта статья не панацея….нет рецепта на все случаи жизни, нюансы есть и будут всегда :) Но все же, о каких недочетах вы говорите? Можно конкретней?