Давайте рассмотрим самую базовую и самую простую задачу, установить три компонента (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:
sudo su
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 запущена:
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
Установка PHP5:
apt-get install php5 libapache2-mod-php5
Рестартуем Apache2:
/etc/init.d/apache2 restart
Помним, что document root по умолчанию в Ubuntu получается вот тут /var/www/, там же лежит дефолтная HTML страничка, которую мы увидели по адресу http://localhost/.
Стандартная проверка PHP5 на работоспособность, это создания тестого php файла в document root, т.е. в /var/www/. Кстати, если вам, как и мне не нравится местрасположения дефолтной директории, ее можно будет сменить, но это чуток позже.
Создаем файл:
Туда пишем:
Поддержка 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-xsl
И снова рестарт серверу:
/etc/init.d/apache2 restart
И любуемся на результат, т.е. обновите страничку info.php и найдете теперь там раздел о поддержке MySQL.
Поздравляю, с установкой покончено, осталось только доставить один удобный елемент, это phpmyadmin, для удобной работы с базами данных:
apt-get install phpmyadmin
По ходу установки вам зададут пару вопросов:
Web server to reconfigure automatically: <-- apache2
Configure database for phpmyadmin with dbconfig-common? <-- No
Если вы ничего не увидели, то сделайте символьную ссылку (я этого не делал):
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:
su root
nano /etc/apache2/apache2.conf
Найдите там следующие строки и проследите, что-бы они остались раскомментированными:
....
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. Это удобно, вы можете иметь бесконечное колличество сайтов, и работать с ними одновременно.
Вот как это будет выглядеть
Apache2
При этом у вас будет только один виртуальный хост. Настройки просты:
nano /etc/apache2/sites-available/default
Вот минимальное содержание:
<VirtualHost *:80>
ServerAdmin localhost
DocumentRoot /var/www/users/ #Тут лежат все сайты
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#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 и приступайте к работе.