Установка Apache2, PHP5 и MySQL в Ubuntu 11.04

Установка 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:

  1. sudo su
  2. apt-get install mysql-server mysql-client

Система попросит вас ввести логин и пароль для учетной записи рута:
New password for the MySQL «root» user: <-- вашRootПарольДляMySQL
Repeat password for the MySQL "root" user: <-- вашRootПарольДляMySQL

Убедитесь, что MySQL запущена:

  1. ps -ef | grep mysql
  2. mysql 5478 1 1 15:41 ? 00:00:00 /usr/sbin/mysqld

Поставим Apache2:

  1. apt-get install apache2

Убедитесь, что Apache2 запущен:

  1. ps -ef | grep apache2
  2. root 5974 1 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start
  3. www-data 5977 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start
  4. www-data 5979 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start
  5. www-data 5980 5974 0 15:43 ? 00:00:00 /usr/sbin/apache2 -k start

проверить работу вы можете пройдя по адресу http://localhost/

Установка PHP5:

  1. apt-get install php5 libapache2-mod-php5

Рестартуем Apache2:

  1. /etc/init.d/apache2 restart

Помним, что document root по умолчанию в Ubuntu получается вот тут /var/www/, там же лежит дефолтная HTML страничка, которую мы увидели по адресу http://localhost/.

Стандартная проверка PHP5 на работоспособность, это создания тестого php файла в document root, т.е. в /var/www/. Кстати, если вам, как и мне не нравится местрасположения дефолтной директории, ее можно будет сменить, но это чуток позже.

Создаем файл:

  1. nano /var/www/info.php

Туда пишем:

  1. <?php
  2. phpinfo();
  3. ?>

Любуемся результатом перейдя в браузере по адресу http://localhost/info.php

Поддержка MySQL в PHP5:

  1. 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-xsl

И снова рестарт серверу:

  1. /etc/init.d/apache2 restart

И любуемся на результат, т.е. обновите страничку info.php и найдете теперь там раздел о поддержке MySQL.

Поздравляю, с установкой покончено, осталось только доставить один удобный елемент, этоphpmyadmin, для удобной работы с базами данных:

  1. apt-get install phpmyadmin

По ходу установки вам зададут пару вопросов:
Web server to reconfigure automatically: <-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- No

Далее смотрим на результат http://localhost/phpmyadmin
Логин это root, пароль вы задовали, когда ставили СУБД MySQL.

Если вы ничего не увидели, то сделайте символьную ссылку (я этого не делал):

  1. sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
  2. 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:

  1. su root
  2. nano /etc/apache2/apache2.conf

Найдите там следующие строки и проследите, что-бы они остались раскомментированными:

  1. ....
  2. AccessFileName .htaccess
  3. <Files ~ "^\.ht">
  4. Order allow,deny
  5. Deny from all
  6. Satisfy all
  7. Files>
  8. ....

Как результат:

Логи расположены вот тут /var/log/apache2/.
Тут все банально, лог access.log содержит в себе всю инфу о соединения которые были установленны с сервером.
Лог error.log содержит в себе всю инфу об ошибках. Я уже говорил, что вы можете поменять расположения логов в файле apache2.conf.

/etc/apache2/sites-available/default – очень важный файл, в нем происходит настройка виртуальных хостов сервера.

Но давайте рассмотрим такую ситуацию, когда вы тестируете разные сайты, у себя на компьютере. Вы не можете иметь виртуальных хостов, так как для этого требуется иметь реальные доменные адреса и реальные IP-адреса. Но вы можете сделать так, в вашей RootDocument, сделать папки /wordpress , /drupal/ , /joomla , /logs , /other и установить соостветсвующие сайты в эти директории.

Теперь обратившись в браузере по адресу: http://localhost/drupal/ вы увидите ваш сайт на Drupal, а перейдя по адресу http://localhost/wordpress/ вы увидите ваш сайт на WordPress. Это удобно, вы можете иметь бесконечное колличество сайтов, и работать с ними одновременно.

Вот как это будет выглядеть (кликабельно)

Apache2

Apache2

При этом у вас будет только один виртуальный хост. Настройки просты:

  1. nano /etc/apache2/sites-available/default

Вот минимальное содержание:

  1. <VirtualHost *:80>
  2. ServerAdmin localhost
  3. DocumentRoot /var/www/users/ #Тут лежат все сайты
  4. <Directory />
  5. Options FollowSymLinks
  6. AllowOverride None
  7. Directory>
  8. #Logs #Где лежат логи
  9. ErrorLog /var/www/users/logs/error.log
  10. CustomLog /var/www/users/logs/access.log combined
  11. Alias /doc/ "/usr/share/doc/"
  12. <Directory "/usr/share/doc/">
  13. Options Indexes MultiViews FollowSymLinks
  14. AllowOverride None
  15. Order deny,allow
  16. Deny from all
  17. Allow from 127.0.0.0/255.0.0.0 ::1/128
  18. Directory>
  19. VirtualHost>

После конфигурации файла, перезапустите Apache и приступайте к работе.