Начнем с установки. Перед установкой веб сервера обновим систему. Обновим список репозиториев и произведем поиск индексов обновленных версий программ, драйверов, ядра и всего прочего
sudo apt-get update
Далее установим все доступные обновления
sudo apt-get upgrade
После этого приступим к установке apache2 и php5
sudo apt-get install apache2
sudo apt-get install php5
Для проверки успешности установки веб-сервера введите в браузере - http://127.0.0.1
Сервер должен вернуть сообщение похожее на - "It`s work". Далее нужно включить поддержку
php5 в apache. Для этого установим необходимый пакет с последующим включением модуля:
sudo apt-get install libapache2-mod-php5
sudo a2enmod php5
Без этого пакета при обращении к вашему сайту (предполагается, что в корне лежит индексный php-файл), веб-сервер будет предлагать вам сохранить копию корневого php-файла.
Теперь займемся созданием нашего тестового сайта - test.ru
Во первых - определим корневую директорию нашего сайта. По умолчанию после установки apache2 в ubuntu server будет создан default сайт, с корнем в /var/www
В его недрах будет лежать тот самый html-файл, который возвращает сообщение о работоспособности нашего веб-сервера. Давайте займем его место. Для этого нужно перейти в раздел - /etc/apache2/sites-available:
cd /etc/apache2/sites-av*
и далее создать файл конфигурации для нашего сайта (я использую редактор nano)
sudo nano test
В нем пропишем на первых порах следующие настройки:
<VirtualHost *:80>
DocumentRoot /var/www/
ServerName test.ru
ServerAdmin test@gmail.com
<Directory /var/www/>
DirectoryIndex index.php
AllowOverride All
</Directory>
<FilesMatch "^\.ht">
Order allow,deny
Allow from all
Satisfy All
</FilesMatch>
</VirtualHost>
Сохраняем внесенные настройки. Далее деактивируем первоначальный сайт и активируем наш тестовый сайт
sudo a2dissite default && sudo a2ensite test.ru
Для предупреждения такого рода ошибки
apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
нужно либо в свой файл настроек, либо в /etc/apache2/httpd.conf, либо в /etc/apache2/conf.d, создать свой файл настроек, и вписать туда
ServerName localhost
Я выбрал второй вариант. Также сюда можно поместить и такие настройки
## Для того, чтобы Apache интерпретировал php и не предлагал сохранить php-файл
AddType application/x-httpd-php .php .phtml
## Установка кодировки UTF-8 по умолчанию
AddDefaultCharset UTF-8
Но это можно будет сделать и в .htaccess. Далее внесем имя сайта в список хостов сервера
sudo nano /etc/hosts
и впишем через пробел имя нашего сайта
127.0.0.1 localhost test.ru
Далее очищаем директорию /var/www и создаем корневой php-файл - index.php - вот с таким содержимым:
<?php
phpinfo();
?>
Перезагружаем apache
sudo /etc/init.d/apache2 restart
Пробуем обратиться по адресу http://test.ru в веб браузере и если все сделано правильно, на выходе должен появиться массив сообщений о текущих настройках php. Кстати файл настроек php лежит в директории (помним, что в нашем случае php собран как модуль apache)
/etc/php5/apache2/php.ini
Далее создаем файл .htaccess в той же директории, где расположен index.php и добавляем в него следующие правила (так как в файле конфигурации в Directory указано - AllowOverride All, значит .htaccess будет переопределять все директивы apache)
AddDefaultCharset utf8
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/(.*)$ index.php?path1=$1&var=2¶m=%{QUERY_STRING} [L]
RewriteRule ^([a-zA-Z0-9]*)$ index.php?path1=$1&var=1¶m=%{QUERY_STRING} [L]
Для проверки работы данных правил добавим в index.php следующие строчки
<?php
echo 'test.ru';
echo '</br>';
print_r($_REQUEST);
?>
Теперь пробуем набрать в адресной строке браузера http://test.ru/tester/?p=16
Если все хорошо, значит на выходе должны получить следующее сообщение:
test.ru
Array ( [path] => tester [var] => 2 [param] => p=16 )
Если же будете получать 500 ошибку (internal server error), то либо вы допустили синтаксическую ошибку, либо у вас не задействован модуль mod_rewrite. Для диагностики можно попробовать поправить правила в htaccess следующим образом
AddDefaultCharset utf8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^([a-zA-Z0-9]+)/(.*)$ index.php?path1=$1&var=2¶m=%{QUERY_STRING} [L]
RewriteRule ^([a-zA-Z0-9]*)$ index.php?path1=$1&var=1¶m=%{QUERY_STRING} [L]
</IfModule>
Если данная ошибка пропадет, но правила все также не будут работать, значит у вас точно не включен нужный модуль. Включаем данный модуль
sudo a2enmod rewrite
И снова проверяем работу правил htaccess. Все должно непременно заработать.
Если после настройки веб-сервера, что-то все-таки будет работать некорректно, стоит переустановить apache. Для его удаления введите команду
sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common
И не забудьте очистить/удалить следующие директории
/etc/apache2
/var/www
Также стоит отметить, если на сервере не поднят DNS-сервер, тогда обращение к нашему тестовому сайту будет напрямую через его ip-адрес - http://XX.XX.XX.XX, чтобы все-таки стучаться к нему по его имени, стоит либо поднять DNS-службу, либо прописать на конечном компе - откуда вы будете стучаться - в хостах соответствие ip сервера его имени
XX.XX.XX.XX test.ru
Для Win32/64 как правило данное соответствие расположено в директории
C:\Windows\System32\drivers\etc\hosts
Всем удачи :)