Настройка виртуальных хостов 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
Как настроить 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^ phpmyadminlamp-server^ — поставит базовый набор lamp (Linux Apache Mysql PHP).
phpmyadmin — веб-интерфейс для управления БД MySQL.
Иногда при копипасте кода установки может вылезать ошибка, что какой-то пакет не найден. На самом деле все правильно, просто глюк копипаста. Решение вбить руками команду или попробовать стереть название проблемного пакета вместе с пробелами по краям и вбить руками только его.
Настройка Apache
Персональные настройки
Начиная с версии 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 admin@"%" IDENTIFIED BY 'my_admin_password' WITH GRANT OPTION;