В интернетах сто тысяч пятьсот статей на эту тему, но я сделаю еще одну, чтобы лично мне было удобно, потому что читая другие мануалы, я не всегда понимаю как это все работает.
Начинаем с установки пакетов
sudo apt-get install php5 apache2 mysql-server php5-mysql libapache2-mod-php5
А вот теперь идем конфигурировать все это.
Во-первых, я не работаю с директорией, куда ссылается апач по умолчанию, потому что там есть некоторый геморой с правами, если вас это не сильно пугает, то можете все оставить как есть. Я сделал паку my_sites в домашней папке
Копируем файл настроек apache в ту же папку
sudo cp /etc/apache2/sites-available/default.conf /etc/apache2/sites-available/mysite.conf
default может называться и иначе, например, у меня был назван 000-default.conf. Затем откроем файл mysites.conf
sudo gedit /etc/apache2/sites-available/mysite.conf
изменяем строчку
DocumentRoot /var/www/html
на
DocumentRoot /home/{YOUR_NAME}/my_sites
{YOUR_NAME} — это имя вашего пользователя в системе.
Укажем апачу использовать новый конфигурационный файл
a2dissite default.conf && sudo a2ensite mysite.conf
Далее. Открываем основной конфигурационный файл apache2
sudo gedit /etc/apache2/apache2.conf
И добавим следующее:
<Directory /home/{YOUR_NAME}/my_sites/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
Перезапустим apache
sudo service apache2 restart или sudo /etc/init.d/apache2 restart
Если бы работа шла только над одним сайтом, то все отлично, открываем в браузере localhost, предварительно в папку /home/{YOUR_NAME}/my_sites добавим файлик index,php и увидим работу этого файлика. Но я веду сразу несколько проектов на локальной машине, для этого создадим файл хостов.
sudo touch /etc/apache2/sites-available/vhosts.conf
И отредактируем его
sudo gedit /etc/apache2/sites-available/vhosts.conf
Теоретически можно не создавать файл, а сразу его открыть на редактирование.
Добавим туда виртуальные хосты, например, для 2х сайтов dev1.my и dev2.my. Вписываем в vhosts.conf следующие параметры
<VirtualHost *:80> ServerName dev1.my ServerAlias www.dev1.my DocumentRoot /home/{YOUR_NAME}/my_sites/dev1.my </VirtualHost> <VirtualHost *:80> ServerName dev2.ru ServerAlias www.dev2.ru DocumentRoot /home/{YOUR_NAME}/my_sites/dev2.ru </VirtualHost>
Не забываем создать 2 папки dev1.my и dev2.my в /home/{YOUR_NAME}/my_sites.
Но, например, если нам нужно чтобы исполнялись cgi скрипты, нужно в vhosts писать так
<VirtualHost *:80> ServerName dev1.ru ServerAlias www.dev1.ru DocumentRoot /home/{YOUR_NAME}/my_sites/dev1.ru ScriptAlias /cgi-bin/ /home/{YOUR_NAME}/my_sites/dev1.ru/cgi-bin/ <Directory "/home/{YOUR_NAME}/my_sites/dev1.ru/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted </Directory> </VirtualHost>
Теперь в папку /home/{YOUR_NAME}/my_sites/dev1.ru/cgi-bin складываем наши cgi скрипты.
При перезагрузке apache у вас скорее всего будет появляться ошибка такого содержания:
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Лечиться добавление в самом начале файла vhosts.conf одной строки
ServerName localhost
А чтобы это все заработало нужно в папку /etc/apache2/sites-enabled положить символьную ссылку на vhosts.conf следующей последовательностью команд
cd /etc/apache2/sites-enabled/ sudo ln -s ../sites-available/vhosts.conf
Перезапустим сервер апач.
Вот собственно и все.
Если не заработал .htaccess
Во-первых, проверьте, чтобы в файле /etc/apache2/apache2.conf параметр AllowOverride был установлен в значение All.
И, во-вторых, включим необходимый модуль
sudo a2enmod rewrite
Необязательная настройка домашней директории
Нижеследующее подлежит строгой оценке и критике, в целом выполнение не обязательно, но может натолкнуть на светлую мысль и пощадить ваши нервы.
Могут возникнуть проблемы с правами доступа к файлам, например wordpress не захочет закачивать плагины из репозитория, вся причина в том, что права на папку указаны от вашего имени, а вот php запускается от www-data, и он ничего не может менять в ваших файлах, чтобы исправить эту ситуацию, нужно либо изменить права на файлы, установив 777, что не очень-то хорошо, на мой вкус:
# перейдем в папку с проектами cd ~/my_sites # изменим права на файлы sudo find dev1.my/ -type f -exec chmod 777 {} \; # изменим права на папки sudo find dev1.my/ -type d -exec chmod 777 {} \;
Либо изменить хозяина файлов, это как-то правильнее, опять же на мой вкус:
cd ~/my_sites sudo chown -R www-data:www-data dev1.my/ # а чтобы мы могли изменять файлы этого пользователя, добавимся в группу www-data sudo usermod -a -G www-data {YOUR_NAME} # только права на фалы выставим 664 sudo find dev1.my/ -type f -exec chmod 664 {} \;
Установка и настройка PhpMyAdmin
Поскольку, мы люди ленивые, а MySQL из консоли это та еще забава, нам нужен PhpMyAdmin:
sudo apt-get install phpmyamin
И по адресу localhost/phpmyadmin мы ожидаем увидеть заветную панель, если ее нет, делаем вот так
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf
А чтобы файл в базу можно было залить любого размера, а не только 2Мб, идем в /etc/php5/apache2/php.ini и ищем там параметр upload_max_filesize и post_max_size, но их значение не может превышать memory_limit
Дополнительные настройки сервера
в /etc/php5/apache2/php.ini
# Временная зона date.timezone = "Europe/Moscow"