По умолчанию после установки Apache создается виртуальный хост с именем localhost. Я расскажу как добавлять новые виртуальные хосты в Apache.
Я создам виртуальный хост с именем myhost (вместо myhost вы можете выбрать любое имя, которое вам захочется).
Сначала нужно создать каталог, в котором будут находиться файлы будущего сайта. Создайте в своем домашнем каталоге директорию myhost. Чтобы это сделать можно выполнить команду:
mkdir ~/myhost
Директорию можно создавать где угодно, я для простоты создал ее в корне своей домашней директории yuriy.
Создаем конфигурационный файл хоста
В каталоге /etc/apache2/sites-available хранятся конфигурационные файлы виртуальных хостов Apache. По умолчанию там хранится файл default, который соответствует хосту localhost. Мы возьмем за основу файл default и скопируем его в файл с именем myhost. Для этого выполните следующие команды:
cd /etc/apache2/sites-available
sudo cp default myhost
Теперь отредактируем файл myhost. Откройте его в редакторе (например, в редакторе Gedit), выполнив команду:
sudo gedit myhost
Внесите в файл соответствующие изменения. В частности пропишите путь до директории, в которой будут храниться файлы хоста. В нашем случае это путь /home/yuriy/myhost, где yuriy вы должны заменить на название вашей домашней директории. Путь нужно прописать в двух местах: у параметра DocumentRoot и в заголовке секции <Directory /home/yuriy/myhost>. В самом начале файла (на второй строке) обязательно пропишите строку «ServerName myhost». Вот пример того, как должен выглядеть ваш файл myhost:
<VirtualHost *:80>
ServerName myhost
ServerAdmin webmaster@localhost
DocumentRoot /home/yuriy/myhost
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/yuriy/myhost>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel debug
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Теперь нам нужно сделать наш хост активным. Apache использует каталог /etc/apache2/sites-enabled для определения хостов, которые нужно включить. Создадим символьную ссылку в каталоге sites-enabled, указывающую на наш файл myhost. Для этого выполните команды:
cd ../sites-enabled
sudo ln -s ../sites-available/myhost myhost
Перезапускаем Apache
Перезапустите Apache, выполнив команду:
sudo /etc/init.d/apache2 restart
Редактируем /etc/hosts
Осталось отредактировать файл /etc/hosts. В нем прописывается соответствие IP адреса имени хоста. То есть это своего рода локальный DNS. Чтобы открыть файл, выполните следующую команду:
sudo gedit /etc/hosts
В файле после адреса 127.0.0.1 допишите название своего виртуального хоста. В моем случае это myhost.
127.0.0.1 localhost myhost
Заключение
На этом настройка виртуального хоста Apache с именем myhost закончена. Теперь к нему можно обратиться в браузере, набрав адрес http://myhost.
Комментарии
19:06
23:58
Кстати, чтобы сделать хост активным, я воспользовался командой
sudo a2ensite myhost
19:30
21:24
01:46
ServerName myhost
10:12
16:00
пример sudo chmod -R 777 /var/www/
09:57
~ $ nano php.php
С простым содержимым:
И запустим его:
~ $ /usr/bin/php php.php
На выводе мы увидим:
Hello, World
Потому, что интерпретатор указан явно. Он просто считал содержимое файла и выполнил команду.
Если это же скрипт мы хотим выполнить так:
~ $ ./php.php
То консоль скажет:
bash: ./php.php: Отказано в доступе
Потому, что
1) Файл не исполняемый;
2) Не указан интерпретатор;
Сделаем файл исполняемым:
~ $ chmod +x php.php
И запустим:
~ $ ./php.php
Вывод будет снова нехорошим:
./php.php: line 1: syntax error near unexpected token `('
./php.php: line 1: `'
Произошло это потому, что не указан интерпретатор и bash воспринял наш файл php.php как скрипт на языке bash. Конечно же будет ошибка синтаксиса.
Теперь немного изменим файл:
~ $ nano php.php
#!/usr/bin/php
И запустим снова:
~ $ ./php.php
На выхлопе мы видим:
Hello, World
Все получилось благодаря тому, что мы указали интерпретатор в начале программы и дали файлу права на исполнения. PHP скрипты из WEB запускаются системой так, что система уже знает, какой необходим интерпретатор (модулем ли Apache обрабатывается код, или php-cgi программой). Потому, ни строки с указанием интерпретатора, ни прав на исполнение этим скриптам не нужно.
09:59
<?
php print ("Hello, Worldn");
?>
Код во втором случае:
#!/usr/bin/php
<?
php print ("Hello, Worldn");
?>
----
Сайт на фиг порезал PHP код.
10:00
Код во втором случае:
#!/usr/bin/php
----
Да ё-моё! Вот так.
09:52
<?php
SomeCode
?>
---
Проверка работы фильтра.
16:19
ServerName myhost
ServerAdmin webmaster@localhost
DocumentRoot /home/yuriy/myhost
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ErrorLog /var/log/apache2/error.log
LogLevel debug
CustomLog /var/log/apache2/access.log combined
14:36
19:14
17:04
#!/bin/bash
# nautilus ~/.gnome2/nautilus-scripts
#Создаём настройки сайта в Ahache2
echo -n "Введите имя создаваемого хоста: "
read newHost
#Производим запись в /etc/hosts
file="/etc/hosts"
b=$(cat $file)
newContent="127.0.0.1 ${newHost} www.${newHost}"$'n'$b
sudo bash -c "echo '${newContent}' > $file"
#Добавляем сайт в sites-available и прописываем в него нужные директивы
sap=/etc/apache2/sites-available/$newHost
sudo touch $sap
sudo chmod 777 $sap
directives="
ServerName ${newHost}
ServerAlias ${newHost} www.${newHost}
DocumentRoot /var/www/${newHost}
AllowOverride All
ErrorLog /var/www/${newHost}/logs/error.log
"
echo "$directives">$sap
#Создаём каталог сайта и файл отчётов в каталоге сайта
mkdir /var/www/${newHost} /var/www/${newHost}/logs/
> /var/www/${newHost}/logs/error.log
#Создаём страницу
index=" ${newHost}
Страница создана автоматически для сайта ${newHost}
"
echo "$index"> /var/www/${newHost}/index.html
#Включаем виртуальный хост
sudo a2ensite $newHost
#Перезагружаем настройки
sudo /etc/init.d/apache2 reload
#Включаем rewrite
#sudo a2enmod rewrite
#sudo /usr/sbin/apache2ctl restart
BROWSER="firefox"
#как будем открывать страницу: new-window - новом окне, new-tab - в новой вкладке:
OPENURL="new-tab"
URL="http://${newHost}"
#Проверяем, запущен ли браузер:
if ps aux | grep firefox | grep -v grep > /dev/null;
then exec $BROWSER -remote "openurl($URL, $OPENURL)"; #если запущен
else exec $BROWSER $URL; #если НЕ запущен
fi
13:16
Сайт http://grechuho.by работает, а если ввожу www.grechuho.by (и некоторые барузеры так автоматом пишут), то страница не найдена (( ЧТо делать? В файле etc/hosts прописывала И grechuho.by И www.grechuho.by не помогло...
08:00
ServerAlias myhost www.myhost
?
13:24
02:45
10:51
12:28
Виртуальный хост делал по данной статье.
21:11
14:02
17:47
Создал каталоги, добавил хост, всё найс.
Тестовая страничка заработала, думаю вообще найс)
И тут скопировал сайт (чтобы дописать его) и вместо того чтобы видеть всё как есть, ни одна ссылка не работает, нет ни одной картинки и т.п. в чём проблема?(
08:43
08:50
07:40
18:47
cd ../sites-enabled
выдает ошибку:
-su: cd: ../sites-enabled: Нет такого файла или каталога
Как исправить? подскажите пожалуйста
19:39
cd ~
А потом
cd /etc/apache2/sites-enabled
11:11
22:25
08:22
09:46
127.0.0.1 localhost myhost
Очень важный момент я на нем споткнулся
18:49