Пятница , 29 Март 2024
ДомойПубликацииLinux Debian: настройка своего сервера

Linux Debian: настройка своего сервера

Настройка сервера

статья подойдёт на случай, если неожиданно появился vds/vps (или даже выделенный сервер). в чём прелесть линукса, так это в изначальной заточке под сервер. конечно, чтобы создать кластер, или хотя бы заставить работать сервер в экстренных условиях, нужно потратить не один день, отбиваясь от разного рода нагрузок, атак, кривизны скриптов и прочего.

предполагается, что на сервере установлена 32-битная операционка (для 64-бит, скорее всего, будет отключаться расположение некоторых каталогов). итак, понеслась.

все манипуляции совершаются с сервером посредством ssh. в качестве клиента я использую Putty. запускаем клиент. в качестве имени хоста вводится ip адрес, выданный хостером. после этого будет запрошен логин (обычно root) и пароль. при вводе пароля символы не появляются; нужно просто ввести пароль и нажать enter. теперь имеется прямое соединение с сервером и можно заниматься, собственно, установкой и настройкой системы.

для начала рекомендуется обновить пакеты. сделать это можно командой:

установка apache

мне понравилась идея по поводу запуска процессов от разных имён пользователей. на некоторых хостингах возможна ситуация, когда файлы, залитые по ftp, нельзя изменять скриптами (либо наоборот: файлы, созданные скриптами, невозможно удалить по фтп). происходит такая штука из-за того, что заход по фтп осуществляется от одного пользователя, а php-файлы исполняются процессом, запущенным от имени другого. в качестве альтернативного варианта можно запускать php в режиме fastcgi, но это, конечно, личное дело каждого. установка осуществляется очень просто:

для большей безопасности рекомендуется запретить консоль у пользоватале www-data, от имени которого по умолчанию и работает апач.

остаётся, фактически, подрубить несколько дополнительных модулей (по желанию, конечно же). для этого в debian есть специальная команда a2enmod. я подключил mod_rewrite, т. к. без него не работает, фактически, не один мой движок:

возможно, интересны будут модули ssl (для защищённых соединений) и vhost_alias (для автоматической настройки подключаемых доменов). последний может быть интересен тем, что настроив его 1 раз, новые домены (или поддомены) на сервере можно создавать простым созданием папки с соответствующим именем.

про остальные модули можно почитать на официальном сайте.

на данном этапе требуется знать, по крайней мере, ещё одну вещь: конфиг апача, ссылки на модули и конфиги хостов находятся здесь: /etc/apache2/. в каталоге mods-available находятся ссылки на модули, а также конфиги модулей (сами модули находятся по адресу /usr/lib/apache2/modules/, но это информация для справки). модули, которые использует апач, перечислены в директории mods-enabled в виде символических ссылок. аналогично и с хостами: в каталоге sites-available имеем сами конфиги, а в sites-enabled — симлинки на те конфиги, которые должны быть подключены. таким образом, если не нужен какой-то модуль/хост, достаточно разорвать связь, удалив соответствующую ссылку. для этого существуют команды a2dismod и a2dissite (в противовес a2enmod и a2ensite).

установка php

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

модуль curl нужен для работы с удалёнными сайтами (многие грабберописатели используют его в своих скриптах), а модуль gd для работы с изображениями.

теперь желательно немного подправить конфигурационный файл: /etc/php5/apache2/php.ini (не забудьте сделать копию перед внесением изменений). символ ; в начале строки означает комментарий, и такие строки не засчитываются. поэтому если конфиг нужно изменить (как, например, временную зону), сначала строку необходимо раскомментировать, удалив символ ;. интересны могут быть следующие параметры:

  • max_execution_time — максимальное время выполнения скрипта;
  • memory_limit — максимальная память, выделяемая скрипту;
  • display_errors — вывод ошибок в браузер. настоятельнейшим образом на боевом сервере рекомендую значение off;
  • display_startup_errors — также лучше установить в off;
  • register_globals — автоматическое создание переменных из данных, пришедших с GET/POST/COOKIE. в интернете бытует мнение, что это очень опасно. вовсе нет. опасно неумелое использование. все данные, пришедшие от пользователя, необходимо фильтровать жесточайшим образом. в общем случае лучше установить в off (для увеличения быстродействия запускаемых скриптов);
  • register_long_arrays — создание «длинных» массивов. можно считать уже полных анахронизмом, поэтому однозначно off;
  • register_argc_argv — в скриптах эта штука не используется (ввиду того, что доступ к переменным осуществляется, например, так $_GET[‘val’]), тоже off;
  • auto_globals_jit — в общем случае, off;
  • post_max_size — максимальный размер принимаемых POST-данных;
  • magic_quotes_gpc/magic_quotes_runtime/magic_quotes_sybase — так называемые магические кавычки. использование этого «добра» считаю признаком плохого тона (тем более, что пользы гораздо меньше, нежели защиты). однозначно off;
  • default_charset — умолчательная кодировка, отдаваемых в заголовках. если вы ещё не используете прогрессивную utf-8, можно установить что-то другое (например, windows-1251). но помните, что на эту настройку лучше не рассчитывать: скрипты сами обязаны сообщать корректную кодировку;
  • upload_max_filesize — максимальный размер загружаемых файлов (тех самых, которые отправляются из формы);
  • date.timezone — временная зона. крайне желательно уставить такую зону, в котором должен работать php (это может быть Europe/Moscow);
  • sendmail_path — адрес почтовика. можно сначала проверить, отсылаются ли письма на данный момент. у меня не отсылались, поэтому пришлось устанавливать дополнительную программу и, соответственно, вносить изменения. этот параметр у меня такой:
    /usr/sbin/exim4 -t.

