LXF120:network

Материал из Linuxformat.

Перейти к: навигация, поиск
Сети Свяжем ваши Linux-ПК, и пускай они вас обслуживают

Содержание

Web-приложения: Рулим контентом

Сеть
Часть 5: Нейл Ботвик узнает, что с настроенным и запущенным web-сервером Apache можно добраться до приложений из любой точки земного шара.

Мы начали эту серию уроков (давным-давно, в LXF113/114, если вы его пропустили) с установки и настройки мощного web-сервера Apache. Но в текущем состоянии эта служба может только раздавать статические web-страницы или, максимум, выполнять какие-нибудь доморощенные скрипты. Однако возможности Apache, особенно вместе с PHP, гораздо шире.

Видите ли, мы еще не приспособили Apache для запуска скриптов, встраиваемых в web-страницы. Скрипты можно писать на разных языках, но PHP – один из самых популярных. Это значит, что найдутся готовые сценарии для чего угодно, от простеньких встроенных функций до полноценных web-приложений. Если вы не знакомы с данной концепцией, то по своим возможностям они похожи на настольные приложения, только доступ к ним осуществляется через браузер. А зачем нам браузер вместо обычной программы?

  • Доступ к данным можно получить из различных мест.
  • С одной программой могут одновременно работать несколько пользователей.
  • Программы выполняются в браузере и не зависят от операционной системы клиента.
  • Для их работы не нужно устанавливать на компьютер никакое ПО, поэтому их можно запускать на общедоступной машине.

Кроме PHP, имеется еще один компонент, используемый многими web-приложениями – сервер баз данных MySQL. Вместе эти элементы образуют классическую платформу LAMP (Linux, Apache, MySQL, PHP), ставшую стандартом для предоставления динамического содержимого. Вероятно, пакетный менеджер вашего дистрибутива добавил PHP заодно с Apache, но на всякий случай убедитесь в этом, прежде чем двинуться дальше. Ну, а MySQL – это пакет типа «поставил и забыл»: данные в нем хранят различные приложения, но базовая настройка выполняется при инсталляции, а затем каждый отдельный пакет выполняет собственные настройки с помощью установочных скриптов.

Подготовив платформу LAMP, установим два приложения. Первое – SquirrelMail, популярный почтовый web-клиент, а второе– Gallery, онлайн- фотогалерея; возможностей у нее столько, что и личной жизни не хватитвсе их перепробовать. Это типичные web-приложения, поэтому методы, используемые при работе с ними, справедливы и для многих других web-приложений.

Онлайн-фотогалерея

Установка Gallery на первый взгляд довольно долгая, но выполнить ее несложно, потому что она состоит из нескольких небольших шагов.

Фотогалерей в Интернете множество, ну и зачем создавать свою?

  • Чтобы хранить все в одном домене.
  • Чтобы хранить большие изображения, без ограничений на размер файлов.
  • Чтобы показывать фотографии без навязанной рекламы – или уж с рекламой, за которую платят вам.
  • А потому, что вам не слабо это сделать.

Как мы уже бегло упомянули, Gallery – это онлайн-фото-галерея с открытым исходным кодом, имеющая модульную архитектуру, что упрощает добавление нового функционала. Gallery написана на PHP, и можно установить ее прямо на web-сервер; а если сделать это с помощью менеджера пакетов, вы получите дополнительное преимущество в виде автоматических обновлений. Если так поступить нельзя (например, в качестве сервера используется компьютер в сети, а не ваш собственный, или нужна более свежая версия, чем та, что в дистрибутиве), то возьмите последний релиз с сайта http://gallery.menalto.com. На момент написания статьи это 2.3, хотя для любителей приключений есть и бета-релиз версии 3.0. Состав доступных пакетов различается. Как правило, достаточно версии Typical (обычная) – пакет содержит ядро программы и наиболее популярные темы и модули. Full (полная версия) включает все темы и модули, и это, наверное, перебор для новичков, если только вы не маньяк-настройщик. В версии Minimal есть только базовые компоненты, и она предназначена для тех, кто хочет установить остальное выборочно. Впрочем, с этим лучше не связываться, пока вы не наберетесь опыта и не будете точно знать, чего хотите. То же касается и пакета Developer.

Ваш выбор гвоздями не прибит, и позже можно добавить и тем, и модулей. Также можно выбрать между сугубо английской и многоязычной версией. Английским, слава богу, у нас не мудрено блеснуть, но мы все-таки российский LXF – так что возьмем многоязычный пакет версии Typical: gallery-2.3‑typical.tar.gz.

Настройка MySQL

PHP

Большинство web-приложений написано на PHP, и Apache обычно справляется с PHP-страницами и без дополнительных настроек. Однако в некоторых дистрибутивах PHP разбит на отдельные пакеты – например, в Debian нужно установить libapache-mod-php5.

Для определения подходящих пакетов и их статуса наберите «apache php» в строке поиска менеджера пакетов. Вы должны понимать, что если PHP в Apache сконфигурирован неправильно, то могут возникнуть проблемы, хотя установка из пакетного менеджера должна позаботиться о соответствующих настройках. Если при попытке открыть PHP-страницу Apache показывает ее код, измените параметры. Один из файлов в каталоге /etc/apache должен быть похож на этот:

<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>

Может также потребоваться изменить директиву DirectoryIndex в настройках Apache. Она перечисляет файлы, которые попытается отобразить сервер, получив запрос на обработку каталога. Каждый из них пробуется по порядку, пока не будет найден подходящий – обычно это нечто вроде DirectoryIndex index.php index.html возможно, и с другими вариантами.

Информацию о картинках Gallery хранит в базе данных, и MySQL – лучший выбор. Если вы устанавливали Gallery через менеджер пакетов, он должен был уже настроить базу данных. Если нет, выполните команды

mysqladmin -uroot -p create gallery2
mysql gallery2 -uroot -p -e “GRANT ALL ON gallery2.*
To username@localhost IDENTIFIED BY ‘password’”

Обе команды запросят у вас пароль, который был задан для суперпользователя root при установке MySQL; он не обязан совпадать с паролем root для входа в систему. Если база данных была установлена без пароля (не очень хорошая идея), уберите ключ -p. Альтернатива – задать пароль root командой

mysql -u root -e “set password = PASSWORD(‘mynew password’)”

Во второй команде из нашего исходного набора создаваемому пользователю MySQL, который будет применяться Gallery для соединения с базой данных, назначаются имя и пароль. Пользователи MySQL не имеют ничего общего с пользователями на вашем компьютере. Если у вас удаленный сервер, то имя пользователя и пароль вам сообщат. Либо вы можете создать базу данных сами и установить права доступа с помощью phpMyAdmin, но такое уже за рамками нашего урока.

Запросы к каталогу

Установив Gallery, вы с необыкновенной легкостью поделитесь воспоминаниями с друзьями

Теперь создадим каталог, где будут храниться фотографии; он не должен находиться в корневом каталоге web-сервера. В первой статье этой серии мы решили использовать в качестве корневого каталога (DocumentRoot) Apache директорию /var/www/[имя_хоста]/htdocs. Если вы последовали этому примеру, создайте рядом каталог для данных:

mkdir /var/www/localhost/gallery/g2data
chmod 777 /var/www/localhost/gallery/g2data

Таким образом, к фотографиям нельзя будет обратиться напрямую по URL: это нарушило бы требования безопасности Gallery. Распакуйте скачанный архив и скопируйте получившийся каталог gallery2 в каталог htdocs web-сервера. Покончив с подготовительными шагами по настройке базы данных и каталогов, запустите установку Gallery, открыв в браузере адрес http://ваш.хост/gallery2/install. Вы пройдете через несколько страниц с настройками, на каждой из которых будет собственная справка и возможность прервать установку. Главное решение, которое нужно принять – это выбор между стандартной и многосайтовой установкой. В последнем случае на один сервер можно установить несколько экземпляров Gallery, что удобно, если нужно получить несколько независимых галерей. Это также отлично подходит для создания многопользовательской системы, поскольку в одной Gallery может быть несколько отдельных альбомов с собственными правами доступа. Сейчас мы воспользуемся стандартной установкой.

Дойдя до страницы с настройками базы данных, введите имя пользователя и пароль, заданные вами ранее. Не поддавайтесь искушению отделаться пользователем root и его паролем, даже если установщик предлагает их по умолчанию, потому что у этого пользователя есть права на изменение всех таблиц. Создание отдельного пользователя – не только хорошая привычка, но и мера, позволяющая ограничить возможный ущерб в будущем, если в Gallery будут найдены уязвимости.

Пользователь-администратор, имя и пароль которого у вас также запросят, отличается от пользователя базы данных, имя и пароль которого мы только что ввели. В Gallery есть учетные записи (с паролями), определяющие, кому что разрешено делать в каждом альбоме. Администратор может делать все, и, конечно, будет лучше использовать для него менее очевидное имя, чем «admin» (по умолчанию). Завершив эту скучную часть, выбирайте модули для установки. Если места на диске хватает, можно добавить их все. (А если места мало, то куда вы денете фотографии?) Модули и подключаются, и отключаются в административной панели Gallery, поэтому в излишках нет ничего страшного: наоборот, с ними будет немного проще экспериментировать. Можно активировать все установленные модули, но если вы инсталлировали все подряд, то лучше активировать их по мере необходимости. Если Gallery будет доступна через Интернет, почитайте руководство по безопасности и только потом завершите установку.

Добавим фотографии

Скорая помощь

Не пытайтесь импортировать все фотографии сразу: вдруг вам захочется изменить настройки? Сначала добавьте пару штук и посмотрите, как они выглядят.

Пора загружать фотографии. Можно сделать это с ходу, но, наверное, лучше сначала раскидать снимки по альбомам. Для этого кликните по ссылке Add Album [Добавить альбом] и задайте путь и имя (остальные настройки можно не трогать, если вам не терпится), затем кликните по ссылке Add Item [Добавить фотографию]. Здесь можно столкнуться с парой ограничений: может появиться предупреждение о невозможности создания миниатюр, или что максимальный размер загружаемого файла – 2 МБ. Чтобы исправить первое, кликните по ссылке Site Admin [Администрирование сайта] и затем выберите Plugins [Модули]. Для создания миниатюр из фотографий Gallery использует стороннюю утилиту, и лучший выбор – ImageMagick. Кликните на ссылке Install [Установить], чтобы она заработала (это не совсем точное название: пакет-то уже установлен, просто не активирован).

Максимальный размер загружаемого файла – это настройка PHP, и, таким образом, исправить ситуацию можно по-разному. Если вы передаете файл через Интернет на удаленный сервер, то, наверное, лучше изменить размер изображения до его выгрузки. Если сервер локальный, просто увеличьте максимальный размер файла: найдите файл php.ini где-то в /etc (обычно в /etc/php/apache/) и измените параметр upload_max_filesize на более подходящее значение, скажем, 5 МБ. После этого потребуется перезапустить Apache. Есть и третий вариант: выбрать другой метод загрузки. Это может быть особенно кстати, если у вас много фотографий.

Если вы включили модуль Archive Upload [Загрузка архива], то сможете загружать zip-архив с изображениями вместо одной картинки. Выберите zip-файл, как если бы это была одна фотография, Gallery распакует его и добавит содержимое в текущий альбом. Если zip-файл содержит каталоги, для каждого из них будет создано по альбому.

Загрузка из локальных каталогов

Если у вас есть прямой доступ к серверу, то проще воспользоваться модулем для загрузки снимков из локального каталога. Он не входит в нашу версию Typical, поэтому зайдите в Admin > Plugins [Администрирование > Модули] и выберите вкладку Get More Plugins [Дополнительно]. Следуя подсказкам, загрузите модуль Add Item (и любые другие модули, которые захотите) в разделе Import [Импорт]. Теперь пройдите по ссылке Web/Server [Web/Сервер] в нижней части меню Admin и укажите каталог, предназначенный для выгрузки. Все его содержимое будет добавлено, но он должен находиться вне корневого каталога сервера; например, неплохой выбор – /var/www/localhost/gallery2/uploads.

Скопируйте фотографии в этот каталог командой scp, если они находятся на другом компьютере. Кликнув по ссылке Add Items в своем альбоме, вы увидите несколько новых закладок. На закладке From Local Server [С локального сервера] укажите каталог выгрузки, нажмите Find Files [Найти файлы] и отметьте файлы, которые намерены загрузить.

Другие языки

Хотя многие web-приложения написаны на PHP, это далеко не единственный язык. PHP был специально написан для встраивания в web-страницы, и это естественный выбор для решения подобных задач; но и у других языков есть свои преимущества. На Perl писали web-скрипты еще до того, как появился PHP, и пишут до сих пор. Ruby, особенно с каркасом Ruby on Rails, также популярен у некоторых разработчиков. Другие предпочитают Python, возможно, с каркасом Django (LXF105–108). Во многом выбор языка зависит от предпочтений разработчика или разработчиков, потому что для конечного пользователя разница невелика. Впрочем, популярность PHP можно объяснить и простотой, с которой он приспосабливается под ваши нужды.

Вам явно ни к чему ситуация, когда весь канал уходит на загрузку картинок, поэтому кликните по ссылке Edit Album [Редактировать альбом] и установите один или несколько целевых размеров. Это размер изображения, отправляемого в ответ на запрос загрузки. Gallery изменит размер изображений по запросу и закэширует новые версии для увеличения производительности в дальнейшем. В секции Maintenance [Сопровождение] области Admin есть функция моментального создания всех миниатюр и изображений с измененным размером, что опять же экономит вам несколько драгоценных секунд.

На самом деле мы здесь лишь поверхностно коснулись возможностей Gallery. Следующей гаванью должна стать секция Users, где можно определять пользователей или группы и управлять доступом. Будьте поосторожнее с правами гостевых пользователей, если Gallery будет доступна через Интернет. Затем одним глазком загляните в раздел Modules. Там масса интересных опций, с которыми можно поиграть, особенно если вы установили полный архив со всеми доступными модулями.

Ваша почта в сети

Пусть SqurrelMail проверит текущую конфигурацию после запуска скрипта настройки. Вся моя почта без почтового клиента в пределах видимости. Установка SquirrelMail означает, что письма можно читать откуда угодно через Интернет.

В первых двух частях этой серии мы настроили web-сервер и почтовый сервер IMAP, а теперь можем объединить их с помощью почтового приложения. Вариантов полно; большинство написано на PHP, но есть и на других языках, например, на Perl. Один из самых распространенных почтовиков на PHPSquirrelMail.

Как и все web-приложения, SquirrelMail можно установить с помощью менеджера пакетов, если у вас есть доступ с правами root, или из архива с сайта http://www.squirrelmail.org. Текущая версия – 1.4.18, поэтому скачайте с сайта архив squirrelmail-1.4.18.tar.gz. Пакет содержит подробные инструкции по установке, но для начала нужно создать два каталога за пределами DocumentRoot. Их владельцами должны быть пользователь и группа, от имени которых запущен сервер, поэтому установите пакет следующими командами, изменив пути в соответствии с вашей установкой:

mkdir -p /var/www/localhost/mail/{data,attachments}
chown apache: /var/www/localhost/mail/{data,attachments}
chmod 730 /var/www/localhost/mail/attachments

Теперь распакуйте архив SquirrelMail командами

tar xf squirrelmail-1.4.18.tar.gz -C /var/www/localhost/htdocs
ln -s squirrelmail-1.4.18 /var/www/localhost/htdocs/mail

Вторая команда добавит директорию mail как символьную ссылку на каталог squirrelmail-x.y.z. Благодаря этому можно установить более позднюю версию SquirrelMail вместе с более ранней и переключить символьную ссылку, когда вы убедитесь, что новая версия работает правильно. Тем самым уменьшается время простоя для пользователей. Другой вариант – создать подходящий каталог и перенести содержимое squirrelmail-x.y.z туда. Если этот сервер предназначен только для web-почты, файлы можно поместить прямо в htdocs. Теперь в оболочке, а не в браузере нужно запустить скрипт настройки. Под пользователем root выполните команды

cd /var/www/localhost/htdocs/mail
config/conf.pl

Нажмите D и выберите свой IMAP-сервер (у тех, кто следовал нашим предыдущим урокам, это Dovecot). Многие из этих настроек можно оставить в покое, но нужно зайти в Server Settings [Настройки сервера] и убедиться, что параметры серверов SMTP и IMAP указаны верно. Если оба сервера работают на том же компьютере, что и SquirrelMail, оставьте их в виде localhost, в противном случае задайте их согласно настройкам сети. Если вы не запустили собственный SMTP-сервер (пока мы об этом не говорили), возможно, придется указать здесь сервер провайдера. В секции General Options [Общие настройки] приведите настройки каталогов данных и вложений в соответствие с созданными вами. Остальные параметры пока оставьте как есть, сохраните свои настройки и выйдите из скрипта. Затем откройте в браузере адрес http://ваш.хост/mail/src/configtest.php. Так вы проверите, что настройки работают; если есть ошибки, то запустите config/.conf.pl еще раз, чтобы исправить их, а в случае проблем с PHP отредактируйте файл php.ini (configtest.php выдаст ошибку, если в php.ini включена любая из опций magic_quotes).

Готово к работе

Теперь смело входите, кликнув по ссылке внизу тестовой страницы или открыв в браузере адрес http://ваш.хост/mail. Появится страница входа в систему; введите имя пользователя и пароль для почтового ящика. Ссылка Options [Параметры] в верхней страницы позволяет изменять настройки показа почты. Это опции для отдельных пользователей; а если вам нужны глобальные изменения, запустите скрипт config/conf.pl еще раз.

Теперь у нас есть web-браузер, умеющий показывать ваши фотографии и работать с почтой. Вы также должны были получить основные навыки установки и настройки других web-приложений, так что можете спокойно ударяться в безумные эксперименты. Через месяц мы вставим последний кусочек мозаики с почтой, настроив SMTP-сервер, способный фильтровать спам и вирусы.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию