Apache ubuntu настройка виртуальных хостов: Как настроить виртуальные хосты в Apache на Ubuntu 14.04 LTS – Как настроить виртуальные хосты в Apache на Ubuntu 16.04

Настройка виртуальных хостов Apache на ОС Ubuntu Server 13.04

В этой статье рассмотрим настройку виртуальных хостов web-сервера Apache на ОС Ubuntu Server 13.04. Это позволит нам создать несколько сайтов на одном сервере. Для этого нам понадобится следующее настроенный Web-сервер на ОС Ubuntu Server 13.04 совместно с FTP-сервером (все службы на одном сервере).

У нас имеется доменное имя localserver12.ru (будем использовать как основное), а также localserver34.ru и localserver56.ru. Наша задача – поднять такие имена:

  • www.localserver12.ru
  • subdomain.localserver12.ru (субдомен для второго сайта)
  • pma.localserver12.ru (субдомен для phpMyAdmin)
  • webserver.localserver12.ru (субдомен, по умолчанию для самого сервера)
  • www.localserver34.ru
  • subdomain.localserver34.ru
  • www.localserver56.ru
  • subdomain.localserver56.ru

Как настроить Web-сервер (LAMP), можно посмотреть здесь. Как настроить FTP-сервер ProFTPd – здесь. Настроить на FTP-сервере нужно будет только пользователя webmaster, остальных пользователей необходимости нет.

Также в DNS-сервер необходимо будет внести соответствующие A-записи. Если DNS необходимо настроить на своей территории, то можно воспользоваться любой из этих статей (в зависимости от используемой операционной системы):

Первым делом — открываем файл /etc/apache2/ports.conf. В нём прописываем следующие строки (если они существуют, то прописывать не надо, если закоментированы — раскоментировать):

ServerName webserver.localserver12.ru

NameVirtualHost *:80

Listen 80

После этого открываем файл /etc/apache2/apache2.conf и проверим, не закомментированы ли такие строчки (если закомментированы, нужно раскомментировать):

Include ports.conf

Include sites-enabled/

После этого открываем файл /etc/apache2/sites-available/default, стираем всё, что там есть и пропишем следующее:

<VirtualHost *:80>

ServerName webserver.localserver12.ru

ServerAdmin [email protected]

DocumentRoot /var/www/html

<Directory /var/www/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

<Directory /var/www/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName localserver12.ru

ServerAlias www.localserver12.ru

ServerAdmin [email protected]

DocumentRoot /var/www/vhosts/localserver12.ru/html

<Directory /var/www/vhosts/localserver12.ru/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/vhosts/localserver12.ru/cgi-bin/

<Directory /var/www/vhosts/localserver12.ru/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName pma.localserver12.ru

ServerAlias www.pma.localserver12.ru

ServerAdmin [email protected]

DocumentRoot /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName subdomain.localserver12.ru

ServerAlias www.subdomain.localserver12.ru

ServerAdmin [email protected]

DocumentRoot /var/www/vhosts/subdomain.localserver12.ru/html

<Directory /var/www/vhosts/subdomain.localserver12.ru/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/vhosts/subdomain.localserver12.ru/cgi-bin/

<Directory /var/www/vhosts/subdomain.localserver12.ru/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName localserver34.ru

ServerAlias www.localserver34.ru

ServerAdmin [email protected]

DocumentRoot /var/www/vhosts/localserver34.ru/html

<Directory /var/www/vhosts/localserver34.ru/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/vhosts/localserver34.ru/cgi-bin/

<Directory /var/www/vhosts/localserver34.ru/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName subdomain.localserver34.ru

ServerAlias www.subdomain.localserver34.ru

ServerAdmin [email protected]

DocumentRoot /var/www/vhosts/subdomain.localserver34.ru/html

<Directory /var/www/vhosts/subdomain.localserver34.ru/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/vhosts/localserver34.ru/cgi-bin/

<Directory /var/www/vhosts/subdomain.localserver34.ru/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName localserver56.ru

ServerAlias www.localserver56.ru

ServerAdmin [email protected]

DocumentRoot /var/www/vhosts/localserver56.ru/html

<Directory /var/www/vhosts/localserver56.ru/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/vhosts/localserver56.ru/cgi-bin/

<Directory /var/www/vhosts/localserver56.ru/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<VirtualHost *:80>

ServerName subdomain.localserver56.ru

ServerAlias www.subdomain.localserver56.ru

ServerAdmin [email protected]

DocumentRoot /var/www/vhosts/subdomain.localserver56.ru/html

<Directory /var/www/vhosts/subdomain.localserver34.ru/html>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /var/www/vhosts/subdomain.localserver56.ru/cgi-bin/

<Directory /var/www/vhosts/subdomain.localserver56.ru/cgi-bin>

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Следующий шаг – создаём на сервере все необходимые папки, которые соответствуют DocumentRoot из файла /etc/apache2/sites-available/default для всех сайтов. Желательно делать это с помощью FTP-клиента, например, FileZilla.

Подключившись по FTP с учётной записи webmaster, попадаем в папку /var/www (это из настроек FTP-сервера пользователя webmaster). И создаём папки:

/var/www/html

/var/www/cgi-bin

/var/www/vhosts

/var/www/vhosts/localserver12.ru

/var/www/vhosts/localserver12.ru/html

/var/www/vhosts/localserver12.ru/cgi-bin

/var/www/vhosts/subdomain.localserver12.ru

/var/www/vhosts/subdomain.localserver12.ru/html

/var/www/vhosts/subdomain.localserver12.ru/cgi-bin

/var/www/vhosts/pma.localserver12.ru

/var/www/vhosts/localserver34.ru

/var/www/vhosts/localserver34.ru/html

/var/www/vhosts/localserver34.ru/cgi-bin

/var/www/vhosts/subdomain.localserver34.ru

/var/www/vhosts/subdomain.localserver34.ru/html

/var/www/vhosts/subdomain.localserver34.ru/cgi-bin

/var/www/vhosts/localserver56.ru

/var/www/vhosts/localserver56.ru/html

/var/www/vhosts/localserver56.ru/cgi-bin

/var/www/vhosts/subdomain.localserver56.ru

/var/www/vhosts/subdomain.localserver56.ru/html

/var/www/vhosts/subdomain.localserver56.ru/cgi-bin

В папку html любого из сайтов заливаем HTML-страницы и PHP-скрипты, а в папку CGI-BIN – Perl/CGI скрипты.

Перезагружаем машину или вводим команду:

sudo service apache2 restart

Проверяем. Вписываем в адрес браузера (на другой машине в сети) все эти адреса. Если все они работают – значит всё сделано правильно.


Если Вам помогла статья, вы можете отблагодарить автора:
перечислить на WMR кошелёк (WebMoney): R301575071888
перечислить на Яндекс.Кошелёк: 410011003938168
или на PayPal:

Статьи по теме:

на Ваш сайт.

Виртуальные хосты создание нескольких сайтов на Ubuntu Server

Виртуальные хосты (virtualhost) в ubuntu настройка на веб сервере apache2. Настройка этой функции позволит держать несколько сайтов на одном компьютере. Для настройки потребуется виртуальная машина (VPS)  или же выделенный сервер (VDS) с установленной ubuntu server,  а также установленным apache. Запускаем putty, авторизуемся и начинаем создавать виртуальные хосты на apache2 следуя написанной ниже инструкции.

Виртуальные хосты на веб сервере Apache2: настройка

Для удобства переходим в дирректорию apache

cd /etc/apache2/sites-available/

создаем файл для первого виртуального хоста.К примеру будем использовать site1.local, второй сайт будет site2.local, но о нем чуть позже

sudo touch sites1.local

Теперь открываем первый virtualhost для сайта  sites1.local

sudo nano sites1.local

В нем прописываем следующий текст

[pwal id=»29171000″ description=»»] 
ServerName site1.local
ServerAlias site1.local www.site1.local
DocumentRoot /var/site1.local/www/

AllowOverride All

Нажимаем CTRL+O, чтобы сохранить изменения и CTRL+X, чтобы закрыть текстовый редактор nano, консольный текстовый редактор в Ubuntu. Теперь скопируем файл и отредактируем его, чтобы создать виртуальный хост на apache2 для второго сайта  site2.local

sudo cp sites1.local sites2.local
sudo nano sites2.local
ServerName site2.local
ServerAlias site2.local www.site2.local
DocumentRoot /var/site2.local/www/

AllowOverride All


где
servername — навание сайта
ServerAlias — синонимы сайта, то есть можно обращаться как с www так и без www
DocumentRoot — расположение файлов сайта
  — описание разрешений для файлов и каталогов сайта

Далее идем в каталог /var и создаем дирректории для сайтов

sudo mkdir -p ./site1.local/www
sudo mkdir -p ./site2.local/www

Ключ -p для mkdir нужен для рекурсивного создания каталогов, то есть сначала будет создан каталог site1.local, потом сразу каталог www.

Теперь создаем 2 тестовые странички в каждом из каталогов www для каждого сайта. Для первого сайта

sudo touch /var/site1.local/www/index.php
sudo nano /var/site1.local/www/index.php

в index.php пишем

Первый virtualhost для site1.local"
?>

далее копируем файл для site2.local

sudo cp /var/site1.local/www/index.php /var/site2.local/www/index.php
sudo nano /var/site2.local/www/index.php

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

Второй virtualhost для site2.local"
?>

Далее делаем сайты доступными, выполнив  команды

sudo a2ensite site1.local
sudo a2ensite site2.local

и перезапускаем apache

sudo service apache2 restart
или
sudo /etc/init.d/apache2 restart
кому как нравится )))

Теперь можно проверять. Я запускаю виртуальную машину с windows xp. Так как у нас не установлен dns-сервер, то необходимо прописать ip адреса сайтов в файле C:\WINDOWS\system32\drivers\etc\hosts

Открываем его в текстовом редакторе и в конец дописываем строки

192.168.3.1   site1.local
192.168.3.1   site2.local

192.168.3.1 — адрес вашего веб-сервера, если у вас другой, то указываете его.

Запускаем браузер и набираем адреса сайтов, как видно — все работает на сервере настроен виртуальный хост на apache2

 

Настройка виртуальных хостов в Apache на Ubuntu Linux 7.10

Итак, что у нас есть? Есть Ubuntu Linux а также свежеустановленный Apache, MySQL, PHP. Тестировать свои сайты мы можем по адресу http://localhost. Но что делать, если нам надо несколько отдельных хостов. В сервере Apache есть возможность обслуживать несколько виртуальных хостов на одной машине. Рассмотрим это чуть подробнее…

В результате нижеприведенных действий мы получим кроме хоста localhost еще и localhost1 и localhost2.

Первым делом в домашнем катологе (у меня /home/roman) создадим два каталога для новых виртуальных хостов:

cd ~
mkdir localhost1
mkdir localhost2

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

Дальше редактируем файл /etc/apache2/sites-available/default:

gksudo gedit /etc/apache2/sites-available/default

В нем есть определение хоста localhost:

Добавим в конец файла следующие строки:

<VirtualHost *>
ServerName localhost1
DocumentRoot /home/roman/www/localhost1
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/roman/www/localhost1>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost *>
ServerName localhost2
DocumentRoot /home/roman/www/localhost2
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/roman/www/localhost2>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Сохраним файл.

Перезапустим Apache2

sudo /etc/init.d/apache2 restart

В файле /etc/hosts ищем строку наподобие:

127.0.0.1 localhost tuzn

добавляем имена новых хостов. Получаем что-то вроде:

127.0.0.1 localhost tuzn localhost1 localhost2

Все готово. Доступ к новым хостам: http://localhost1 и http://localhost2

Примечание для новичков: имена директорий и названия хостов могут быть разными.

Базовая установка и настройка веб-сервера

Решил оформить наконец своё HOW-TO на форуме в нашей вики, т.к. это правильнее и форматирование здесь удобнее. Я постарался изложить материал кратко, намеренно упустив подробности, которые не относятся напрямую к сути (вроде того, что конфиги сервера нужно править от рута). Считаем, что читатель имеет базовый уровень работы с линукс-системами.

Выполнив этот раздел, вы получите базовый, работающий веб-сервер

Установка

apt-get install lamp-server^ phpmyadmin
lamp-server^ — поставит базовый набор lamp (Linux Apache Mysql PHP).

phpmyadmin — веб-интерфейс для управления БД MySQL.

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

Настройка Apache

Персональные настройки

FIXME Начиная с версии Ubuntu Saucy (13.10) свои настройки следует писать в /etc/apache2/conf-available, активировать настройки следует с помощью команды a2enconf.

Свои настройки следует писать в /etc/apache2/conf.d, т.е. создать там файл, например, myconf.conf и определить в нём свои настройки.

## Файл персональных настроек веб-сервера Apache

## Чтобы устранить предупреждение при перезапуске Apache (хотя в целом на производительности это не отразится)
ServerName localhost

## Для того, чтобы Apache интерпретировал php и не предлагал сохранить php-файл
AddType application/x-httpd-php .php .phtml

## Установка кодировки UTF-8 по умолчанию
AddDefaultCharset UTF-8

Для того, чтобы так же работали файлы php, которые начинаются с «<?» вместо «<?php» нужно, чтобы в /etc/php5/apache2/php.ini было short_open_tag = On

После внесения изменений в конфиги Apache, его нужно перезапустить, чтобы измнения вступили в силу

service apache2 restart

Настройка виртуальных хостов

Есть несколько способов, я же расскажу о том как повесить несколько виртуальных хостов на один IP c доступом к ним по имени сервера.

127.0.0.1    host2.server1 host1.server1

и создаём там файлы, названиями которых будут названия, создаваемых серверов, например host1.server1.conf и host2.server1.conf в эти файлы пишем (здесь показано простейшее, подробнее можно заценить в файле default):

<VirtualHost *:80>
    ServerName host1.server1
    DocumentRoot /var/www/host1.server1
    <Directory /var/www/host1.server1>
        AllowOverride All
    </Directory>
</VirtualHost>
<VirtualHost *:80>
        ServerName host2.server1
        DocumentRoot /var/www/host2.server1
        <Directory /var/www/host2.server1>
                AllowOverride All
        </Directory>
</VirtualHost>
a2ensite host1.server1 host2.server1

Удаляются симлинки таким же образом командой a2dissite

http://host1.server1
http://host2.server1

Этот раздел применять не обязательно, у вас уже всё работает после 1-го раздела. Однако вы можете найти здесь что-то полезное. Я рекомендую не обделить вниманием ускорение (opcode cacher)

Ускоряем сервер (Opcode Cacher)

Акселератор PHP — программа, ускоряющая исполнение сценариев PHP интерпретатором путём кэширования их байткода.

http://ru.wikipedia.org/wiki/Акселератор_PHP

Не устанавливайте сразу несколько акселераторов PHP, это не даст никакого результата. Начиная с версии PHP 5.5 в интерпретатор по умолчанию включён Zend OPcache. В этой связи, а также потому что данная статья описывает базовую настройку, из неё убраны описания установки php-apc и php-xcache

Выключаем автозапуск apache2 и mysql

ВАМ ЭТО ДЕЙСТВИТЕЛЬНО НУЖНО? Эти демоны стартуют в родной для себя среде в разы быстрее чем денвер в винде, думаю от 1 сек к времени загрузки ОС и 10 мб ОЗУ вам хуже не станет, а лишних телодвижений не будет…

Выключаем автозапуск Apache:

sudo update-rc.d -f apache2 remove

Выключаем автозапуск MySQL:

sudo nano /etc/init/mysql.conf

комментируем строки:

start on (net-device-up
          and local-filesystems
          and runlevel [2345])

т.е. должно быть так:

#start on (net-device-up
#          and local-filesystems
#          and runlevel [2345])

Разрешаем подключение к MySQL из Мира

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

по умолчанию mysql не принимает tcp соединения т.к. прослушивает только 127.0.0.1

/etc/mysql/my.cnf

#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

Самое простое — просто закомментировать эту строку.

Кроме этого требуется добавить пользователя, который с разных мест и из разных программ может соединяться с базой, например «admin»:

GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY 'my_admin_password' WITH GRANT OPTION;

Добавить комментарий

Ваш адрес email не будет опубликован.