вторник, 3 апреля 2012 г.

Linux.Ставим Apache+MySQL+PHP на Ubuntu 11.10

Давайте рассмотрим самую базовую и самую простую задачу, установить три компонента (Apache2, PHP5 и MySQL) на вашу свежую Ubuntu 11.10 и ораганизовать «быстрый» Web-сервер. 
Здесь стоит напомнить, что Apache2 это один из самых популярных серверов, с большими возможностями, такими как: кросплатформенность (свой первый Apache-сервер я завел под Windows), надёжность и гибкость конфигурации (httpd.conf и .htaccess), возможность подключать внешние модули для предоставления данных, механизм виртуальных хостов, интеграция с другим ПО и языками программирования и многое-многое другое. Прочиать больше вы можете конечно же в Wikipedia – Apache2. Как установить и настроить Apache2, PHP5 и MySQL в Ubuntu 11.10 (LAMP) читайте под катом.

LAMP

LAMP — это набор серверных программ. Данная реализация веб сервера является наиболее популярной в Интернете на сегодняшний день.
Компоненты LAMP:
Linux — ОС Linux;
Apache — Web-сервер;
MySQL — база данных;
PHP — язык программирования, используемый для создания веб-приложений.
Кстати есть еще одно название, очень популярное, это BAMP, где B это BSD система, т.е. Unix.


Установка LAMP в Ubuntu 11.10

Начнем с СУБД 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 – очень важный файл, в нем происходит настройка виртуальных хостов сервера.
Но об Виртуальных Хостах в Apache мы поговорим позже, сейчас я предлагаю избрать немного другой путь. И настроить локальный сервер для обслуживания нескольких сайтов без использования VirtualHost в Apache. Метод не самый правильный, но у него есть свои плюсы.
Вы можете сделать так, в вашей 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 и приступайте к работе.

Источник "вдохновения"

Комментариев нет:

Отправить комментарий