DTop CMS - система управления контентом
Текущая версия: 3.4.1



© 2002-2013

Статья опубликована: 2010.05.04

FreeBSD, мультисайтовый веб-сервер на основе Apache


На этой страничке описано как настраивать веб-сервер Apache для работы нескольких сайтов под разными пользователями. Настройка производится с консоли или через ssh подключение на компьютере под управлением FreeBSD. Данное описание применимо к FreeBSD 7.3 и Apache 2.2.13 скомпилированному с поддержкой suexec. Для доступа по ftp используется входящий в состав FreeBSD ftp-сервер. Подразумевается, что Apache и ftp-сервер установлены, настроены по умолчанию и запущены.


  • Apache
    Официальный сайт Apache
    Официальная документация к версии 2.2

  • Проверка что Apache запущен, запуск, остановка и перезапуск Apache

    Проверка того, что сервер работает:
    # ps ax | grep httpd
    
    Если Apache запущен, то Вы увидите подобные строки:
    53092  ??  I      0:00,02 /usr/local/sbin/httpd -DNOHTTPACCEPT
    53258  ??  I      0:00,02 /usr/local/sbin/httpd -DNOHTTPACCEPT
    
    Команда для запуска Apache
    /usr/local/etc/rc.d/apache22 start
    
    Команда для остановки Apache
    /usr/local/etc/rc.d/apache22 stop
    
    Команда для перезапуска Apache
    /usr/local/etc/rc.d/apache22 restart
    

  • Проверка наличия настроек для виртуалхостов в конфигурации Apache

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

    в /usr/local/etc/apache22/httpd.conf должны присутствовать и быть незакомментированными следующие строки
    Include etc/apache22/extra/httpd-vhosts.conf
    
    Include etc/apache22/Includes/*.conf
    
    В файле /usr/local/etc/apache22/extra/httpd-vhosts.conf должна остаться незакомментированной только строка
    NameVirtualHost *:80
    

  • Добавление нового сайта на сервер

    Исходные данные:
    логин пользователя: newuser
    домашняя директория: /home/newuser
    доменное имя сайта: newsite.ru
    подразумевается, что у пользователя будет больше одного сайта

    1. Добавляем нового пользователя на сервере как написано здесь
    2. Чтобы пользователь при заходе на сервер через ftp попадал в свою домашнюю директорию, редактируем файл /etc/ftpchroot, если файл отсутствует, то создаем. Добавляем туда строку:
    newuser /home/newuser
    
    3. Создаем директорию /home/newuser/newsite.ru и в ней три директории: cgi-bin (для файлов perl), htdocs (для html-файлов) и logs (для логов Apache от сайта)
    mkdir -p /home/newuser/newsite.ru/cgi-bin
    mkdir /home/newuser/newsite.ru/htdocs
    mkdir /home/newuser/newsite.ru/logs
    
    4. Задаем для директории /home/newuser/newsite.ru и всех её поддиректорий владельца newuser, группу newuser и права доступа 0755:
    chown -R newuser:newuser /home/newuser/newsite.ru
    chmod -R 0755 /home/newuser/newsite.ru
    
    5. Настраиваем конфигурацию виртуалхоста в Apache.
    Создаем или редактируем файл /usr/local/etc/apache22/Includes/newuser.conf - в этом файле будут храниться конфигурации виртуалхостов для всех сайтов пользователя newuser. Как вариант, можно использовать отдельный файл для каждого сайта, в этом случае в качестве названия файла целесообразно использовать доменное имя сайта, в нашем случае это /usr/local/etc/apache22/Includes/newsite.ru.conf . Создаем конфигурацию виртуалхоста для нашего сайта и записываем её в newuser.conf:
    <VirtualHost *:80>
            ServerName      newsite.ru
            ServerAlias     www.newsite.ru
            ServerAdmin     support@newsite.ru
    
            SuexecUserGroup newuser newuser
            AddHandler cgi-script .pl
    
            DocumentRoot /home/newuser/newsite.ru/htdocs
            <Directory /home/newuser/newsite.ru/htdocs>
                    Options Includes FollowSymLinks Indexes
    
                    AllowOverride All
                    Order allow,deny
                    allow from all
                    DirectoryIndex index.html index.shtml
            </Directory>
    
            ScriptAlias /cgi-bin/ "/home/newuser/newsite.ru/cgi-bin/"
            <Directory "/home/newuser/newsite.ru/cgi-bin">
                    AllowOverride None
                    Options None
                    Order allow,deny
                    Allow from all
            </Directory>
    
            ErrorLog "|/usr/local/sbin/rotatelogs /home/newuser/newsite.ru/logs/%Y-%m-%d-error 86400"
            CustomLog "|/usr/local/sbin/rotatelogs /home/newuser/newsite.ru/logs/%Y-%m-%d-access 86400" combined
    </VirtualHost>
    
    6. Перезапускаем Apache.
    7. Для добавления пользователю нового сайта, повторяем п.п.3-6, используя вместо newsite.ru доменное имя нового сайта.