Настройка Apache2 на Ubuntu, VirtualHosts, ServerName

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

Так как на моем компе установлена Ubuntu Linux, а установка приложений с помощью менеджера пакетов Synaptic — сплошное удовольствие, то получилось так, что я установил с его помощью Apache и мне хватало его дефолтных установок. Но захотелось мне навести красоту, разместить несколько веб-сайтов и иметь к ним доступ по разным доменным именам.

Итак, имеем задачу:

Настроить несколько веб-сайтов, на локальном сервере Apache2, установленного на рабочей машине с Ubuntu Linux, и чтобы доступ к ним был по адресам, например таким:

  • 1й сайт — www.test1.my и test1.my
  • 2й сайт — www.test2.my и test2.my

и так далее, в том же духе.

При попытке привести все к красоте, возникло несколько интересных ошибок, которые, надеюсь нелишне описать.

Итак, первое, в Ubuntu состав директории /etc/apache2 немного отличается от привычных директорий настройки Apache в Unix-подобных системах.

1
2
3
4
5
6
7
8
9
conf.d/
sites-available/
sites-enabled/
mods-available/
mods-enabled/
apache2.conf
envvars
httpd.conf
ports.conf

В Ubuntu основным файлом настройки Apache2 является не httpd.conf, а apache2.conf, но тут он играет роль системного файла, в котором собраны основные и самые важные настройки сервера.

А вот файл httpd.conf — пустой и предназначен для добавления дополнительных настроек, он включен в основной файл настройки apache2.conf

В файле envvars описаны переменные среды, необходимые для функционирования Apache-сервера.

В ports.conf вынесены настройки портов на которые можно будет подключиться к серверу или конкретному сайту на нем.

В папке conf.d находятся дополнительные конфигурационные файлы.

Для описания всех доступных сайтов используется папка sites-available в которой расположены файлы с описанием виртуальных хостов — VirtualHosts, опубликованные же сайты находятся в папке sites-enabled в виде ссылок на файлы доступных сайтов из папки sites-available.

Таким же образом в папках mods-available и mods-enabled настраивается доступность модулей используемых сервером.

Разобравшись со структурой файлов и папок, уже можно приступать к настройке. Первым делом создаем новый файл в папке sites-available, с именем хоста, так будет понятнее при просмотре директории.

1
#sudo touch test1.my

после этого с помощью любого доступного текстового редактора добавляем в этот файл следующие строки

1
2
3
4
5
<VirtualHost *:80>
ServerName test1
ServerAlias test1.my www.test1.my
DocumentRoot /var/www/test1.my/www
</VirtualHost>

таким образом можно создать необходимое колличество виртуальных хостов и направить их в нужные директории на винчестере.

Теперь необходимо как-то научить нашу операционную систему распознавать домен .my. Для этого достаточно прописать необходимые строки в файле /etc/hosts, например так:

1
127.0.0.1    test1.my        www.test1.my

Так, теперь мы имеем настройку сайта как виртуального хоста (VirtualHost), имеем настроенный доменный адрес, но сайт еще не доступен для просмотра в браузере. А почему? А потому, что для начала необходимо разместить ссылку на VirtualHost в папку sites-enabled, и перечитать конфигурацию сервера Apache. Для создания ссылки можно выполнить такую команду:

1
#sudo a2ensite /etc/apache2/sites-available/test1.my

и перечитаем параметры:

1
#sudo /etc/init.d/apache2 reload

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

И вот тут мы столкнемся со второй неприятностью, не критической, но неприятной. После перечитки параметров будет выведено информационное сообщение:

Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

Что-то некрасиво получается, зачем нам такое. Но, мы помним, что у нас есть файл httpd.conf в котором желательно прописывать дополнительные настройки. Итак, открываем этот файл в текстовом редакторе, не забываем, что это надо делать с правами суперпользователя, и прописываем туда такую строчку

1
ServerName имя_вашего_сервера

сохраняем, закрываем файл и перечитываем параметры настройки:

1
#sudo /etc/init.d/apache2 reload

Сообщение пропало и теперь мы имеем красиво настроенный веб-сервер Apache. Сейчас для добавления новых сайтов достаточно создать файл виртуального хоста, вписать в него параметры настройки для хоста, добавить его в видимые хосты и перечитать параметры. Вот так вот, оказывается, все просто делается в нелегком админском деле.

Больше инфы см. в оригинале  на Генеральском чае – http://generaltea.ru/apache2-ubuntu-virtualhosts-servername/

ProFTP, исправление неправильной кодировки.

По умолчанию ProFTP устанавливается с кодировкой UTF8, для того чтобы “подружить” ваш FTP сервер с  Windows необходимо в ваш файл конфига /etc/proftpd/proftpd.conf  добавить перекодировку из utf-8 в CP1251. Добавляем следующее:

{IfModule mod_lang.c}

UseEncoding utf8 cp1251

{/IfModule}

Примечание: скобки замените  { и } замените на < и >

E: Ошибка, pkgProblemResolver::Resolve сгенерировал повреждённые пакеты. Это может быть вызвано отложенными (held) пакетами.

Устраняется запуском в терминале  “apt-get update” и  “apt-get install”

 

Исправляем исчезающий апплет сети – nm-applet, NetworkManager и т.д.

Предлагаю вам раз и навсегда решить проблему с исчезающим апплетом сети (nm-applet, апплет NetworkManager) и перестать его ругать.

Данная инструкция должна подойдет для всех ubuntu начиная с interpid 8.10 и до lucid lynx 10.04 (10.04.1)

Что нам для этого нужно усвоить:

В ubuntu существуют два режима работы с сетью

1. Управление сетевыми настройками через редактирование файла /etc/network/interfaces
2. Использование апплета сети, он же nm-applet, апплет NetworkManager и т.д.

Рассмотрим оба варианта

1. Управление сетевыми настройками через редактирование файла /etc/network/interfaces

Руководствуясь man interfaces, указываем свои сетевые настройки в файле /etc/network/interfaces, перезапускаем сервис сети командой sudo /etc/init.d/networking restart и радуемся жизни.
2. Использование апплета сети, он же nm-applet, апплет NetworkManager и т.д.

В файле /etc/network/interface, закомментируйте знаком # или сотрите все строки кроме следующих

view sourceprint?
1 auto lo
2 iface lo inet loopback

отредактируйте файл /etc/NetworkManager/nm-system-settings.conf установив параметр managed=true в разделе [ifupdown] чтобы получилось как в примере указанном ниже

view sourceprint?
1 [ifupdown]
2 managed=true

Перезапустите апплет сети командой sudo service network-manager restart, вуаля! все на месте все работает и никуда больше не денется.

Проводим разбор полетов:

Параметр managed=true/false в разделе [ifupdown] файла /etc/NetworkManager/nm-system-settings.conf устанавливает состояние работы апплета сети.
То есть, managed=true позволяет апплету сети обслуживание сетевых соединений, а managed=false запрещает (по умолчанию стоит именно этот параметр), что собственно и приводит к исчезновению апплета сети из трея после добавления любых настроек кроме как по умолчанию в файл /etc/network/interfaces.

Доступ из Xubuntu к ресурсам локальной сети Windows

Smbnetfs – утилита, позволяющая просматривать сеть Windows на предмет расшаренных в ней ресурсов, и автоматически монтировать их в указанную папку. Ниже изложена методика установки и настройки с помощью этой утилиты.

Установка и настройка smbnetfs.

  1. Устанавливаем пакет smbnetfs. Для этого в терминале набираем:sudo aptitude install smbnetfsПосле ввода пароля текущего пользователя, произойдёт установка пакета.
  2. Осуществляем некоторые проверки. Проверяем, установлен ли в системе модуль fuse:sudo mousepad /etc/modulesЕсли нет, дописываем его туда новой строчкой. Также проверяем, разрешены ли нам привелегии на монтирование файловой системы (FUSE), открыв Applications ? Система ? Пользователи и группы. Если нет, то разрешаем и перезагружаемся. Разрешение этой привелегии включит нас в группу fuse, что можно дополнительно проверить, зайдя в «Управление группами ? Свойства».
  3. Создаём папку, в которую будет монтироваться сеть, например: /media/Сеть. В дальнейшем сеть будет открываться при обращении к этой папке. Папку можно создать также в своём домашнем каталоге. Выставим для себя права на чтение и запись в неё. Откроем штатный файловый менеджер Thunar, перейдём в каталог /media (или в свой домашний, если вы организовали папку «Сеть» там) и перетащим папку «Сеть» в левую панель, чтобы она всегда была под рукой.
  4. Основная настройка закончена. Теперь сеть можно подмонтировать простой командой:smbnetfs /media/СетьНо есть одно замечание. Эта команда должна быть выполнена только после того, как откроется сетевое соединение, поэтому не следует прописывать её в автозагрузку. Лучше запускать монтирование вручную, например, вытащив кнопку с приведённой выше командой на панель.Вот, собственно, и всё, но можно кое-что настроить более точно с помощью конфигурационного файла. Об этом далее.
  5. Руководство пользователя (man smbnetfs) рекомендует создать папку ~/.smb и скопировать в неё два конфигурационных файла (от samba и собственный). Это можно сделать двумя командами:cp /etc/samba/smb.conf ~/.smb cp /etc/smbnetfs.conf ~/.smb Для настройки интервала опроса, который по умолчанию равен 300 секундам (5 минут), открываем файл /etc/smbnetfs.conf mousepad ~/.smb/smbnetfs.conf и изменяем параметр smb_refresh_time так, как нам нужно.
  6. Если ваша сеть поддерживает домены, добавим в папку новый файл:touch ~/.smb/smbnetfs.authи вписываем в параметр auth логин и пароль пользователя, от имени которого будем заходить на расшаренные ресурсы:auth “DOMAIN/user” “password”Вместо создания нового файла можно дописать эту строку в ~/.smb/smbnetfs.conf. В конце этого файла есть соответствующая секция.

P.S. Еще один способ с помощью  smbfs и монтируемые ресурсы прописываются в /etc/fstab

://192.168.0.1/share /home/user/NET/Share smbfs rw,iocharset=utf8,username=user%password,domain=WORKGROUP 0 0 великолепно работает и в ubuntu, и в xubuntu.

P.S. 2 Если не заработало, то ? вот это заработало!!!

sudo smbmount \\\\Serwer\\D /mnt/D -o username=administrator,password=”&slon”,rw,iocharset=utf8,codepage=cp866 пояснения:

sudo – выполнять далее следующее от имени суперпользователя (система спросит пароль суперпользователя, но зато уж монтируется что угодно – куда угодно, конечно при одном условии что_монтируем и куда_монтируем должны существовать!); smbmount
- собственно команда монтирования;

\\\\Serwer\\D – что_монтируем(да-да-да! зачем-то по паре слешей вместо одного! это наверно знаменитое дружелюбие к пользователю Линукса – я на этом видимо и споткнулся в свое время… кто бы пояснил ПОЧЕМУ ИХ ПАРА??! но оно работает – а потому просто примем как есть…)

/mnt/D – куда_монтируем(ну тут все более менее понятно…

одно замечание – хотите обходится без sudo – создавайте папку куда_монтируем под тем пользователем который будет подмонтировать Windows-ресурс, а это вероятно означает в его домашней папке! да? я прав? я прав??!)

-o - ну это говорит о том что далее идут опции. (Опции простые и читаются что называется “с полпинка…” имя,пароль(это для доступа к Windows-ресурсу), rw – ну это тоже понятно режим “чтениеИзапись”(домашнее задание что будет означать “ro” на этом месте ??),далее песня про charset и codepage – это тоже очевидно – чтобы Вы видели те буквы к которым привыкли а не те что легче нарисовать ПК(установка совместимости по кодировкам) .)

Ну еще пример на эту тему:

smbmount \\\\Serwer\\D ~/D -o username=vasja,password=”1995?,rw,iocharset=utf8,codepage=cp866 здесь за маленькой птичкой ~/D скрывается строка /home/vasja/D – ну Вы понимаете – его домашний каталог а потому как говорилось выше можно без sudo обойтись. Единственно что еще ОЧЕНЬ ВАЖНО помните: что_монтируем(Windows-ресурс) ДОЛЖЕН СУЩЕСТВОВАТЬ заранее(это-то как бы само-собой очевидно) но и точно так же и куда_монтируем(папка в файловой системе нашего Xubuntu) тоже должна существовать! И помните про настройку прав! Права доступа для обоих объектов! Вот! Вот кто бы мне только эту строку раньше показал!!! Все!!! Все что требуется среднестатистическому пользователю как я полагаю для работы. Стало более менее понятно… А то все больше вот такие строки попадались mount -t smbfs -o rw,iocharset=utf8,codepage=cp866,password=troorl… а такое я как не старался запустить в работу не мог… может быть мне кто-то пояснил бы ПОЧЕМУ??!