Настройка LAMP (Linux, Apache, MySQL, PHP) на ubuntu.

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

Начинаем с установки пакетов

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"

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *