Установка Apache2, PHP5 и MySQL в Ubuntu 11.04
Когда-то давно я уже писал о всемогучем и всеми известном LAMP, эта статья тут. Сейчас думаю пора освежить свои знания. Давайте рассмотрим самую базовую и самую простую задачу, установить три компонента (Apache2, PHP5 и MySQL) на вашу свежую Ubuntu 11.04 и ораганизовать “быстрый” Web-сервер. Здесь стоит напомнить, что Apache2 это один из самых популярных серверов, с большими возможностями, такими как: кросплатформенность (свой первый Apache-сервер я завел под Windows), надёжность и гибкость конфигурации (httpd.conf и .htaccess), возможность подключать внешние модули для предоставления данных, механизм виртуальных хостов, интеграция с другим ПО и языками программирования и многое-многое другое. Прочиать больше вы можете конечно же в Wikipedia – Apache2. Как установить и настроить Apache2, PHP5 и MySQL в Ubuntu 11.04 (LAMP) читайте под катом.
LAMP
LAMP — это набор серверных программ. Данная реализация веб сервера является наиболее популярной в Интернете на сегодняшний день.
Компоненты LAMP:
Linux — ОС Linux;
Apache — Web-сервер;
MySQL — база данных;
PHP — язык программирования, используемый для создания веб-приложений.
Кстати есть еще одно название, очень популярное, это BAMP, где B это BSD система, т.е. Unix.
Установка LAMP в Ubuntu 11.04
Начнем с СУБД MySQL:
Система попросит вас ввести логин и пароль для учетной записи рута:
New password for the MySQL “root” user: < -- вашRootПарольДляMySQL
Repeat password for the MySQL "root" user: <-- вашRootПарольДляMySQL
Убедитесь, что MySQL запущена:
ps -ef | grep mysql mysql 5478 1 1 15:41 ? 00:00:00 /usr/sbin/mysqld
ps -ef | grep mysql mysql 5478 1 1 15:41 ? 00:00:00 /usr/sbin/mysqld
Поставим Apache2:
Убедитесь, что Apache2 запущен:
ps -ef | grep apache2 root 5974 1 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start www-data 5977 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start www-data 5979 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start www-data 5980 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start
ps -ef | grep apache2 root 5974 1 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start www-data 5977 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start www-data 5979 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start www-data 5980 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start
проверить работу вы можете пройдя по адресу http://localhost/
Установка PHP5:
Рестартуем Apache2:
Помним, что document root по умолчанию в Ubuntu получается вот тут /var/www/, там же лежит дефолтная HTML страничка, которую мы увидели по адресу http://localhost/.
Стандартная проверка PHP5 на работоспособность, это создания тестого php файла в document root, т.е. в /var/www/. Кстати, если вам, как и мне не нравится местрасположения дефолтной директории, ее можно будет сменить, но это чуток позже.
Создаем файл:
Туда пишем:
Любуемся результатом перейдя в браузере по адресу http://localhost/info.php

Поддержка MySQL в PHP5:
apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xslapt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
И снова рестарт серверу:
И любуемся на результат, т.е. обновите страничку info.php и найдете теперь там раздел о поддержке MySQL.

Поздравляю, с установкой покончено, осталось только доставить один удобный елемент, это phpmyadmin, для удобной работы с базами данных:
По ходу установки вам зададут пару вопросов:
Web server to reconfigure automatically: < -- apache2
Configure database for phpmyadmin with dbconfig-common? <-- No
Далее смотрим на результат http://localhost/phpmyadmin
Логин это root, пароль вы задовали, когда ставили СУБД MySQL.
Если вы ничего не увидели, то сделайте символьную ссылку (я этого не делал):
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf sudo /etc/init.d/apache2 restart
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf sudo /etc/init.d/apache2 restart
Вот это PhpMyAdmin – программа управлениея базами данных, созданием, редактированием, бэкапами.