установка mysql

выполняется такой командой:

в процессе установки будет запрошен пароль рута (root) — это пользователь, которому в mysql изначально предоставлены все поля. пароль не должен быть очень простым, т. к. от этого, всё-таки, зависит безопасность многих данных.

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

теперь доступны подключенные модули, php и mysql. работу apache можно проверить, введя в адресной строке ip-сервера (по умолчанию выводится страница с надписью It Works!). для проверки php создаём файл index.php:

в браузере вводим в адресную строку путь к созданному файлу:
XX.XX.XX.XX/index.php
где заместо XX.XX.XX.XX должен быть, естественно, IP. в ответ получите информацию о версии php, установленных модулях и ещё кое-что.

установка фтп

пару раз устанавливал vsftp, но оно, по каким-то причинам, через некоторое время отказывалось работать. поэтому выбор пал на proftpd. установка выполняется так:

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

теперь один важный момент: если нет желания давать пользователям заход по ssh, в конфиге потребуется изменить один параметр. открываем файл
/etc/proftpd/proftpd.conf
и раскомментируем строку (убираем из начала строки решётку #)
RequireValidShell Off

это нужно для того, чтобы пользователи, у которых консоль отключена (/bin/false) и нет доступа по ssh, тем не менее, могли заходить по ftp.

перезапускаем демона и забываем про него

настройка почты

если всё-таки отправка почты не работает, вводим следующую команду:

после этого будут задаваться вопросы. на первый выбираем первый пункт:
интернет-сайт; прием и отправка почты напрямую, используя SMTP
дальше можно жать enter до конца настройки.

если в конфиге php ещё не внесена соответствующая настройка, сделайте это сейчас.

создание пользователей

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

/home — можно использовать /var/www или /srv
    /user1 — папка для первого пользователя
        /sites — здесь будут находится сайты пользователя
            /site1.ru — папка с первым сайтом
            /site2.ru — папка со вторым сайтом
            /site3.ru — папка с третьим сайтом
        /logs — логи апача
        /tmp — временная папка
            /sess — здесь php будет хранить сессии пользователей
    /user2 — папка для второго пользователя
        ... — аналогично тому, что для user1
    ... — и т. д.

ваше видение структуры может быть совершенно другим. и это совершенно несложно сделать, просто немного изменив конфиг и команды.

сначала создаём нового пользователя, группу для него, домашнюю директорию и задаём консоль (вернее, её отсутствие):

теперь пользователю требуется установить пароль. сделать это можно такой командой:

появится запрос на ввод нового пароля и подтверждение. пользователь есть. далее создаём необходимые директории:

здесь создаётся общая структура (mkdir) и назначается новый владелец (только что созданный пользователь). папка для нового сайта «заводится» такими командами:

теперь самое главное — создание и подключение файла с конфигурацией. создаём файл:

для простоты ориентирования файлы создаются с именем, совпадающем с именем пользователя. именно в этом файл в дальнейшем будет вноситься информация о новых доменах. делаем «видимым» новый конфиг для апача:

и, наконец, заполняем конфиг полезной информацией. одна из простейших конфигураций может выглядеть так:

сохраняем файл и говорим апачу, что конфигурацию нужно перечитать:

для быстрого теста подойтёт уже знакомый маленький индексный файл:

если домен уже настроен на сервер, то введя в адресной строке site1.ru (для которого только что настроили конфиг), получим знакомую информационную страницу. если же домен не настроен, то требуется зайти на страницу регистратора, и отредактировать зону (добавив запись A) с указанием адреса сервера такого содержания:

@ IN A XX.XX.XX.XX

через некоторое время сайт начнёт откликаться с нового сервера.

надеюсь, у вас всё получилось. удачи

Рейтинг: 0

Автор публикации

2 070
не в сети 11 месяцев

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (Оценок пока нет)
Загрузка...

Оставить комментарий

Политика конфиденциальности

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

Принять