Конфигурация и настройка LAMP
1) httpd.conf
Вся конфигурация и настройка сервера Apache2 осуществляется через файл — httpd.conf httpd.conf — содержит директивы, управляющие работой сервера, работой виртуальных хостов и т.д.
Стоит отметить, что окрыв файл /etc/apache2/httpd.conf вы обнаружете, что он пуст, так и есть, настройки сервера лежат в /etc/apache2/apache2.conf, меня это не напрягает, есть люди которых это выбешивает, и они переименовывают apache2.conf в httpd.conf. Кому как нравится.
2) .htaccess
Еще один важный конфигурационный файл .htaccess — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.
.htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Возможность использования .htaccess в том или ином каталоге указывается в httpd.conf (директива AllowOverride).
Файл используется для настроек доступа катологов, авторизации и аутентификации а так же для изменения URL-адресов.
3) .htpasswd
.htpasswd — файл, содержащий пароли для доступа к ресурсу у веб-сервера Apache. Метод авторизации с использованием такого файла носит название базового (англ. basic authentication).
День в армии подошёл к концу и мне пора домой, продолжение следует…
Структура Web-сервера
У каждого уважающего себя Web-сервера должна быть правильная структура, я имею ввиду не структуру прикладной программы Apache, а структуру папок и катологов, виртуальных хостов, расположения логов и их ротация. Я приведу простой, но в то же время самый популярный пример схематично (мой хостер использует именно такую структуру)

Здесь всё просто, существует головной каталог /home/ в нем распологаются каталоги пользователей.
Условия:
- Каждый пользователь получает доступ к каталогу по FTP и http протоколам
- Каждый пользователь заперт в своем домашнем каталоге и не может подняться на уровень выше в условиях FTP & http
- У каждого пользователя есть скрытая папка admin доступ к которой он может получить только по средствам аутентификации по логину и паролю
- У каждого пользователя есть папка logs в которой ведуться все его логи.
- Для Apache существует отдельная папка logs где ведуться логи
- Раз в неделю должна производится роатация логов
На заметку:
Про FTP читайте тут.
Про ротацию логов я тоже уже писал.
Про аутентификацию для Apache можно читать здесь.
В файле /etc/apache2/apache2.conf вы можете подключить модули, настроить работу файлов .htaccess, указать от какого пользователя и какой группы запускать сервер, указать каталог ServerRoot, куда будут складироваться логи и где будут находится логи сервера, все строчки файла хорошо прокоментированны (англ.) но в сети вы можете найти подробные переводы, это не новость.
Я обращу внимание на настройки видимости .htaccess, откройте файл /etc/apache2/apache2.conf:
Найдите там следующие строки и проследите, что-бы они остались раскомментированными:
.... AccessFileName .htaccess <files ~ "^\.ht"> Order allow,deny Deny from all Satisfy all </files> ....
....
AccessFileName .htaccess
<files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy all
</files>
....Как результат:

Логи расположены вот тут /var/log/apache2/.
Тут все банально, лог access.log содержит в себе всю инфу о соединения которые были установленны с сервером.
Лог error.log содержит в себе всю инфу об ошибках. Я уже говорил, что вы можете поменять расположения логов в файле apache2.conf.
/etc/apache2/sites-available/default – очень важный файл, в нем происходит настройка виртуальных хостов сервера.
Но об Виртуальных Хостах в Apache мы поговорим позже, сейчас я предлагаю избрать немного другой путь. И настроить локальный сервер для обслуживания нескольких сайтов без использования VirtualHost в Apache. Метод не самый правильный, но у него есть свои плюсы.
Вы можете сделать так, в вашей RootDocument, сделать папки /wordpress , /drupal/ , /joomla , /logs , /other и установить соостветсвующие сайты в эти директории.
Теперь обратившись в браузере по адресу: http://localhost/drupal/ вы увидите ваш сайт на Drupal, а перейдя по адресу http://localhost/wordpress/ вы увидите ваш сайт на WordPress. Это удобно, вы можете иметь бесконечное колличество сайтов, и работать с ними одновременно.
Вот как это будет выглядеть (кликабельно)
При этом у вас будет только один виртуальный хост. Настройки просты:
Вот минимальное содержание:
<virtualhost *:80> ServerAdmin localhost DocumentRoot /var/www/users/ #Тут лежат все сайты <directory></directory> Options FollowSymLinks AllowOverride None #Logs #Где лежат логи ErrorLog /var/www/users/logs/error.log CustomLog /var/www/users/logs/access.log combined Alias /doc/ "/usr/share/doc/" <directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </directory> </virtualhost>
<virtualhost *:80>
ServerAdmin localhost
DocumentRoot /var/www/users/ #Тут лежат все сайты
<directory></directory>
Options FollowSymLinks
AllowOverride None
#Logs #Где лежат логи
ErrorLog /var/www/users/logs/error.log
CustomLog /var/www/users/logs/access.log combined
Alias /doc/ "/usr/share/doc/"
<directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</directory>
</virtualhost>После конфигурации файла, перезапустите Apache и приступайте к работе.







ASLok
Posted on Воскресенье 5th Июнь, 2011, 11:53пп
sudo aptitude install mysql-server phpmyadmin
user
Posted on Вторник 7th Июнь, 2011, 7:34пп
тег не сработал(
ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
/etc/init.d/apache2 restart
Дмитрий
Posted on Вторник 7th Июнь, 2011, 8:17пп
Статья очень полезна и довольно понятна не опытному пользователю, огромное спасибо автору!!!
kirill
Posted on Среда 8th Июнь, 2011, 12:12дп
глупый вопрос, но что дальше делать, как вывести созданную страничку в свет?
admin
Posted on Среда 8th Июнь, 2011, 3:16пп
to kirill: Все просто, перейди в браузере по адресу http://localhost/ , страничку (будь то index.php или index.html) нужно положить в /var/www/
admin
Posted on Среда 8th Июнь, 2011, 3:17пп
За тег прошу прощения, по мере появления я работаю на шаблоном, хочу реализовать некоторые свои идеи, по факту сейчас шаблон работает в тест-режиме =)
nik
Posted on Среда 22nd Июнь, 2011, 4:40пп
здравствуйте у меня стоит ubunta 11.04, установил LAMP, при загрузке в браузере файла php.ini, браузер мазила выдает следующее – “вы собираетесь открыть файл info.php являющийся сценарий php из http://localhost” – что делать???
admin
Posted on Вторник 28th Июнь, 2011, 7:42пп
А зачем ты открываешь в браузере файл php.ini ?? В статье написано, что нужно открывать файл info.php
Антдрей
Posted on Пятница 8th Июль, 2011, 6:00дп
Статья отличная, давно не настраивал веб-сервер и уже не помню всего, а тут четко, как в собственной заметке.
Коля
Posted on Воскресенье 10th Июль, 2011, 4:17пп
у меня при localhost/info.php идет скачка файла, видимо что-то с правами. Как это исправить? И при localhost/phpmyadmin файл не найден.
Андрей
Posted on Четверг 14th Июль, 2011, 11:18пп
спасибо автору. статья отличная. и действительно полезная. но у меня вопрос. каким образом настроить апач чтобы папки с сайтами помещались не в /var/www/ а в /home/user/ ?
admin
Posted on Четверг 14th Июль, 2011, 11:27пп
Файл:
nano /etc/apache2/sites-available/default
Директива:
DocumentRoot /var/www/users/
Dmitry
Posted on Пятница 22nd Июль, 2011, 4:41пп
Только слова благодарности автору.
admin
Posted on Четверг 4th Август, 2011, 7:55пп
Thanks ))
Алексей
Posted on Суббота 23rd Июль, 2011, 8:56пп
чтобы phpmyadmin отобразился в браузере надо просто заинклудить фаил /etc/phpmyadmin/apache.conf в конфиг apacha /etc/apache2/apache2.conf
Bormotolog
Posted on Вторник 26th Июль, 2011, 10:08дп
Автору – респект и всяческая уважуха!
Грамотно написано и разложено “по полочкам”, что особенно ценно для неопытных пользователей.
admin
Posted on Четверг 4th Август, 2011, 7:54пп
Спасибо =)
Nicholas
Posted on Среда 27th Июль, 2011, 10:21дп
“Но давайте рассмотрим такую ситуацию, когда вы тестируете разные сайты, у себя на компьютере. Вы не можете иметь виртуальных хостов, так как для этого требуется иметь реальные доменные адреса и реальные IP-адреса.”
а вот и неправда. использование файла hosts никто не отменял
sudo -s
gedit /etc/apache2/sites-available/defaul
ServerName mydomain.local
ServerAdmin [email protected]
DocumentRoot /home/user/mydomain.local
ErrorLog /home/user/mydomain.local/error.log
CustomLog /home/user/mydomain.local/access.log combined
gedit /etc/hosts
127.0.0.1 mydomain.local
127.0.0.1 http://www.mydomain.local
gedit /home/user/mydomain.local/index.php
/etc/init.d/apache2 restart
идем в браузер, вводим http://mydomain.local и радуемся жизни
Примечание: в таком виде виртуальный хост доступен только локально (в интернете его не будет)
admin
Posted on Четверг 4th Август, 2011, 7:54пп
Спасибо, полезное замечание.
Пупкин Вася
Posted on Суббота 6th Август, 2011, 6:19пп
Спасибо, получилось всё с первого раза. А можно подробнее про “реальные доменные адреса и реальные IP-адреса” и виртуальный хостинг? Если можете – помогите пожалуйста. Имею два адреса – site1.ru и site2.ru, оба привязаны на один IP – (для примера – 78.81.35.200). В /war/www соответственно есть две папки – site1 и site2. Как и какие файлы подправить, чтобы к этим сайтам был доступ извне?
Пупкин Вася
Posted on Суббота 6th Август, 2011, 11:40пп
После полсуток мучений и стораз переписываний разных конфигов с разных сайтов заработало только вот отсюда – http://forum.ubuntu.ru/index.php?topic=52552.0 в спойлере “Как настроить виртуальные хосты”.
admin
Posted on Воскресенье 7th Август, 2011, 7:54дп
Просто прочти вот эту статью “Настройка локальной рабочей станции для обслуживания нескольких сайтов с использованием VirtualHost в Apache“
Desaider
Posted on Среда 26th Октябрь, 2011, 1:47пп
А посему не так
sudo apt-get install tasksel
sudo tasksel install lamp-server
DrShteyn
Posted on Среда 23rd Ноябрь, 2011, 7:43пп
АВТОР спасибо огромное убунте 3-ий день юзаю а посему был очень полезный матерьял…!!!
Herrmike
Posted on Суббота 19th Май, 2012, 2:43пп
Автор – ты лучший!!! так все доступно описано! У меня все заработало! Всего тебе хорошего. Спасибо!
Михаил
Traviskam
Posted on Пятница 29th Июнь, 2012, 6:13пп
Спасибо автору.. Только после введения русского текста в index.html выдает какие то иероглифы ))
Залётный
Posted on Вторник 14th Август, 2012, 10:05дп
Статья написана, Блестяще! Спасибо, респект автору.
mc
Posted on Среда 7th Ноябрь, 2012, 2:24пп
Доброго времени суток!
Статья пришлась очень кстати! Автору отдельная благодарность!
Столкнулся вот с какой проблемой. Сайт заработал. Увиделся в сети. Но буквально по прошествии двух-трех дней, он перестал работать по сети. На localhost/sayt – отзывается, а на 192.168.1.100/sayt – нет. Причем по IP как на самой машине так и на других (по сети), сайт не работает. Повторюсь, localhost/sayt – введенные в браузере, работает. Фаерволов и т.п., нет. За время от “работает” до “не работает”, устанавливались только обновления для Ubuntu 12.04 LTS.
Заранее благодарен за помощь!
andrey
Posted on Четверг 25th Июль, 2013, 9:44дп
Последнее время я использую Valentina Studio для работы с MySQL на ubuntu. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview
admin
Posted on Вторник 30th Июль, 2013, 8:58дп
Спасибо! Посмотретим, попробуем
Avie60
Posted on Воскресенье 7th Февраль, 2016, 10:30пп
We start our voyage in Bordeaux, France, a magnificent city stretched along the Gironde River with its historic monuments, second to Paris only in terms of numbers and its maritime port.