<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Мануалы Linux &#187; MySQL</title>
	<atom:link href="http://howtolinux.ru/category/howtos/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://howtolinux.ru</link>
	<description></description>
	<lastBuildDate>Wed, 08 Sep 2010 06:22:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Устнавливаем Drupal</title>
		<link>http://howtolinux.ru/2010/05/03/%d1%83%d1%81%d1%82%d0%bd%d0%b0%d0%b2%d0%bb%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-drupal/</link>
		<comments>http://howtolinux.ru/2010/05/03/%d1%83%d1%81%d1%82%d0%bd%d0%b0%d0%b2%d0%bb%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-drupal/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:40:25 +0000</pubDate>
		<dc:creator>ubivic</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[пароль]]></category>
		<category><![CDATA[установка]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=731</guid>
		<description><![CDATA[Чтобы поставить Drupal потребуются следующие пакеты: 1)apache 2)php (4.3.5 или выше) 3)mysql Установка: sudo apt-get install apache2 sudo apt-get install php5 sudo apt-get install mysql Также понадобятся библиотеки: php5-mysql, libapache2-mod-auth-mysql, Проверить поддерживает ли php работу с mysql можно с помощью простого скрипта, назовем его phpinfo.php после обращения к нему в браузере смотрим на выведенные переменные [...]]]></description>
			<content:encoded><![CDATA[<p>Чтобы поставить Drupal потребуются следующие пакеты:</p>
<p>1)apache<br />
2)php (4.3.5 или выше)<br />
3)mysql</p>
<p>Установка:</p>
<blockquote><p>sudo apt-get install apache2<br />
sudo apt-get install php5<br />
sudo apt-get install mysql</p></blockquote>
<p>Также понадобятся библиотеки: php5-mysql, libapache2-mod-auth-mysql,</p>
<p>Проверить поддерживает ли php работу с mysql можно с помощью простого скрипта, назовем его phpinfo.php</p>
<p>после обращения к нему в браузере смотрим на выведенные переменные и параметры и ищем секцию под названием mysql, если ее нет, то необходимо установить библиотеку<br />
php5-mysql.<br />
В случае отсутствия libapache2-mod-auth-mysql установка останавливается на шаге лоступа к базе данных и выдается ошибка- &#8220;Your web server does not appear to support any common database types.<br />
Check with your hosting provider to see if they offer any databases that Drupal supports&#8221;.</p>
<p><span id="more-731"></span>Установка библиотек для работы с mysql:</p>
<blockquote><p>sudo apt-get install php5-mysql<br />
sudo apt-get install libapache2-mod-auth-mysql</p></blockquote>
<p>Рекомендую до начала установки скачать и распаковать в каталог drupal его русификатор (если это сделать сразу, уже на этапе установки возможно будет выбрать русский язык),<br />
потом необходимо скопировать и переименовать файл default.settings.php в settings.php</p>
<blockquote><p>cp sites/default/default.settings.php sites/default/settings.php</p></blockquote>
<p>Далее даем права на запись на каталог sites/default и на сам файл settings.php.</p>
<blockquote><p>chmod o+w sites/default/settings.php</p></blockquote>
<p>Создаем папку files в папке sites/default,<br />
даем права на запись:</p>
<blockquote><p>chmod o+w sites/default/files</p></blockquote>
<p>Создаем базу данных для drupal вручную, с помощью клиента mysql:</p>
<blockquote><p>create database название_базы;</p></blockquote>
<p>базу также можно создать с помощью оболочки<br />
phpmyadmin.</p>
<p>Настройка параметров через Web-интерфейс:<br />
1 выбираем язык<br />
2 заполняем имя созданной базы данных, имя пользователя и пароль,<br />
также можно заполнить префикс имен таблиц (рекомендуется, если у Вас для всего 1 база данных на хостинге, потом будет проще разбираться в назначении таблиц)</p>
<p>Забираем права на запись на каталог sites/default и на сам файл settings.php.</p>
<blockquote><p>chmod a-w sites/default/settings.php<br />
chmod a-w sites/default</p></blockquote>
<p>Также Drupal потребовал установки модуля gd для php.<br />
устанавливаем его командой:</p>
<blockquote><p>sudo apt-get install php5-gd</p></blockquote>
<p>После чего проверяем нашим скриптом phpinfo.php появился или нет раздел gd,<br />
если нет в файл php.ini в раздел Dynamic Extensions добавляем строку:<br />
extension=gd.so (имено так без путей, т.к. они прописываются в другой переменной)</p>
<p>После чего перезапускаем Apapche:</p>
<blockquote><p>sudo service apache2 restart</p></blockquote>
<p>Выставляем даты в нормальном режиме, и первый день &#8211; понедельник (умолчание &#8211; вокресенье)</p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2010/05/03/%d1%83%d1%81%d1%82%d0%bd%d0%b0%d0%b2%d0%bb%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Лечим треск при проигровании звуков в Pidgin</title>
		<link>http://howtolinux.ru/2009/09/04/howto-%d0%bb%d0%b5%d1%87%d0%b8%d0%bc-%d1%82%d1%80%d0%b5%d1%81%d0%ba-%d0%bf%d1%80%d0%b8-%d0%bf%d1%80%d0%be%d0%b8%d0%b3%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d0%b7%d0%b2%d1%83%d0%ba%d0%be%d0%b2/</link>
		<comments>http://howtolinux.ru/2009/09/04/howto-%d0%bb%d0%b5%d1%87%d0%b8%d0%bc-%d1%82%d1%80%d0%b5%d1%81%d0%ba-%d0%bf%d1%80%d0%b8-%d0%bf%d1%80%d0%be%d0%b8%d0%b3%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d0%b7%d0%b2%d1%83%d0%ba%d0%be%d0%b2/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 04:34:25 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[на]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=315</guid>
		<description><![CDATA[Часто сталкиваюсь с неприятной проблемой — при проигровании Pidgin-ом звуков идет неприятный треск. Проблему эту наблюдал не только у себя. Сегодня решил наконец-то разобраться в чем дело. Погуглив я не нашел никаких решений кроме как снести pulseaudio. По причине того, что кроме глючного звука в Pidgin я у себя проблем со звуком не наблюдаю, я [...]]]></description>
			<content:encoded><![CDATA[<p>Часто сталкиваюсь с неприятной проблемой — при проигровании Pidgin-ом звуков идет неприятный треск. Проблему эту наблюдал не только у себя. Сегодня решил наконец-то разобраться в чем дело.<br />
<span id="more-315"></span><br />
Погуглив я не нашел никаких решений кроме как снести pulseaudio. По причине того, что кроме глючного звука в Pidgin я у себя проблем со звуком не наблюдаю, я решил что мне этот способ не подходит и я принялся искать корень проблемы.<br />
Методом проб и ошибок я выяснил, что для воспроизведения звуков Pidgin использует утилиту aplay. Выглядит это примерно так:</p>
<blockquote><p>    aplay /usr/share/sounds/purple/login.wav</p></blockquote>
<p>Если мы выполним эту команду в терминале, мы получим тот же треск, что издает Pidgin. Идем в ман aplay и находим там два интересных пункта:</p>
<blockquote><p>    -L, &#8211;list-pcms<br />
    List all PCMs defined</p>
<p>    -D, &#8211;device=NAME<br />
    Select PCM by name
</p></blockquote>
<p>Первый ключ выводит список всех доступных аудио устройств, а второй заставляет проигрывать звук через заданное устройство. Методом тыка я нашел устройство, при выводе звука на которое треска не наблюдается. В моем случае это было устройство с именем surround41. В итоге получилось вот что:</p>
<blockquote><p>    aplay -D surround41 /usr/share/sounds/purple/login.wav</p></blockquote>
<p>Теперь мы умеем проигрывать чистый звук и нам надо рассказать об этом Pidgin <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Идем в настройки Pidgin (ctrl+p), заходим во вкладку звук, в поле метод воспроизведения звука выбираем пункт «команда». Ниже вбиваем aplay -D surround41 %s, где вместо surround41 вписываем ваше устройство. Наслаждаемся чистым звуком в Pidgin!</p>
<p style="text-align: right"><em>Взято с <a href="http://habrahabr.ru/blogs/linux/68068/" target="_blank">http://habrahabr.ru</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/04/howto-%d0%bb%d0%b5%d1%87%d0%b8%d0%bc-%d1%82%d1%80%d0%b5%d1%81%d0%ba-%d0%bf%d1%80%d0%b8-%d0%bf%d1%80%d0%be%d0%b8%d0%b3%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b8-%d0%b7%d0%b2%d1%83%d0%ba%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Заворачиваем Amarok на MySQL</title>
		<link>http://howtolinux.ru/2009/09/04/howto-%d0%b7%d0%b0%d0%b2%d0%be%d1%80%d0%b0%d1%87%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-amarok-%d0%bd%d0%b0-mysql/</link>
		<comments>http://howtolinux.ru/2009/09/04/howto-%d0%b7%d0%b0%d0%b2%d0%be%d1%80%d0%b0%d1%87%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-amarok-%d0%bd%d0%b0-mysql/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 04:30:52 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[SuSe]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[пароль]]></category>
		<category><![CDATA[Переход]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=313</guid>
		<description><![CDATA[Amarok — на мой, взгляд — гениайнельший из всех ныне существующих аудиоплееров, снабжён не менее гениальной музыкальной библиотекой.(Именно переход на линукс и амарок приучил меня пользоваться этим инструментом музыкоорганизации, винамповская и вин-медиаплеерская либари просто таки пугали своей непонятностью и несуразностью.) Как известно, вся эта музыкальная библиотека крутится на определённой базе данных. В стандартной конфигурации, это [...]]]></description>
			<content:encoded><![CDATA[<p>Amarok — на мой, взгляд — гениайнельший из всех ныне существующих аудиоплееров, снабжён не менее гениальной музыкальной библиотекой.(Именно переход на линукс и амарок приучил меня пользоваться этим инструментом музыкоорганизации, винамповская и вин-медиаплеерская либари просто таки пугали своей непонятностью и несуразностью.) Как известно, вся эта музыкальная библиотека крутится на определённой базе данных. В стандартной конфигурации, это SqlLite. Такая чудненькая легковесная БД, не требующая ни пользователе-паролей, ни каких-либо настроек, просто включил и оно себе работает. Но, у нее есть один серьёзный недостаток: она медленная, нет-нет, не то слово, просто таки тормозная!<br />
<span id="more-313"></span><br />
SqlLite подходит для музыкальной библиотеки на десять гигабайт, на двадцать, ну хорошо, с натяжкой на пятьдесят гиг. Но заставлять её контролить большее количество записей — взаимомучение как для пользователя, так и для самой БД. На моей домашней машине, с немолодым, но и не самым старым Pentium4 2,4ггц хранится около 150 гиг музыки, первоначальное создание библиотеки — занимает довольно большое, но простительное время, а вот поиск — это уже страшно. Каждый раз окно плеера сереет (да, да, компиз) секунд на десять, а процессор кряхтит на все сто процентов. Да и другие операции с БД осуществляются довольно медленно и ресурсозатратно. С этим нужно было что-то делать.<br />
У меня, как думаю и у большинства людей, занимающихся веб-разработкой MySQL стоит уже по долгу службы. Если нет — установить её не составляет никаких проблем. Так почему бы не предоставить ей контроль над своей музыкальной библиотекой? Как показывает практика — работает все в десятки раз быстрее.<br />
Итак, далее я опишу настройку базы данных и плеера, в общем здесь ничего сложного нет, и спокойно можно разобраться самому.<br />
Скорее всего, большинство читающих убунто/кубунто-воды, а я к ним не принадлежу, так что попытаюсь описать в общих чертах, какие пакеты нам понадобятся.<br />
В первую очередь это сама база даных:<br />
вбиваете в поиск своего любимого менеджера пакетов словечко mysql, и интутивно тыкаете галочки напротив того, что нужно:)<br />
А нужно скорее всего:<br />
mysql-server (остальное должен потянуть за собой в качестве зависимостей)<br />
mysql-common (если зависимостей сервер не потянул)<br />
mysql-client (в общем с той же причины)<br />
mysql-admin (если конечно вы не умеете управлять базами данных, в ручную вписывая Sql-запросы. Хотя, если умеете, то зачем вы вообще читаете этот мануал?)<br />
amarok (черт его знает, а вдруг вы собрались настраивать плеер, не установив его?)<br />
Итак, установив необходимые пакеты, приступаем к настройке.<br />
Для продвинутых, опционально можно покрутить файл /etc/my.cnf. Но, как показывает практика, это совсем не обязательно.<br />
Для начала нужно запустить нашу базу данных. Для этого нужно либо перезагрузиться, либо написать в консоли:</p>
<blockquote><p>#/etc/init.d/mysqld start
</p></blockquote>
<p>В любом случае, при следующем запуске, база данных запустится сама.<br />
Далее, займемся настройками таблиц и пользователей. Некоторым думаю будет удобнее делать это с помощью phpMyAdmin, или вручную с помощью запросов, но для меня — самый знакомый и простой инструмент это mysql-administrator. Его и запускаем.</p>
<blockquote><p>$ mysql-administrator</p></blockquote>
<p>Нас встречает окошко авторизации в базу данных: </p>
<p>Делаем все так, чтоб было как на картинке. В стандартной конфигурации должно пустить с пользователем root и без пароля. Если нет — попробуйте пароль администратора на вашем компьютере, если все-равно нет — лопатте /etc/my.cnf, или пишите сюда, разберёмся.<br />
Если все хорошо, то нас должно встретить такое окошко:</p>
<p>Переходим на вкладку «Catalogs». Кликаем правой клавишей в поле Schemata, выбираем «Create Schema».</p>
<p>Задаем имя новой таблицы, в нашем случае — amarok.</p>
<p>Далее — идем в User Administration.</p>
<p>Выбираем пользователя root и устанавливаем для него пароль (к мануалу отношения не имеет, но все же так значительно безопаснее) Не забывайте, что при следующем подключении с mysql-administrator нужно будет вводить установленный пароль.<br />
Потом добавляем пользователя amarok (большая такая кнопка внизу «new user»). При желании ставим и для него пароль.<br />
Выбрав пользователя — переходим на вкладку (вверху, а не сбоку) «Schema Privileges»:</p>
<p>Там — выбираем в левой колонке созданую нами схему «amarok», в правой — жмем ctrl+a и перемещаем стрелочкой все привилегии в центральную колонку (не, ну конечно можно вручную повыбирать привилегии для пользователя, но по моему, это лишнее).<br />
С настройкой базы покончено, выходим из администратора.<br />
Теперь осталось настроить Amarok.<br />
Останавливаться на том, как пользоваться библиотекой, и какие папки вам сканировать, я не буду.<br />
Идем в настройки, в пункте «база данных», выбираем MySQL. В названии узла, или как там, прописываете localhost. Базу данных и пользователя — тех что вы создали, в нашем случае — везде пишем amarok.</p>
<p>Вуаля! Плеер заново создаст музыкальную библиотеку (не бойтесь за скачанные с интернета обложки, они останутся:) ), займет это совсем немного времени. И теперь можно радоваться! Поиск треков по базе значительно шустрее и приятнее. Как и работа с динамическими плейлистами.<br />
Если, не дай Бог, будут проблемы с треками содержащими кириллицу в названиях (такое у меня случалось на OpenSuse), попробуйте в /etc/my.cnf в разделе [mysql] вписать «default-character-set = utf8». </p>
<p style="text-align: right"><em>Взято с <a href="http://habrahabr.ru/blogs/linux/24327/" target="_blank">http://habrahabr.ru</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/04/howto-%d0%b7%d0%b0%d0%b2%d0%be%d1%80%d0%b0%d1%87%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-amarok-%d0%bd%d0%b0-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Скрипт для управления пользователями VSFTPD</title>
		<link>http://howtolinux.ru/2009/09/04/howto-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%b4%d0%bb%d1%8f-%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f/</link>
		<comments>http://howtolinux.ru/2009/09/04/howto-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%b4%d0%bb%d1%8f-%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 04:29:00 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[пароль]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=311</guid>
		<description><![CDATA[Один из читателей моего блога любезно предоставил свой скрипт для работы с пользователями фтп сервера VSFTPD настроенного на работу с базой данных MYSQL для хранения логинов и паролей пользователей. Прочитать статью об установке и настройке фтп сервера VSFTPD вы можете по ссылке http://sudouser.com/ustanovka-i-nastrojka-vsftpd-mysql-ubuntu-debian. Скрипт позволяет создавать, изменять, удалять пользователей (с созданием резервной копии домашней директории), [...]]]></description>
			<content:encoded><![CDATA[<p>Один из читателей моего блога любезно предоставил свой скрипт для работы с пользователями фтп сервера VSFTPD настроенного на работу с базой данных MYSQL для хранения логинов и паролей пользователей. Прочитать статью об установке и настройке фтп сервера VSFTPD вы можете по ссылке http://sudouser.com/ustanovka-i-nastrojka-vsftpd-mysql-ubuntu-debian. Скрипт позволяет создавать, изменять, удалять пользователей (с созданием резервной копии домашней директории), работать с их домашними каталогами, менять пароли, просматривать всех пользователей. Скрипт полностью настраиваеся под ваши нужды, а именно имя базы, корневая директория для каталогов пользователей, минимальная длинна паролей, и тд. Посмотреть и скачать скрипт вы сможете в продолжении поста.<br />
<span id="more-311"></span><br />
Ниже представлен код скрипта. По вопросам связанным со скриптом вы можете написать его автору на электрическую почту, найти ее вы сможете в коде скрипта в самом начале, зовут автора Александр Астапов.</p>
<p>Код:</p>
<blockquote><p>
    #!/bin/bash<br />
    #Скрипт управляет виртуальными пользователями vsftpd<br />
    #По вопросам, предложениям и замечаниям по данному скрипту пишите по адресу: 0&#8211;0@list.ru</p>
<p>    ftp_login= #Логин пользователя базы данных vsftpd<br />
    mysqlbase=vsftpd #Имя базы данных vsftpd<br />
    ftp_path=&#8221;/srv/vsftpd/&#8221; #Путь к директориям пользователей vsftpd<br />
    ftp_backup_dir=&#8221;/srv/vsftpd_back/&#8221; #Путь к резервной копии директорий пользователей<br />
    ftp_group= #Группа vsftpd<br />
    passdigit=6 #Минимальная длинна пароля пользователя в символах</p>
<p>    function input_correct_pass { #Функция проверяет корректность пароля сервера vsftpd<br />
    corr=1<br />
    while [ "$corr" -ne 0 ];<br />
    do<br />
    echo &#8220;Введите пароль пользователя базы ftp&#8221;<br />
    read -s ftp_pass<br />
    mysql -u $ftp_login &#8211;password=$ftp_pass -e exit &amp;&gt; /dev/null<br />
    corr=$?<br />
    if [ "$corr" -ne 0 ]; then<br />
    clear<br />
    echo &#8220;Вы ввели неправильный пароль!&#8221;<br />
    echo<br />
    fi</p>
<p>    done<br />
    }</p>
<p>    function cor_usr_pass { #Функция проверяет корректность пароля пользователя<br />
    numb=${#usr_pass}<br />
    while [ -z "$usr_pass" ] || [ "$numb" -lt "$passdigit" ]<br />
    do<br />
    if [ -z "$usr_pass" ]; then<br />
    echo  &#8220;Пароль нулевой длинны не допустим&#8221;<br />
    elif [ "$numb" -lt "$passdigit" ]; then<br />
    echo &#8220;Длинна пароля должна быть не менее $passdigit символов&#8221;<br />
    fi<br />
    echo &#8220;Введите другой пароль&#8221;<br />
    read -s  usr_pass<br />
    numb=${#usr_pass}<br />
    done<br />
    }</p>
<p>    function usr_add { # Функция добавляет нового пользователя в базу vsftpd и создает рабочую директорию<br />
    clear<br />
    read -p &#8220;Введите логин нового пользователя ftp: &#8221; ftp_usr<br />
    # Данный участок кода проверяет корректность вводимых данных========================================================================================<br />
    ctrl_login=`mysql -e &#8220;SELECT username FROM accounts WHERE username=&#8217;$ftp_usr&#8217;;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase`<br />
    ctrl_login=${ctrl_login:9}<br />
    while [ -z "$ftp_usr" ] || [ "$ctrl_login" == "$ftp_usr" ]<br />
    do<br />
    if [ -z "$ftp_usr" ]; then<br />
    echo &#8220;логин не может быть пустым&#8221;<br />
    elif [ "$ctrl_login" == "$ftp_usr" ]; then<br />
    echo &#8220;Пользователь существует&#8221;<br />
    fi<br />
    read -p &#8220;Введите логин заново: &#8221; ftp_usr<br />
    ctrl_login=`mysql -e &#8220;SELECT username FROM accounts WHERE username=&#8217;$ftp_usr&#8217;;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase`<br />
    ctrl_login=${ctrl_login:9}<br />
    done<br />
    #====================================================================================================================================================<br />
    echo &#8220;Введите пароль для нового пользователя ftp:&#8221;<br />
    read -s usr_pass<br />
    cor_usr_pass<br />
    mysql -e &#8220;INSERT INTO accounts (username, pass) VALUES(&#8216;$ftp_usr&#8217;, PASSWORD(&#8216;$usr_pass&#8217;));&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase&amp;&amp;<br />
    mkdir $ftp_path$ftp_usr&amp;&amp;<br />
    chown $ftp_login:$ftp_group $ftp_path$ftp_usr&amp;&amp;<br />
    chmod 770 $ftp_path$ftp_usr</p>
<p>    if [ "$?" -eq 0 ]; then<br />
    clear<br />
    echo &#8220;Пользователь $ftp_usr добавлен успешно&#8221;<br />
    else<br />
    echo &#8220;Ошибка добавления пользователя $ftp_usr&#8221;<br />
    fi</p>
<p>    }</p>
<p>    function change_pass { #Функция меняет пароль пользователя<br />
    read -p &#8220;для какого пользователя менять пароль: &#8221; ftp_usr<br />
    ctrl_login=`mysql -e &#8220;SELECT username FROM accounts WHERE username=&#8217;$ftp_usr&#8217;;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase`<br />
    ctrl_login=${ctrl_login:9}<br />
    while [ -z "$ftp_usr" ] || [ "$ctrl_login" != "$ftp_usr" ]<br />
    do<br />
    if [ -z "$ftp_usr" ]; then<br />
    echo &#8220;логин не может быть пустым&#8221;<br />
    elif [ "$ctrl_login" != "$ftp_usr" ]; then<br />
    echo &#8220;Пользователь не существует&#8221;<br />
    fi<br />
    read -p &#8220;Введите логин заново: &#8221; ftp_usr<br />
    ctrl_login=`mysql -e &#8220;SELECT username FROM accounts WHERE username=&#8217;$ftp_usr&#8217;;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase`<br />
    ctrl_login=${ctrl_login:9}<br />
    done<br />
    echo &#8220;Введите новый пароль для пользователя $ftp_usr&#8221;<br />
    read -s usr_pass<br />
    cor_usr_pass<br />
    mysql -e &#8220;UPDATE vsftpd . accounts SET pass=PASSWORD(&#8216;$usr_pass&#8217;) WHERE (accounts . username=&#8217;$ftp_usr&#8217;);&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase<br />
    if [ "$?" -eq 0 ]; then<br />
    clear<br />
    echo &#8220;Пароль пользователя $ftp_usr успешно изменен&#8221;<br />
    else<br />
    echo &#8220;Ошибка изменения пароля для пользователя $ftp_usr&#8221;<br />
    fi<br />
    }</p>
<p>    function del_usr { #Функция удаляет существуюсего пользователя, его директорию и делает резервную копию<br />
    read -p &#8220;Введите логин удаляемого пользователя: &#8221; ftp_usr<br />
    ctrl_login=`mysql -e &#8220;SELECT username FROM accounts WHERE username=&#8217;$ftp_usr&#8217;;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase`<br />
    ctrl_login=${ctrl_login:9}<br />
    while [ -z "$ftp_usr" ] || [ "$ctrl_login" != "$ftp_usr" ]<br />
    do<br />
    if [ -z "$ftp_usr" ]; then<br />
    echo &#8220;логин не может быть пустым&#8221;<br />
    elif [ "$ctrl_login" != "$ftp_usr" ]; then<br />
    echo &#8220;Пользователь не существует&#8221;<br />
    fi<br />
    read -p &#8220;Введите логин заново: &#8221; ftp_usr<br />
    ctrl_login=`mysql -e &#8220;SELECT username FROM accounts WHERE username=&#8217;$ftp_usr&#8217;;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase`<br />
    ctrl_login=${ctrl_login:9}<br />
    done</p>
<p>    mysql -e &#8220;DELETE FROM accounts WHERE (username=&#8217;$ftp_usr&#8217;);&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase&amp;&amp;<br />
    tar -cvf $ftp_path$ftp_usr$(date +%d%m%Y%).tar $ftp_path$ftp_usr&amp;&amp;<br />
    rm -r $ftp_path$ftp_usr&amp;&amp;<br />
    mv $ftp_path$ftp_usr$(date +%d%m%Y%).tar $ftp_backup_dir<br />
    if [ "$?" -eq 0 ]; then<br />
    clear<br />
    echo &#8220;Пользователь $ftp_usr успешно удален&#8221;<br />
    else<br />
    echo &#8220;Ошибка удаления пользователя $ftp_usr&#8221;<br />
    fi<br />
    }</p>
<p>    function show_all_users { #Функция показывает всех существующих пользователей vsftpd<br />
    clear<br />
    mysql -e &#8220;SELECT username FROM accounts;&#8221; -u $ftp_login &#8211;password=$ftp_pass -D $mysqlbase<br />
    }</p>
<p>    input_correct_pass<br />
    clear<br />
    echo</p>
<p>    chpass=&#8221;Изменить_пароль_пользователя&#8221;<br />
    new_usr=&#8221;Создать_нового_пользователя&#8221;<br />
    rmusr=&#8221;Удалить_пользователя&#8221;<br />
    dback=&#8221;Удалить_резервную_копию_каталогов_пользователей&#8221;<br />
    show_users=&#8221;Показать_список_всех_пользователей&#8221;<br />
    ext=&#8221;Выход&#8221;</p>
<p>    select opt in $chpass $new_usr $rmusr $dback $show_users $ext ; do<br />
    if [ "$opt" = "Изменить_пароль_пользователя" ]; then<br />
    change_pass<br />
    elif [ "$opt" = "Создать_нового_пользователя" ]; then<br />
    usr_add<br />
    elif [ "$opt" = "Удалить_пользователя" ]; then<br />
    del_usr<br />
    elif [ "$opt" = "Удалить_резервную_копию_каталогов_пользователей" ]; then<br />
    clear&amp;&amp;rm -rfv $ftp_backup_dir*<br />
    elif [ "$opt" = "Показать_список_всех_пользователей" ]; then<br />
    show_all_users<br />
    elif [ "$opt" = "Выход" ]; then<br />
    clear<br />
    exit<br />
    else<br />
    clear<br />
    echo &#8220;Допускаются цифры от 1 до 6&#8243;<br />
    echo &#8220;Для возврата в меню нажмите Enter&#8221;<br />
    fi<br />
    done</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/04/howto-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%b4%d0%bb%d1%8f-%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5%d0%bb%d1%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Установка и настройка VSFTPD + MYSQL (Ubuntu &amp; Debian)</title>
		<link>http://howtolinux.ru/2009/09/04/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-vsftpd-mysql-ubuntu-debian/</link>
		<comments>http://howtolinux.ru/2009/09/04/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-vsftpd-mysql-ubuntu-debian/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 17:39:09 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[пароль]]></category>
		<category><![CDATA[установка]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=309</guid>
		<description><![CDATA[Vsftpd считается одним из самых быстрых и хорошо защищенных FTP серверов под Linux. Обычно он устанавливается и конфигурируется под пользователей зарегистрированных в системе. В этом руководстве предполагается установка vsftpd под виртуальных пользователей, зарегистрированных в базе данных MySQL. Такое решение позволяет открыть и управлять до тысячи ftp пользователей на одном сервере. Управлять MySQL базой вы можете [...]]]></description>
			<content:encoded><![CDATA[<p>Vsftpd считается одним из самых быстрых и хорошо защищенных FTP серверов под Linux. Обычно он устанавливается и конфигурируется под пользователей зарегистрированных в системе. В этом руководстве предполагается установка vsftpd под виртуальных пользователей, зарегистрированных в базе данных MySQL.<br />
Такое решение позволяет открыть и управлять до тысячи ftp пользователей на одном сервере.<br />
Управлять MySQL базой вы можете с помощью пакета phpMyAdmin.<br />
Он имеет достаточно удобный графический интерфейс, который позволяет не применять коммандную строку.<br />
<span id="more-309"></span><br />
<strong>1 Введение</strong></p>
<p>Использовался дистрибутив Ubuntu 7.10.</p>
<p>Все пакеты взяты из штатных репозитариев.<br />
<strong><br />
2 Установка vsftpd, MySQL и phpMyAdmin</strong></p>
<p>Vsftpd собран без поддержки MySQL, по этой причине неоходимо установить пакет libpam-mysql для PAM аутентификацию в MySQL базе данных. таким образом мы должны установить следующие пакеты libpam-mysql совместно с vsftpd, MySQL, и пакет phpMyAdmin:</p>
<p>Код:</p>
<blockquote><p>sudo aptitude install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin</p></blockquote>
<p>Далее необходимо назначить пароль для пользователя root для управления MySQL (замените слово yourrootsqlpassword на ваш настоящий пароль) :</p>
<p>Код:</p>
<blockquote><p>mysqladmin -u root password yourrootsqlpassword</p></blockquote>
<p>проверим все ли получилось?</p>
<p>Код:</p>
<blockquote><p>netstat -tap | grep mysql</p></blockquote>
<p>должно написать:</p>
<p>Код:</p>
<blockquote><p>tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld</p></blockquote>
<p>Это если у вас имя хоста только локальное localhost.localdomain, в противном случае вы увидите что-то типа:</p>
<p>Код:</p>
<blockquote><p>tcp 0 0 *:mysql *:* LISTEN 2713/mysqld</p></blockquote>
<p>Для смены пароля вашей базы данных MySQL под ваш hostname, примените следующую комманду:<br />
Код:</p>
<blockquote><p>mysqladmin -h server1.example.com -u root password yourrootsqlpassword</p></blockquote>
<p><strong>3 Создаем в терминале суперпользователя MySQL базу данных под vsftpd<br />
</strong><br />
Код:</p>
<blockquote><p>mysql -u root -p</p></blockquote>
<p>в появившемся окне выполняем следующие команды (т.е. находясь в командной оболочке MySQL создадим базу):<br />
Их можно скопировать выделить и затем вставить, нажав среднюю кновку мыши.</p>
<p>Код:</p>
<blockquote><p>CREATE DATABASE vsftpd;<br />
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO &#8216;vsftpd&#8217;@'localhost&#8217; IDENTIFIED BY &#8216;ftpdpass&#8217;;<br />
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO &#8216;vsftpd&#8217;@'localhost.localdomain&#8217; IDENTIFIED BY &#8216;ftpdpass&#8217;;<br />
FLUSH PRIVILEGES;</p></blockquote>
<p>Далее таблицу для этой базы:</p>
<p>Код:</p>
<blockquote><p>USE vsftpd;</p></blockquote>
<p>Код:</p>
<blockquote><p>CREATE TABLE `accounts` (<br />
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,<br />
`username` VARCHAR( 30 ) NOT NULL ,<br />
`pass` VARCHAR( 50 ) NOT NULL ,<br />
UNIQUE (<br />
`username`<br />
)<br />
) ENGINE = MYISAM ;<br />
quit;</p></blockquote>
<p>Запустив в браузере ссылку- http://localhost/phpmyadmin/ (или ваш- например: server1.example.com, или можно вставить IP адрес вашего сервера) вы попадете в утилиту phpmyadmin.<br />
С помощью этой утилиты вы можете создать или изменить эту же базу данных (vsftpd), и тут же просмотреть её.<br />
Позже с помощью неё вы сможете управлять вашим vsftpd сервером.</p>
<p><strong>4 Конфигурируем vsftpd</strong></p>
<p>В начале создаем непривилегированного пользователя vsftpd (с домашней директорией: /home/vsftpd) входящего в группу: nogroup. Домашние директории виртуальных пользователей, в дальнешем будут расположены в этой /home/vsftpd директории (например: /home/vsftpd/user1, /home/vsftpd/user2, и т.д.).</p>
<p>Код:</p>
<blockquote><p>useradd &#8211;home /home/vsftpd &#8211;gid nogroup -m &#8211;shell /bin/false vsftpd</p></blockquote>
<p>Сохраняем оригинальный /etc/vsftpd.conf файл и создаем другой:</p>
<p>Код:</p>
<blockquote><p>cp /etc/vsftpd.conf /etc/vsftpd.conf_orig<br />
cat /dev/null &gt; /etc/vsftpd.conf<br />
gedit /etc/vsftpd.conf</p></blockquote>
<p>Вставляем в открывшееся окно следующий текст:</p>
<p>Код:</p>
<blockquote><p>listen=YES<br />
anonymous_enable=NO<br />
local_enable=YES<br />
write_enable=YES<br />
local_umask=022<br />
dirmessage_enable=YES<br />
xferlog_enable=YES<br />
connect_from_port_20=YES<br />
nopriv_user=vsftpd<br />
chroot_local_user=YES<br />
secure_chroot_dir=/var/run/vsftpd<br />
pam_service_name=vsftpd<br />
rsa_cert_file=/etc/ssl/certs/vsftpd.pem<br />
guest_enable=YES<br />
guest_username=vsftpd<br />
local_root=/home/vsftpd/$USER<br />
user_sub_token=$USER<br />
virtual_use_local_privs=YES</p></blockquote>
<blockquote><p>user_config_dir=/etc/vsftpd_user_conf</p></blockquote>
<p>сохраняем созданный файл.<br />
Посмотреть примеры можно по адресу: http://vsftpd.beasts.org/vsftpd_conf.html</p>
<p>Для использования в дальнейшем опций: user_config_dir, создадим вновь специальную директорию:</p>
<p>Код:</p>
<blockquote><p>mkdir /etc/vsftpd_user_conf</p></blockquote>
<p>В эту директорию в дальнейшем вы можете класть файлы конфигурации VSFTPD для отдельных пользователей.</p>
<p>Так же должны сконфигурировать PAM для ваших виртуальных FTP пользователей с аутентификацией в MySQL базе данных вместо расположения в /etc/passwd и /etc/shadow. Конфигурационный файл для PAM под vsftpd должен находится в папке /etc/pam.d/vsftpd. Сохраняем оригинальный и создаем новый:</p>
<p>Код:</p>
<blockquote><p>cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig<br />
cat /dev/null &gt; /etc/pam.d/vsftpd<br />
gedit /etc/pam.d/vsftpd</p></blockquote>
<p>Вставляем в открывшееся окно следующий текст:</p>
<p>Код:</p>
<blockquote><p>auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2<br />
account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2</p></blockquote>
<p>Сохраняем этот файл.</p>
<p>Помните теперь что вы единственный, кто может восстановить ваш MySQL пароль !</p>
<p>Перезапустим наш vsftpd сервер:</p>
<p>Код:</p>
<blockquote><p>/etc/init.d/vsftpd restart</p></blockquote>
<p><strong>5 Создаем первого виртуального пользователя</strong></p>
<p>Заходим опять под root в оболочку MySQL :</p>
<p>Код:</p>
<blockquote><p>mysql -u root -p</p></blockquote>
<p>Пишем или копируем команду:</p>
<p>Код:</p>
<blockquote><p>USE vsftpd;</p></blockquote>
<p>Создаем пользователяпод именем: testuser и паролем secret:</p>
<p>Код:</p>
<blockquote><p>INSERT INTO accounts (username, pass) VALUES(&#8216;testuser&#8217;, PASSWORD(&#8216;secret&#8217;)); quit;</p></blockquote>
<p>Домашняя директория testuser’а будет здесь /home/vsftpd/testuser.<br />
Если она не создалась автоматически, создадим эту директорию вручную в группе: nogroup:</p>
<p>Код:</p>
<blockquote><p>mkdir /home/vsftpd/testuser<br />
chown vsftpd:nogroup /home/vsftpd/testuser</p></blockquote>
<p>Теперь через любой FTP клиент для Linux или Windows, или используя просто браузер, вы можете соединится c вновь созданным сервером, используя имя testuser и пароль secret.</p>
<p style="text-align: right"><em>Взято с <a href="http://sudouser.com/ustanovka-i-nastrojka-vsftpd-mysql-ubuntu-debian" target="_blank">http://sudouser.com</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/04/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d0%b8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-vsftpd-mysql-ubuntu-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: FTP-сервер VsFTPd с виртуальными пользователями, хранимыми в MySQL</title>
		<link>http://howtolinux.ru/2009/09/04/howto-ftp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-vsftpd-%d1%81-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc%d0%b8-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5/</link>
		<comments>http://howtolinux.ru/2009/09/04/howto-ftp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-vsftpd-%d1%81-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc%d0%b8-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 17:26:31 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[FTP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[xine]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[пароль]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=307</guid>
		<description><![CDATA[В статье рассматривается настройка FTP-сервера на базе VsFTPd под управлением Ubuntu Linux 9.04. Вход на сервер осуществляется как анонимно, так и с помощью авторизации. Все виртуальные пользователи имеют разграниченые права доступа. Статистика посещений и закачек ведется через Web-интерфейс. Установим сам FTP-сервер. # aptitude install vsftpd Установим СУБД MySQL: # aptitude install mysql-server mysql-client Назначим пароль [...]]]></description>
			<content:encoded><![CDATA[<p>В статье рассматривается настройка FTP-сервера на базе VsFTPd под управлением Ubuntu Linux 9.04. Вход на сервер осуществляется как анонимно, так и с помощью авторизации. Все виртуальные пользователи имеют разграниченые права доступа. Статистика посещений и закачек ведется через Web-интерфейс.<br />
<span id="more-307"></span><br />
Установим сам FTP-сервер.</p>
<blockquote><p># aptitude install vsftpd
</p></blockquote>
<p>Установим СУБД MySQL:</p>
<blockquote><p># aptitude install mysql-server mysql-client</p></blockquote>
<p>Назначим пароль суперпользователя для СУБД:</p>
<blockquote><p># mysqladmin -u root password root_password</p></blockquote>
<p>Создадим базу данных для вируальных пользователей. Я назову ее vsftpd. Пользователь БД будет vsftpd c таким же паролем.</p>
<blockquote><p># mysql -u root -p<br />
Enter password:<br />
Welcome to the MySQL monitor. Commands end with ; or \g.<br />
Your MySQL connection id is 51<br />
Server version: 5.0.67-0ubuntu6 (Ubuntu)</p>
<p>Type &#8220;help;&#8221; or &#8220;\h&#8221; for help. Type &#8220;\c&#8221; to clear the buffer.
</p></blockquote>
<p>Создаем БД</p>
<blockquote><p>mysql&gt; CREATE DATABASE vsftpd;</p></blockquote>
<p>Даем нужные права пользователю vsftpd</p>
<blockquote><p>mysql&gt; GRANT ALL ON vsftpd.* TO &#8220;vsftpd&#8221;@&#8221;localhost&#8221; IDENTIFIED BY &#8220;vsftpd&#8221;;
</p></blockquote>
<p>Применяем новые привелегии</p>
<blockquote><p>mysql&gt; FLUSH PRIVILEGES;</p></blockquote>
<p>Делаем текущей нашу БД</p>
<blockquote><p>mysql&gt; USE vsftpd;</p></blockquote>
<p>Создаем необходимые таблицы</p>
<blockquote><p>mysql&gt; CREATE TABLE `accounts` (<br />
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,<br />
`username` VARCHAR( 30 ) NOT NULL ,<br />
`password` VARCHAR( 50 ) NOT NULL ,<br />
UNIQUE ( `username` )<br />
)<br />
ENGINE = MYISAM ;
</p></blockquote>
<p>Выходим из консоли MySQL</p>
<blockquote><p>mysql&gt; quit;</p></blockquote>
<p>Cоздадим пользователя vsftpd, от имени которого будут работать наши виртуальные пользователи:</p>
<blockquote><p># useradd &#8211;home /home/vsftpd &#8211;gid nogroup -m &#8211;shell /bin/false vsftpd</p></blockquote>
<p>Отредактируем конфигурационный файл /etc/vsftpd.conf:</p>
<blockquote><p># Разрешать анонимный доступ<br />
anonymous_enable=YES<br />
# Корненая директория анонимного пользователя, где хранятся директории incoming и pub<br />
anon_root=/home/ftp/<br />
# Не требуется пароль для анонимного пользователя<br />
no_anon_password=YES<br />
# Включить локальных пользователей. В качестве них будут виртуальные пользователи. Чтобы системные пользователи имели доступ<br />
# на ftp, необходимо их внести в базу, как будет указано ниже.<br />
local_enable=YES<br />
# Разрешить запись для анонимного пользователя в incoming<br />
write_enable=YES<br />
# Разрешить заливать файлы анонимным пользователям в incoming<br />
anon_upload_enable=YES<br />
# Разрешить создавать директории анонимным пользователям в incoming<br />
anon_mkdir_write_enable=YES<br />
# Разрешить запись в другие директории анонимному пользователю<br />
anon_other_write_enable=YES<br />
# Маска локального пользователя (rwxr-xr-x)<br />
local_umask=0022<br />
# Маска анонимного пользователя (rwxrwx&#8212;)<br />
anon_umask=0007<br />
# Режим для открытия файлов<br />
file_open_mode=0777<br />
# Если запускается самостоятельно. Если спользуется inetd или xinetd, необходимо установить значение listen=NO<br />
listen=YES<br />
# Порт, который будет слушать демон<br />
listen_port=21<br />
# Минимальный пассивный порт<br />
pasv_min_port=30000<br />
# Максимальный пассивный порт<br />
pasv_max_port=30999<br />
# Формат лога<br />
xferlog_std_format=YES<br />
# Файл лога<br />
xferlog_file=/var/log/vsftpd.log<br />
# Включить сообщения, которые выдаются при входе в определенную директорию<br />
dirmessage_enable=YES<br />
# Баннер, который выводится при подключении к фтп-серверу<br />
ftpd_banner=Welcome to my FTP Service<br />
# Пользователь, от имени которого будут вестись все действия на фтп<br />
ftp_username=ftp<br />
# Просмотр с помощью ls -R, рекомендую оставить, поскольку некоторые клиенты именно так и просматривают<br />
ls_recurse_enable=YES<br />
# Активируем виртуальных пользователей<br />
guest_enable=YES<br />
# Действия для виртуальных пользователей ведутся от имени пользователя vsftpd<br />
guest_username=vsftpd<br />
# Виртуальные пользователи имеют права локальных пользователей<br />
virtual_use_local_privs=YES<br />
# Файл, который используется для аутентификации виртуальных пользователей<br />
pam_service_name=vsftpd<br />
# Домашнии директории для каждого виртуального пользователя<br />
user_sub_token=$USER<br />
local_root=/home/vsftpd/$USER<br />
# Привязать локального пользователя к замкнутой среде<br />
chroot_local_user=YES<br />
# Директория, которая используется для замкнутой среды<br />
secure_chroot_dir=/var/run/vsftpd<br />
# Отображает &#8220;ftp&#8221; вместо ID польователя при просмотре с помощью ls -l<br />
hide_ids=YES<br />
# Имя файл в /etc/pam.d/, где хранятся необходимые настройки vsftpd<br />
pam_service_name=vsftpd<br />
# Дадим скорость 1Mbit/s на скачку и закачку для анонимных пользователей<br />
anon_max_rate=65536<br />
# Дадим скорость 10Mbit/s на скачку и закачку для виртуальных пользователей<br />
local_max_rate=655360<br />
# Лог запросов для сервера. Может быть понадобится для ведения статистики. Если нет — можно отключить<br />
log_ftp_protocol=YES<br />
# Максимальное число клиентов:<br />
max_clients=50<br />
# Максимальное число клиентов для одного уникального IP адресса. Используется для предотвращения многопотоковых закачек,<br />
# которые забивают канал<br />
max_per_ip=1
</p></blockquote>
<p><strong>При копипастинге конфига нужно быть осторожным ­ в конце строк не должно быть пробелов, иначе демон не запустится.</strong></p>
<p>Cоздадим необходимые директории:</p>
<blockquote><p># mkdir -p /home/ftp/incoming<br />
# mkdir -p /home/ftp/pub</p></blockquote>
<p>Выставим на них необходимые права:</p>
<blockquote><p># chmod 4775 /home/ftp/pub<br />
# chmod 3773 /home/ftp/incoming</p></blockquote>
<p>Устанавливаем пакет libpam-mysql, который является связующим звеном между VsFTPd и MySQL:</p>
<blockquote><p># aptitude install libpam-mysql</p></blockquote>
<p>Отредактируем файл /etc/pam.d/vsftpd. Закоментируем или удалим все строки, оставив только эти:</p>
<blockquote><p># For VsFTPd virtual users:<br />
auth required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2<br />
account required pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2</p></blockquote>
<p>Перезапустим демон, чтобы он загрузил библиотеку pam_mysql.so:</p>
<blockquote><p># /etc/init.d/vsftpd restart<br />
* Stopping FTP server: vsftpd [ OK ]<br />
* Starting FTP server: vsftpd [ OK ]
</p></blockquote>
<p>Создадим виртуального пользователя &#8220;user1&#8243; c паролем &#8220;password1&#8243;:</p>
<blockquote><p># mysql vsftpd -u vsftpd -pvsftpd<br />
Reading table information for completion of table and column names<br />
You can turn off this feature to get a quicker startup with -A</p>
<p>Welcome to the MySQL monitor. Commands end with ; or \g.<br />
Your MySQL connection id is 52<br />
Server version: 5.0.67-0ubuntu6 (Ubuntu)</p>
<p>Type &#8220;help;&#8221; or &#8220;\h&#8221; for help. Type &#8220;\c&#8221; to clear the buffer.</p>
<p>mysql&gt; INSERT INTO accounts (username, password) VALUES(&#8220;user1&#8243;, PASSWORD (&#8220;password1&#8243;);<br />
mysql&gt; quit;</p></blockquote>
<p>Создадим домашнюю директорию виртуального пользователя:</p>
<blockquote><p># mkdir /home/vsftpd/user1</p></blockquote>
<p>Выставим на нее необходимые права:</p>
<blockquote><p># chown vsftpd:nogroup /home/vsftpd/user1</p></blockquote>
<p>Тестируем:</p>
<blockquote><p># ftp localhost<br />
Connected to localhost.<br />
220 Welcome to my FTP Service<br />
Name (localhost:root): anonymous<br />
230 Login successful.<br />
Remote system type is UNIX.<br />
Using binary mode to transfer files.<br />
ftp&gt; ls<br />
200 PORT command successful. Consider using PASV.<br />
150 Here comes the directory listing.<br />
drwxrws-wt 2 ftp ftp 4096 Mar 29 14:40 incoming<br />
drwsrwxr-x 2 ftp ftp 4096 Mar 29 14:41 pub<br />
226 Directory send OK.<br />
ftp&gt; quit<br />
221 Goodbye.</p>
<p># ftp localhost<br />
Connected to localhost.<br />
220 Welcome to my FTP Service<br />
Name (localhost:root): user1<br />
331 Please specify the password.<br />
Password:<br />
230 Login successful.<br />
Remote system type is UNIX.<br />
Using binary mode to transfer files.<br />
ftp&gt; ls<br />
200 PORT command successful. Consider using PASV.<br />
150 Here comes the directory listing.<br />
226 Directory send OK.<br />
ftp&gt; quit<br />
221 Goodbye.</p></blockquote>
<p>Сейчас я покажу на примере, как сделать, чтобы:<br />
1) виртуальный пользователь porno-downloader мог скачивать содержимое директории /home/dim3dro1/Video/Porno/.<br />
2) виртуальный пользователь cisco мог пополнять коллекцию литературы в /home/dim3dro1/Documents/Cisco/.<br />
Создадим этих пользователей:</p>
<blockquote><p># mysql vsftpd -u vsftpd -pvsftpd<br />
mysql&gt; INSERT INTO accounts (username, password) VALUES(&#8220;porno-downloader&#8221;, PASSWORD (&#8220;porno&#8221;);<br />
mysql&gt; INSERT INTO accounts (username, password) VALUES(&#8220;cisco&#8221;, PASSWORD (&#8220;cisco&#8221;);<br />
mysql&gt; quit;
</p></blockquote>
<p>Создадим домашние директории этих пользователей:</p>
<blockquote><p># mkdir /home/vsftpd/porno-downloader<br />
# mkdir /home/vsftpd/cisco</p></blockquote>
<p>Выставим на них необходимые права:</p>
<blockquote><p># chown vsftpd:nogroup /home/vsftpd/porno-downloader<br />
# chown vsftpd:nogroup /home/vsftpd/cisco</p></blockquote>
<p>Теперь будем монтировать в домашние директории пользователей вышеуказаное содержимое. Для этого воспользуемся параметром &#8211;bind, который позволяет перемонтировать дерево в другом месте, так, что его содержимое доступно в обоих местах. Открываем файл /etc/fstab и добавляем в конец следующие строки:</p>
<blockquote><p># Mounts for user &#8220;porno-downloader&#8221;<br />
/home/dim3dro1/Video/Porno /home/vsftpd/porno-downloader none ro,bind 0 0<br />
# Mounts for user &#8220;cisco&#8221;<br />
/home/dim3dro1/Documents/Cisco /home/vsftpd/cisco none rw,bind 0 0
</p></blockquote>
<p>Перемонтируем все точки монтирования, указанные в /etc/fstab:</p>
<blockquote><p># mount -a</p></blockquote>
<p>В результате было получено:<br />
1) пользователь porno-downloader имеет доступ к директории /home/dim3dro1/Video/Porno с правами только для чтения;<br />
2) пользователь cisco имеет доступ к директории /home/dim3dro1/Documents/Cisco с правами на запись.</p>
<p>Снимать статистику FTP-траффика будем с помощью AWStats. Установим его:</p>
<blockquote><p># aptitude install awstats</p></blockquote>
<p>Создаем конфигурационный файл для FTP-сервера:</p>
<blockquote><p># touch /etc/awstats/awstats.localhost.conf</p></blockquote>
<p>Добавляем в него следующие строки:</p>
<blockquote><p>SiteDomain=&#8221;localhost&#8221;<br />
LogFile=&#8221;/var/log/vsftpd.log&#8221;<br />
LogType=F<br />
LogFormat=&#8221;%time3 %other %host %bytesd %url %other %other %method %other %logname %other %code %other %other&#8221;<br />
LogSeparator=&#8221;\s&#8221;<br />
NotPageList=&#8221;"<br />
LevelForBrowsersDetection=0<br />
LevelForOSDetection=0<br />
LevelForRefererAnalyze=0<br />
LevelForRobotsDetection=0<br />
LevelForWormsDetection=0<br />
LevelForSearchEnginesDetection=0<br />
ShowLinksOnUrl=0<br />
ShowMenu=1<br />
ShowSummary=UVHB<br />
ShowMonthStats=UVHB<br />
ShowDaysOfMonthStats=HB<br />
ShowDaysOfWeekStats=HB<br />
ShowHoursStats=HB<br />
ShowDomainsStats=HB<br />
ShowHostsStats=HBL<br />
ShowAuthenticatedUsers=HBL<br />
ShowRobotsStats=0<br />
ShowEMailSenders=0<br />
ShowEMailReceivers=0<br />
ShowSessionsStats=1<br />
ShowPagesStats=PBEX<br />
ShowFileTypesStats=HB<br />
ShowFileSizesStats=0<br />
ShowBrowsersStats=0<br />
ShowOSStats=0<br />
ShowOriginStats=0<br />
ShowKeyphrasesStats=0<br />
ShowKeywordsStats=0<br />
ShowMiscStats=0<br />
ShowHTTPErrorsStats=0<br />
ShowSMTPErrorsStats=0</p></blockquote>
<p>Устанавливаем Web-сервер apache2:</p>
<blockquote><p># aptitude install apache2
</p></blockquote>
<p>Создаем конфигурационный файл для AWStats:</p>
<blockquote><p># touch /etc/apache2/awstats.conf</p></blockquote>
<p>Добавляем в него следующие строки:</p>
<blockquote><p>Alias /awstatsclasses &#8220;/usr/share/awstats/lib/&#8221;<br />
Alias /awstats-icon/ &#8220;/usr/share/awstats/icon/&#8221;<br />
Alias /awstatscss &#8220;/usr/share/doc/awstats/examples/css&#8221;<br />
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />
ScriptAlias /awstats/ /usr/lib/cgi-bin/<br />
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch</p></blockquote>
<p>Добавляем в конец файла /etc/apache2/apache2.conf такую строку:</p>
<blockquote><p>Include /etc/apache2/awstats.conf</p></blockquote>
<p>И перезапустим Web-сервер:</p>
<blockquote><p># /etc/init.d/apache2 restart<br />
* Restarting web server apache2 [ OK ]</p></blockquote>
<p>Сгенерируем статистику:</p>
<blockquote><p># sudo -u www-data /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -update -config=localhost<br />
Create/Update database for config &#8220;/etc/awstats/awstats.localhost.conf&#8221; by AWStats version 6.7 (build 1.892)<br />
From data in log file &#8220;/var/log/vsftpd.log&#8221;&#8230;<br />
Warning: HostAliases parameter is not defined, awstats choose &#8220;localhost localhost 127.0.0.1&#8243;.<br />
Phase 1 : First bypass old records, searching new record&#8230;<br />
Searching new records from beginning of log file&#8230;<br />
Jumped lines in file: 0<br />
Parsed lines in file: 4<br />
Found 0 dropped records,<br />
Found 0 corrupted records,<br />
Found 4 old records,<br />
Found 0 new qualified records.
</p></blockquote>
<p>Редактируем файл /etc/cron.d/awstats. Удаляем все и добавляем эту строку:</p>
<blockquote><p>0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.localhost.conf -a -r /var/log/vsftpd.log ] &amp;&amp; /usr/lib/cgi-bin/awstats.pl -config=localhost -update &gt;/dev/null</p></blockquote>
<p>Посмотреть на результаты работы можно, открыв в браузере страницу:</p>
<blockquote><p>http://localhost/awstats/awstats.pl</p></blockquote>
<p>БОНУС: VsFTPD + Active Directory.<br />
Предполагается, что доменное имя — &#8220;example.com.ua&#8221;.<br />
Устанавливаем аутентификационные сервисы для АД:</p>
<blockquote><p># aptitude install likewise-open</p></blockquote>
<p>Присоединим машинку к домену (для этого необходимо знать пароль Администратора домена):</p>
<blockquote><p># domainjoin-cli join example.com.ua Administrator</p></blockquote>
<p>Запустим демона:</p>
<blockquote><p># /etc/init.d/likewise-open start<br />
* Starting the Likewise-open auth daemon [ OK ]</p></blockquote>
<p>Далее редактируем файл /etc/pam.d/vsftpd. Удаляем все и добавляем следующие строки:</p>
<blockquote><p>###<br />
# Active Directory<br />
###<br />
auth required pam_nologin.so no_warn<br />
auth sufficient pam_winbind.so krb5_auth<br />
auth required pam_unix.so no_warn try_first_pass<br />
account required pam_nologin.so no_warn<br />
account sufficient pam_winbind.so krb5_auth<br />
account required pam_unix.so<br />
session required pam_permit.so<br />
###<br />
# MySQL<br />
###<br />
auth requisite pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2<br />
account requisite pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=password crypt=2</p></blockquote>
<p>Проверяем:</p>
<blockquote><p># ftp localhost<br />
Connected to localhost.<br />
220 Welcome to my FTP Service<br />
Name (localhost:root): Administrator<br />
331 Please specify the password.<br />
Password:<br />
230 Login successful.<br />
Remote system type is UNIX.<br />
Using binary mode to transfer files.<br />
ftp&gt; ls<br />
200 PORT command successful. Consider using PASV.<br />
150 Here comes the directory listing.<br />
226 Directory send OK.<br />
ftp&gt; quit<br />
221 Goodbye.</p></blockquote>
<p style="text-align: right"><em>Взято с <a href="http://jampo.com.ua/forum/board67/theme2385.htm/page1/" target="_blank">http://jampo.com.ua</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/04/howto-ftp-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-vsftpd-%d1%81-%d0%b2%d0%b8%d1%80%d1%82%d1%83%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc%d0%b8-%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d1%82%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: MySQL &#8211; резервное копирование</title>
		<link>http://howtolinux.ru/2009/09/04/howto-mysql-%d1%80%d0%b5%d0%b7%d0%b5%d1%80%d0%b2%d0%bd%d0%be%d0%b5-%d0%ba%d0%be%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/</link>
		<comments>http://howtolinux.ru/2009/09/04/howto-mysql-%d1%80%d0%b5%d0%b7%d0%b5%d1%80%d0%b2%d0%bd%d0%be%d0%b5-%d0%ba%d0%be%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 17:13:00 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[пароль]]></category>
		<category><![CDATA[резервное копирование]]></category>
		<category><![CDATA[удобство]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=305</guid>
		<description><![CDATA[База данных естественно рекомендует создания резервных копий. Мотивация проста &#8211; любой программный или аппаратный сбой может повредить БД. Для однократного резервирования нам потребуется только mysql, для регулярного &#8211; любой планировщик (лучше всего &#8211; cron) Для создания резервных копий служит утилита mysqldump (входит в состав mysql) Синтаксис для создания копии всех баз данных: Код mysqldump -uпользователь [...]]]></description>
			<content:encoded><![CDATA[<p>База данных естественно рекомендует создания резервных копий. Мотивация проста &#8211; любой программный или аппаратный сбой может повредить БД.</p>
<p>Для однократного резервирования нам потребуется только mysql, для регулярного &#8211; любой планировщик (лучше всего &#8211; cron)</p>
<p>Для создания резервных копий служит утилита mysqldump (входит в состав mysql)<br />
<span id="more-305"></span><br />
Синтаксис для создания копии всех баз данных:<br />
Код</p>
<blockquote><p>mysqldump -uпользователь -pпароль &#8211;all-databases &gt; /путь/mysql_all.sql</p></blockquote>
<p>где указываются параметры пользователя с правами на чтение всех баз данных и путь куда вы хотите ее сохранить.</p>
<p>Для резервного копирования по расписанию я рекомендую следующий код:<br />
Код</p>
<blockquote><p>mysqldump -uпользователь -pпароль &#8211;all-databases &gt; /путь/mysql_all.sql</p></blockquote>
<p>Код</p>
<blockquote><p>tar czf /путь/mysqldump-`date +%d.%m.%y`.tgz /путь/mysql_all.sql</p></blockquote>
<p>вторая строчка отвечает за создание архива, с именем mysql-текущая_дата.tgz<br />
таким образом вы получаете ежедневную копию mysql и можете откатится на любой день.</p>
<p>Этот код можно добавить в cron двумя путями:<br />
1)<br />
создать текстовый файл в директории /etc/cron.daily/ , скопировать туда код и сделать его исполняемым (chmod +x имя_файла)</p>
<p>2) использовать crontab -e для редактирования расписания cron.<br />
туда нужно ввести:<br />
Код</p>
<blockquote><p>0 0 * * * mysqldump -uпользователь -pпароль &#8211;all-databases &gt; /путь/mysql_all.sql;tar czf /путь/mysqldump-`date +%d.%m.%y`.tgz /путь/mysql_all.sql</p></blockquote>
<p>и сохранить файл <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>результат обоих методов одинаков</p>
<p>Единственное неудобство &#8211; все базы данных сохраняются в одном файле. Избежать этого можно используя создав следующий скрипт:<br />
Код</p>
<blockquote><p>databases=(`echo &#8216;show databases;&#8217; | mysql -uпользователь -pпароль | grep -v ^Database$`)<br />
for d in &#8220;${databases[@]}&#8221;; do<br />
if [[ $d != 'tmp' &amp;&amp; $d != 'test' ]]<br />
then<br />
echo ${d}<br />
mysqldump -uимя_пользователя -pпароль ${d} &gt; /backup/mysql/mysql_day/${d}.sql<br />
fi<br />
done<br />
tar czf /backup/mysql/mysqldump-`date +%d.%m.%y`.tgz /backup/mysql/mysql_day/</p></blockquote>
<p>предполагается, что вы храните резервные копии в /backup/mysql и существует каталог /backup/mysq/mysql_day </p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/04/howto-mysql-%d1%80%d0%b5%d0%b7%d0%b5%d1%80%d0%b2%d0%bd%d0%be%d0%b5-%d0%ba%d0%be%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Установка Nginx, PHP5, FastCGI, XCache и MySQL на Ubuntu</title>
		<link>http://howtolinux.ru/2009/09/03/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-nginx-php5-fastcgi-xcache-%d0%b8-mysql-%d0%bd%d0%b0-ubuntu-2/</link>
		<comments>http://howtolinux.ru/2009/09/03/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-nginx-php5-fastcgi-xcache-%d0%b8-mysql-%d0%bd%d0%b0-ubuntu-2/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 14:49:59 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ngnix]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[Lighttpd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP5]]></category>
		<category><![CDATA[restart]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[XCache]]></category>
		<category><![CDATA[на]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[пароль]]></category>
		<category><![CDATA[сеть]]></category>
		<category><![CDATA[темы]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=234</guid>
		<description><![CDATA[Как только вы начинаете чувствовать нагрузку на свой купленный за 5 долларов в месяц сервер, то читая статьи на тему «Когда стоит переходить на VPS», подумывайте о покупке чего-нибудь более серьёзного. И как только это «более серьёзное» находится в вашем распоряжении, перед вами открывается целая вселенная, когда всё зависит только от вас и вариантов развития [...]]]></description>
			<content:encoded><![CDATA[<p>Как только вы начинаете чувствовать нагрузку на свой купленный за 5 долларов в месяц сервер, то читая статьи на тему «Когда стоит переходить на VPS», подумывайте о покупке чего-нибудь более серьёзного. И как только это «более серьёзное» находится в вашем распоряжении, перед вами открывается целая вселенная, когда всё зависит только от вас и вариантов развития событий миллионы. Вы – администратор виртуального (или физического) сервера.</p>
<p>Эта статья предназначена в первую очередь начинающим админам, желающим без многочасового поиска по Сети сделать всё быстро и правильно. Поэтому не будем откладывать и начнём.</p>
<p><span id="more-234"></span><br />
    * Apache хороший сервер, особенно если вы ставите его только на обработку скриптов и не загружаете отдачей статики. При правильной настройке с ним можно творить чудеса. Но я принципиально отказался от его использования, так как настроить один сервер проще и быстрее чем два, а в случае с Apache нам понадобится ещё один.<br />
    * Я использую Nginx как полноценную замену Apache. Он лёгкий, настраиваемый, мощный. Хорошо работает с Drupal. Но это абсолютно не значит, что вы не можете использовать Lighttpd. Просто поищите тогда другую статью <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
    * Операционная система, на которой производилась инсталляция &#8211; Ubuntu Hardy LTS (поддержка до 2013 года). Если вы используете другую – вам не нужно искать другую статью, просто у вас будет немного отличаться синтаксис запуска программ. Например, вместо aptitude будете использовать apt-get, yum, и т.д. Читайте документацию к вашей системе. Однако по большей части на любых Linux системах мой мануал сработает. Любители ./configure, make, make install , порадуются только один раз.<br />
    * Виртуальный сервер куплен у компании Slicehost. Бесподобная поддержка, куча образовательных материалов на все случаи жизни, и очень демократичные цены (20$ за VPS c 256MB оперативы), плюс – идеология Слайсхоста заставит вас забыть о том, что такое Cpanel, Plesk и прочие костыли для управления хостингом. Вы будете делать всё сами, ни от кого не зависеть, тотальная свобода для творчества и работы! В общем, сначала попробуйте, а потом вы останетесь у них навсегда <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Кстати, зарегистрировавшись по моей реферальной ссылке, вы получите круглосуточную поддержку ещё и от меня.</p>
<p>Итак, помним, что в итоге мы должны получить HTTP сервер Nginx + PHP5 (С Fast-cgi и XCache) + MySQL на Ubuntu Hardy LTS.<br />
Первоначальная настройка сервера</p>
<p>Нет, ребята, так дело не пойдёт, настолько я распыляться не буду. Идём сюда и делаем как написано. Настроить сервер – значит установить файрвол, создать юзеров для доступа по SSH, отключить учётную запись root, раскрасить bash, проапдейтить пакеты до последних версий. Просто следуйте простым инструкциям здесь и здесь. Всё очень доступно.<br />
Установка PHP, MySQL и необходимых пакетов</p>
<p>    * Устанавливаем необходимые пакеты (Build Essentials)</p>
<blockquote><p>sudo aptitude install build-essential</p></blockquote>
<p>    * Устанавливаем PHP c клиентом. И без Apache!</p>
<blockquote><p>sudo aptitude install php5-common php5-dev php5-mysql php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-cgi php5-mcrypt php5-curl php5-gd php5-mhash php5-pspell php5-snmp php5-sqlite libmagick9-dev php5-cli
</p></blockquote>
<p>Возможно, я несколько перебрал с пакетами, но некоторые из них вам могут понадобиться в дальнейшем, они не занимают много места, поэтому абсолютно не помешают.</p>
<p>    * Устанавливаем MySQL сервер</p>
<blockquote><p>sudo aptitude install mysql-server mysql-client libmysqlclient15-dev</p></blockquote>
<p>    * Защищаем его от недоброжелателей</p>
<blockquote><p>mysql_secure_installation</p></blockquote>
<p>Конечно, MySQL – вещь сложная в настройке, и какой бы ни был у вас сервер, вам придётся потратить много времени на её оптимизации. Рекомендую после того, как разберётесь с сервером, начать тюнинг MySQL c помощью этого скрипта.<br />
Установка и настройка сервера Nginx</p>
<p>Существуют миллионы инструкций как компилировать программы из исходников, но мне не хочется этим заморачиваться. К тому же Ubuntu позволяет проделывать такие вещи.</p>
<blockquote><p>sudo aptitude install nginx
</p></blockquote>
<p>Всё, а вы ещё что-то ожидали? Эта строка установит сам сервер и основные зависимости. После этого вам остаётся только запустить его и проверить, всё ли работает.</p>
<blockquote><p>sudo /etc/init.d/nginx start</p></blockquote>
<p>Затем наберите в браузере IP (или URL) вашего сервера и насладитесь простым, но очень значимым для нас приветственным экраном Nginx.</p>
<blockquote><p>
nginx_welcome_screen</p></blockquote>
<p>На этом этапе рекомендуется откинуться на спинку кресла, отдохнуть минут 10, или выпить чаю-кофе. Ваш сервер уже официально в Интернете. В принципе, вы уже можете разместить на нём сайт (только не на PHP, хотя мы его вроде и ставили). Для удовольствия – попробуйте залить туда пару страничек HTML.</p>
<p>Действительно, куда залить?</p>
<p>По умолчанию после установки сервера вышеописанным способам дефолтный хост ведёт в папку на сервере /var/www/nginx-default. Мы это сможем легко поменять уже через несколько минут.</p>
<p>Помните, что контролируется Nginx тремя командами:</p>
<blockquote><p>sudo /etc/init.d/nginx start</p>
<p>…<br />
sudo /etc/init.d/nginx stop</p>
<p>…<br />
sudo /etc/init.d/nginx restart</p></blockquote>
<p>Однако последнюю (рестарт) использовать не рекомендую, это не Apache. Получите больше головной боли. Поэтому для перезапуска сервера сначала останавливаем его, а потом запускаем. Если не запускается – значит отлаживаем конфигурацию – обычно он довольно понятно говорит, где ошибка.</p>
<p>Также важной частью является первоначальная настройка сервера, откройте файл /etc/nginx/nginx.conf и вставьте в него всё, что находится здесь:</p>
<blockquote><p>user www-data www-data;<br />
worker_processes  2;</p>
<p>error_log /var/log/nginx/error.log;<br />
pid /var/run/nginx.pid;</p>
<p>events {<br />
worker_connections 1024;<br />
}</p>
<p>http {<br />
include /etc/nginx/mime.types;<br />
default_type application/octet-stream;</p>
<p>access_log /var/log/nginx/access.log;</p>
<p>sendfile on;<br />
#tcp_nopush on;</p>
<p>#keepalive_timeout 0;<br />
keepalive_timeout 3;<br />
tcp_nodelay off;</p>
<p>gzip on;<br />
gzip_comp_level 2;<br />
gzip_proxied any;<br />
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml<br />
application/xml+rss text/javascript;</p>
<p>include /etc/nginx/sites-enabled/*;</p>
<p>}
</p></blockquote>
<p>Таким образом мы сразу настроили сжатие сервером данных, выключили некоторые функции и включили некоторые важные. Потом вы сможете настроить его под свои нужды более точно, но пока нам нужна лишь работающая конфигурация.</p>
<p>А сейчас создадим грамотный лэйаут для наших будущих сайтов. В принципе – абсолютно не важно, где будет лежать ваш сайт, но более-менее стандартным является размещение сайтов в каталоге /home/user/public_html, где user – это пользователь системы с необходимыми правами. (как создать юзера и назначить права почитайте по ссылкам в начале мануала, если вы этого ещё не сделали)</p>
<p>Если же юзер только один (а зачастую это только вы), то можно сделать просто</p>
<blockquote><p>sudo mkdir /home/public_html</p>
<p>…<br />
sudo mkdir -p /home/public_html/mydomain.com/{public,private,log,backup}
</p></blockquote>
<p>Таким образом мы создали структуру папок для нашего будущего сайта mydomain.com. Файлы, доступные из Сети будут лежать в папке /public, логи в папке /log, остальное понятно.</p>
<p>Создаём виртуальный хост – файл, который будет указывать домену, где лежит наш сайт.<br />
sudo nano /etc/nginx/sites-available/mydomain.com</p>
<p>Затем вставляем в него следующий текст конфига, естественно, заменяя структуру папок и название домена на ваши.</p>
<p>Внимание! Этот конфиг учитывает некоторые особенности Drupal, например, файловую структуру, крон, а также наличие модулей Imagecache, Fckeditor, Backup and Migrate. Если вы используете другие системы, просто удалите или закомментируйте ненужные части конфига, они подписаны. Если же вы ищете в сети решение проблем работы Drupal c Imagecache или Fckeditor, то вы его уже нашли <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><p>server {<br />
listen          80;<br />
server_name     mydomain.com www.mydomain.com;</p>
<p>access_log /home/public_html/mydomain.com/log/access.log;<br />
error_log /home/public_html/mydomain.com/log/error.log;</p>
<p>root /home/public_html/mydomain.com/public;</p>
<p>charset utf-8;</p>
<p>location = / { rewrite . /index.php last; }<br />
location / { rewrite ^(.*)$ /index.php?q=$1 last; }<br />
location = /index.php {<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_param SCRIPT_FILENAME /home/public_html/mydomain.com/public$fastcgi_script_name;<br />
include /etc/nginx/fastcgi_params;<br />
}<br />
# To retrieve this script periodically use: curl -sH “Host: my.host.tld” http://localhost/cron.php<br />
location = /cron.php {<br />
allow 127.0.0.1;<br />
deny all;<br />
fastcgi_pass 127.0.0.1:8521;<br />
include /etc/nginx/fastcgi_params;<br />
}<br />
# Static content<br />
location = /robots.txt { if (-f $document_root/sites/default/robots.txt) { rewrite . /sites/default/robots.txt$<br />
location ~ ^(/sites/all)?/(modules|themes)/.*.(css|js|png|gif|jpg)$ { break; }<br />
location /misc/ { break; }<br />
location /sites/all/modules/fckeditor { break; }<br />
location /files/ { break; } # Depending on Drupal configuration (Administer -&gt; File system)</p>
<p># Imagecache (http://drupal.org/project/imagecache)<br />
location /files/imagecache/ {<br />
if (-f $request_filename) { break; }<br />
rewrite ^(.*)$ /index.php?q=$1 last;<br />
}</p>
<p># **** Comment out this location after installing/updating Drupal ****<br />
# location ~ ^/(install|update).php$ {<br />
# allow 172.22.11.2;<br />
# deny all;<br />
# fastcgi_pass 127.0.0.1:8521;<br />
# include /etc/nginx/fastcgi_params;<br />
# }<br />
# ********************************************************************</p>
<p># hide protected files<br />
location ~* .(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(.php)?|xtmpl)$|^(code-style.pl|Entri$<br />
deny all;<br />
}</p>
<p># hide backup_migrate files<br />
location ~* ^/files/backup_migrate {<br />
deny all;<br />
}</p>
<p>}</p></blockquote>
<p>И активизируем сайт:</p>
<blockquote><p>sudo ln -s /etc/nginx/sites-available/mydomain.com /etc/nginx/sites-enabled/mydomain.com</p></blockquote>
<p>А сейчас внимание! В конфиг включены правила для создания чистых ссылок (clean urls) для системы Drupal, если вы используете WordPress или другие системы, вам необходимо поискать на сайтах поддержки правила создания чистых ссылок для nginx. Это займёт лишних 5 минут, особенно если ваша система популярная. Впрочем, она может работать и с моим конфигом <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Помните, файл .htaccess под Nginx не работает! Все директивы вставляются в конфигурацию сервера или виртуального хоста!</p>
<p>Таким образом, спорная часть это</p>
<blockquote><p>if (!-e $request_filename) {<br />
rewrite ^/(.*)$ /index.php?q=$1 last;<br />
}</p></blockquote>
<p>Остальные части конфига необходимы!</p>
<p>В конфиге мы попросили Nginx слушать FastCGI на 9000 порту, поэтому – если у вас стоит файрвол, не забудьте открыть этому порту доступ (как и порту 3306 для MySQL)<br />
Запуск PHP как FastCGI процесса</p>
<p>Я не профессиональный администратор, поэтому ищите в Гугле подробные объяснения тому, что мы сейчас будем делать.</p>
<p>Дело в том, что нам необходимо заставить наш сервер работать с PHP, чего он по умолчанию делать вовсе не обязан (в настоящее время в Nginx анонсирована только тестовая поддержка Perl). Поэтому для взаимодействия сервера с языком программирования мы используем специальный протокол, или интерфейс – FastCGI. Это своеобразный мостик для обеспечения взаимопонимания между Nginx и PHP. И сейчас мы будем “учить” их работать вместе.</p>
<p>Мы уже устанавливали php5-cgi, если вы помните, теперь нам нужно каким-то образом запускать FastCGI процесс. Есть несколько способов сделать это. Мы будем использовать специальную программку spawn-fcgi, которая до недавнего времени шла в комплекте с другим сервером – Lighttpd. Сейчас она идёт как отдельный проект и расположена по адресу http://redmine.lighttpd.net/projects/spawn-fcgi</p>
<p>Мы же используем старый проверенный вариант “выдирания” её из Lighttpd. Это даст мне уверенность в том, что это точно будет работать у вас. Чуть позже я изменю эту часть статьи, но только когда сам всё сделаю на практике.</p>
<p>Итак</p>
<blockquote><p>mkdir ~/sources</p>
<p>…<br />
cd ~/sources</p>
<p>…<br />
wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2</p>
<p>…<br />
tar jxvf lighttpd-1.4.19.tar.bz2
</p></blockquote>
<p>Не знаю, необходимы или нет эти зависимости, но установочный скрипт ругается, поэтому давайте лучше их установим:</p>
<blockquote><p>sudo aptitude install libpcre3-dev libbz2-dev</p></blockquote>
<p>Далее – скомпилируем Lighttpd, но не будем его устанавливать, нам нужна только одна программка. Поэтому делаем следующее:<br />
cd lighttpd-1.4.19</p>
<blockquote><p>…<br />
./configure</p>
<p>…<br />
make
</p></blockquote>
<p>Потом идём пить кофе, потому что на экране будет много всего, производящего впечатление на девушек <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Безобразие на экране будет длиться минуты 3-4.</p>
<p>Затем берём исходники spawn-fcgi, и кладём их в то место, где им и полагается быть:<br />
sudo cp src/spawn-fcgi /usr/bin/spawn-fcgi</p>
<p>Далее, если это программа, то нам нужен скрипт, чтобы запускать её:<br />
sudo nano /usr/bin/php-fastcgi</p>
<p>Затем копируем в скрипт следующие строки:</p>
<blockquote><p>#!/bin/sh<br />
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi</p></blockquote>
<p>А теперь внимание! В Интернете, насколько мне известно, вы можете найти другие варианты синтаксиса этой строки, где www-data присутствует только один раз. Настоятельно рекомендую вам воспользоваться именно моим вариантом, так как это позволит вам в будущем избежать неприятностей и ошибки PHP – No input file specified. Отличие моего варианта от распространённого в том, что мы указываем не только пользователя, но и группу. Если они у вас отличаются, то просто замените на ваши данные. Самое интересное, что на одном сервере у меня сработало только с юзером, а на другом – нет. Поэтому будьте внимательны!</p>
<p>Строка, которую мы ввели, означает, что каждый раз, когда скрипт будет вызываться, процесс fcgi будет запущен на порту 9000 для пользователя www-data в группе www-data (это дефолтные пользователь и группа, устанавливаемые при первоначальной настройке системы).</p>
<p>Нам осталось только разобраться, как запускать этот скрипт при запуске FastCGI.</p>
<blockquote><p>sudo nano /etc/init.d/init-fastcgi</p></blockquote>
<p>Получаем пустой экран, и вставляем в него:</p>
<blockquote><p>#!/bin/bash<br />
PHP_SCRIPT=/usr/bin/php-fastcgi<br />
RETVAL=0<br />
case “$1″ in<br />
start)<br />
$PHP_SCRIPT<br />
RETVAL=$?<br />
;;<br />
stop)<br />
killall -9 php5-cgi<br />
RETVAL=$?<br />
;;<br />
restart)<br />
killall -9 php5-cgi<br />
$PHP_SCRIPT<br />
RETVAL=$?<br />
;;<br />
*)<br />
echo “Usage: php-fastcgi {start|stop|restart}”<br />
exit 1<br />
;;<br />
esac<br />
exit $RETVAL</p></blockquote>
<p>Опять же внимание! В Сети вы найдёте слегка изменённый вариант скрипта управления запуском FastCGI, где будет killall -9 php, вместо killall -9 php5-cgi. В моём случае работал только последний вариант, то есть в скрипт надо вставлять точное название процесса, который мы запускаем. Честно говоря, я вообще удивляюсь, как у людей работает без этого. Но мы же делаем всё правильно, не так ли!</p>
<p>Дальше – у нас ничего не будет работать, пока мы не сделаем два предущие скрипта исполняемыми. Для этого вводим следующее:</p>
<blockquote><p>sudo chmod 755 /usr/bin/php-fastcgi
</p></blockquote>
<p>…</p>
<blockquote><p>sudo chmod 755 /etc/init.d/init-fastcgi</p></blockquote>
<p>Ну что ж, сейчас можно смело запускать наш FastCGI:</p>
<blockquote><p>sudo /etc/init.d/init-fastcgi start</p></blockquote>
<p>Вы должны получить что-то вроде информации о том, что spawn-fcgi успешно запустился как процесс.</p>
<p>А для того, чтобы всё работало после перезагрузки набираем:<br />
sudo update-rc.d init-fastcgi defaults</p>
<p>И, я надеюсь, вы не забыли запустить Nginx <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  С этого момента вам придётся постоянно помнить, что сейчас вам нужно запускать и сервер и FastCGI.</p>
<p>В принципе, это всё!<br />
Тестирование, отладка. Установка XCache.</p>
<p>Так, давайте проверим, работает ли PHP как fast-cgi процесс:<br />
ps ax | grep php</p>
<p>Если появился список запущенных процессов, значит всё ОК.</p>
<p>А чтобы проверить, подключён ли PHP к Nginx, создайте файл info.php в веб-директории вашего домена mydomain.com, вставьте туда:</p>
<blockquote><p>&lt; ? echo phpinfo(); ?&gt;</p></blockquote>
<p>А затем запустите его из браузера. Получите исчерпывающую информацию о том, как работает ваш PHP, какие модули загружены.</p>
<p>А сейчас давайте ускорим исполнение PHP скриптов путём кэширования бинарного кода. Вы можете установить любой акселератор, но я выбираю XCache.</p>
<p>Установка XCache:</p>
<blockquote><p>sudo aptitude php5-xcache</p></blockquote>
<p>Особенностью этого акселератора является то, что его надо вручную подключать к php.ini, и там же конфигурировать под свои нужды.</p>
<p>Открываем:</p>
<blockquote><p>sudo nano /etc/php5/cgi/php.ini</p></blockquote>
<p>Проматываем этот длиннющий файл до самого конца, попутно настраивая его под себя. Например, вы можете изменить значение memory_limit на большее (хотя бы до 64MB, особенно если работаете с Drupal). Для прокрутки используете Ctrl+V.</p>
<p>В конце файла вставляем:</p>
<blockquote><p>[xcache-common]<br />
extension = xcache.so<br />
[xcache.admin]<br />
xcache.admin.user = “mOo”<br />
; xcache.admin.pass = md5($your_password)<br />
xcache.admin.pass = “”<br />
[xcache]<br />
; ini only settings, all the values here is default unless explained<br />
; select low level shm/allocator scheme implemenation<br />
xcache.shm_scheme =        ”mmap”<br />
; to disable: xcache.size=0<br />
; to enable : xcache.size=64M etc (any size &gt; 0) and your system mmap allows<br />
xcache.size  =                64M<br />
; set to cpu count (cat /proc/cpuinfo |grep -c processor)<br />
xcache.count =                 4<br />
; just a hash hints, you can always store count(items) &gt; slots<br />
xcache.slots =                8K<br />
; ttl of the cache item, 0=forever<br />
xcache.ttl   =                 0<br />
; interval of gc scanning expired items, 0=no scan, other values is in seconds<br />
xcache.gc_interval =           0<br />
; same as aboves but for variable cache<br />
xcache.var_size  =            64M<br />
xcache.var_count =             1<br />
xcache.var_slots =            8K<br />
; default ttl<br />
xcache.var_ttl   =             0<br />
xcache.var_maxttl   =          0<br />
xcache.var_gc_interval =     300<br />
xcache.test =                Off<br />
; N/A for /dev/zero<br />
xcache.readonly_protection = Off<br />
; for *nix, xcache.mmap_path is a file path, not directory.<br />
; Use something like “/tmp/xcache” if you want to turn on ReadonlyProtection<br />
; 2 group of php won’t share the same /tmp/xcache<br />
; for win32, xcache.mmap_path=anonymous map name, not file path<br />
xcache.mmap_path =    ”/dev/zero”<br />
; leave it blank(disabled) or “/tmp/phpcore/”<br />
; make sure it’s writable by php (without checking open_basedir)<br />
xcache.coredump_directory =   “”<br />
; per request settings<br />
xcache.cacher =               On<br />
xcache.stat   =               On<br />
xcache.optimizer =            On<br />
[xcache.coverager]<br />
; per request settings<br />
; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)<br />
xcache.coverager =          Off<br />
; ini only settings<br />
; make sure it’s readable (care open_basedir) by coverage viewer script<br />
; requires xcache.coverager=On<br />
xcache.coveragedump_directory = “”</p></blockquote>
<p>Обратите внимание на строку, где надо указать количество ядер в вашем процессоре. У меня их 4. Там же написано как это узнать, если не уверены.</p>
<p>Также здесь вы можете установить логин и пароль для управления скриптом. Если с логином всё понятно, то пароль должен быть зашифрован с помощью md5. Чтобы правильно установить пароль, создайте в веб-директории файл test.php, и поместите в него следующую строку:<br />
&lt; ?php echo md5(”вашпароль”); ?&gt;</p>
<p>Запустив его, вы получите ваш пароль в зашифрованном виде, его то и надо вставлять в php.ini. Не вставляйте в php.ini “человеческий пароль”!</p>
<p>Чтобы получить доступ к веб-интерфейсу XCache, нам придётся скачать исходники отсюда и достать из них папку xcache/admin/ (всю папку), затем загрузить её в веб-директорию, и зайти в неё со своим логином и паролем, установленным в php.ini.</p>
<p>Затем можете наслаждаться тем, как будет летать ваш сервер после установки акселератора.</p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/03/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-nginx-php5-fastcgi-xcache-%d0%b8-mysql-%d0%bd%d0%b0-ubuntu-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Настройка хостинга под apache + PHP + MySQL</title>
		<link>http://howtolinux.ru/2009/09/01/howto-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%85%d0%be%d1%81%d1%82%d0%b8%d0%bd%d0%b3%d0%b0-%d0%bf%d0%be%d0%b4-apache-php-mysql/</link>
		<comments>http://howtolinux.ru/2009/09/01/howto-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%85%d0%be%d1%81%d1%82%d0%b8%d0%bd%d0%b3%d0%b0-%d0%bf%d0%be%d0%b4-apache-php-mysql/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 09:08:33 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[настройка]]></category>
		<category><![CDATA[хоситинг]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=123</guid>
		<description><![CDATA[Автор: lissyara Был у конторы хостинг, для клиентов, бесплатный &#8211; как дополнение к тарифным планам с большим траффиком. Десятка полтора сайтов на FreeBSD4.11, apache1.3, php4, mysql4.0 &#8211; ничё особенного. Достался он мне по наследству, от старых админов, всё настроено, работает, что называется &#8211; не трожь. Но однажды переполнился раздел /var &#8211; почтовый спул занял всё [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right"><em>Автор: <a href="http://www.lissyara.su/?id=1024" target="_blank">lissyara</a></em></p>
<p>Был у конторы хостинг, для клиентов, бесплатный &#8211; как дополнение к тарифным планам с большим траффиком. Десятка полтора сайтов на <a href="http://www.freebsd.org/releases/4.11R/relnotes.html" target="_blank">FreeBSD4.11</a>, <a href="http://httpd.apache.org/" target="_blank">apache1.3,</a> <a href="http://www.php.net/" target="_blank">php4</a>, <a href="http://www.mysql.com/" target="_blank">mysql4.0</a> &#8211; ничё особенного. Достался он мне по наследству, от старых админов, всё настроено, работает, что называется &#8211; не трожь. Но однажды переполнился раздел /var &#8211; почтовый спул занял всё свободное место. Недолгое разбирательство выяснило &#8211; все письма отправлены с какого-то из сайтов, и в них спам. С какого &#8211; выяснить не представлялось возможным &#8211; письма шли от пользователля <a href="http://www./" target="_blank">www.</a> Спул почистил, залочил в php.ini функцию mail(), сел думать &#8211; что можно сделать подручными средствами. У всех знакомых, работавших у хостеров, были самописные фичи на эту тему &#8211; они меняли идентификатор пользователя процесса apache. Апач меня не интересовал &#8211; у него своих средств для защиты хватало, а вот php, крутившийся модулем, &#8211; работал от того же пользователя, что и апач, &#8211; а это не есть гуд. Из других решений &#8211; php как CGI. Почитав, понял &#8211; подойдёт. Работать будет медленней, чем модулем, т.к. будут дополнительные затраты на порождение дополнительного процесса, но во FreeBSD это досточно шустрый процесс (хотя и накладный, не отрицаю), поэтому особого замедления быть не должно.<br />
Итак, начинаем с апача &#8211; нам нужен <a href="http://httpd.apache.org/docs/1.3/suexec.html" target="_blank">suexec</a> &#8211; он позволяет выполнять пользовательские программы от его имени, незавимо от того, под каким пользователем работает сам http-сервер. Таким образом, для апача нам надо будет лишь предоставить доступ на чтение, включив его в группу пользователя, а всем &#8211; запретить вообще доступ. Ставим апач (если стоял &#8211; сносим и ставим заново), для начала добавив в файл <strong>/etc/make.conf </strong>такие строки:</p>
<p><span id="more-123"></span></p>
<blockquote><p># Директория где лежат порты<br />
PORTSDIR?=      /usr/ports</p>
<p># APACHE<br />
.if ${.CURDIR} == ${PORTSDIR}/www/apache13<br />
# Для запуска CGI-скриптов от gid и uid пользователя, а не WEB-сервера<br />
WITH_APACHE_SUEXEC=yes<br />
# Где будет работать suexec (ещё будет в userdir)<br />
APACHE_SUEXEC_DOCROOT=/usr/local/hosting<br />
# Пользовательские директории, в которых будет работать suexec<br />
APACHE_SUEXEC_USERDIR=&#8221;/usr/local/hosting/*/cgi-bin&#8221;<br />
# Настройки производительности (без комментов &#8211; объяснений толковых не нашёл,<br />
# а может торопился и плохо искал&#8230;)<br />
APACHE_SUEXEC_LOG=/usr/local/var/log/httpd-suexec.log<br />
APACHE_HARD_SERVER_LIMIT=yes<br />
WITH_APACHE_PERF_TUNING=yes<br />
APACHE_HARD_SERVER_LIMIT=1024<br />
.endif</p></blockquote>
<p>После чего, собственно, пересобираем:</p>
<blockquote><p>/usr/home/lissyara/&gt;cd /usr/ports/www/apache13<br />
/usr/ports/www/apache13/&gt;make deinstall &amp;&amp; make clean &amp;&amp; make \<br />
? &amp;&amp; make install &amp;&amp; make clean</p></blockquote>
<p>После этого, создаём новый класс пользователей, которых будем ограничивать, у меня он называется &#8220;webuser&#8221;. Для этого, в файл <strong>/etc/login.conf</strong> добавляем такую секцию:</p>
<blockquote><p># конфиг для клиентов. Сразуже &#8211; пояснения:<br />
# copyright &#8211; файл содержащий информацию о копирайтах<br />
# welcome &#8211; приветсвенное сообщение, выводится при входе по ssh. Я пока не<br />
# планирую давать доступ по ssh &#8211; но на будущее возможно пригодится.<br />
# setenv &#8211; устанавливаем переменные пользователя<br />
# path &#8211; пути к исполняемым программам<br />
# manpath &#8211; пути к манам<br />
# nologin &#8211; местоположение программы, вывоящей сообщение о блокировке аккаунта<br />
# cputime &#8211; предел использования CPU<br />
# datasize &#8211; максимальный размер данных пользователя (в памяти)<br />
# stacksize &#8211; максимальный размер стека<br />
# memorylocked &#8211; максимальный размер залоченой памяти ядра<br />
# memoryuse &#8211; ограничение размера используемой памяти ядра<br />
# filesize &#8211; максимальный размер файла<br />
# coredumpsize &#8211; максимальный размер создаваемого дампа (при ошибках)<br />
# openfiles &#8211; максимальное число открытых файлов, на процесс<br />
# maxproc &#8211; максимальное число процессов<br />
# sbsize &#8211; максимальный разрешённый размер буфера сокета<br />
# priority &#8211; приоритет исполняемых процессов<br />
# requirehome &#8211; для логина пользователя требуется реально существующая<br />
# домашняя директория<br />
# umask &#8211; начальная umask для создаваемых файлов<br />
# tc &#8211; остальные переменные берём из указанного класса</p>
<p>webuser:\</p>
<p style="padding-left: 60px">:copyright=/etc/COPYRIGHT:\<br />
:welcome=/etc/motd:\<br />
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,EDITOR=ee:\<br />
:path=/bin /usr/bin /usr/local/bin:\<br />
:manpath=/usr/share/man /usr/local/man:\<br />
:nologin=/sbin/nologin:\<br />
:cputime=5m:\<br />
:datasize=512M:\<br />
:stacksize=4M:\<br />
:memorylocked=64M:\<br />
:memoryuse=256M:\<br />
:filesize=512M:\<br />
:coredumpsize=0:\<br />
 <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> penfiles=1024:\<br />
:maxproc=64:\<br />
:sbsize=unlimited:\<br />
:priority=20:\<br />
:requirehome:\<br />
:umask=026:\<br />
:tc=default:</p></blockquote>
<p>Пересобираем БД классов пользователей:</p>
<blockquote><p>/usr/home/lissyara/&gt;cap_mkdb -v /etc/login.conf<br />
cap_mkdb: 10 capability records<br />
/usr/home/lissyara/&gt;</p></blockquote>
<p>Теперь надо поставить квоты на файловую систему, где у нас хостинг (надеюсь, вы не пускаете юзеров пастись в /usr и прочих системных разделах?). Вначале, я попробовал воткнуть её слёту:</p>
<blockquote><p>/usr/home/lissyara/&gt;echo &#8216;enable_quotas=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/rc.conf</p></blockquote>
<p>Перезагрузился, и попробовал поставить квоту:</p>
<blockquote><p>/usr/home/lissyara/for_hosting/&gt;<br />
/usr/home/lissyara/for_hosting/&gt;edquota -u user_name2<br />
edquota: warning: quotas are not compiled into this kernel<br />
edquota: creating quota file /usr/local/quota.user</p></blockquote>
<p>Непрокатило <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Для этого в ядре должна быть её поддержка, для чего вносим в конфиг такую опцию:</p>
<blockquote><p>options         QUOTA</p></blockquote>
<p>Надо заметить ещё такой момент, во FreeBSD есть ограничение, пользователь не может входить более чем в 16 групп, это очень старое ограничение, связянное каким-то боком с <a href="http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-nfs.html" target="_blank">NFS</a>. В данном случае, в процессе экспериментов, я в него очень быстро упёрся &#8211; согласно создаваемой системе, у каждого пользователя будет своя персональная группа, в которую кроме пользователя входит пользователь www &#8211; от него работает apache. Если его не включить в неё, то он не сможет читать файлы в дирекориях пользователя. При других раскладках &#8211; типа, все пользователи в одной группе &#8211; косяк с безопасностью &#8211; есть возможность, что прочтут чужие файлы. Поэтому пришлось найти где это ограничение забито и подправить. Это файл <strong>/usr/src/sys/sys/syslimits.h</strong>, в нем редактируем такую строку:</p>
<blockquote><p>#define NGROUPS_MAX                64   /* max supplemental group id&#8217;s */</p></blockquote>
<p>Из минусов &#8211; надо помнить про эту опцию, при обновлениях, ну и при передаче дел неплохо бы упомянуть. Вроде как с 7.0 должны сделать это ограничение &#8220;мягким&#8221; &#8211; можно будет его менять через <a href="http://www.freebsd.org/cgi/man.cgi?query=sysctl&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+6.1-RELEASE&amp;format=html" target="_blank">sysctl</a>. На данный момент, во всех версиях, его менять нельзя &#8211; переменная есть, но не меняется:</p>
<blockquote><p>/usr/home/lissyara/&gt;sysctl -a | grep ngroup<br />
kern.ngroups: 16<br />
/usr/home/lissyara/&gt;sysctl kern.ngroups=64<br />
sysctl: oid &#8216;kern.ngroups&#8217; is read only<br />
/usr/home/lissyara/&gt;</p></blockquote>
<p>Короче &#8211; ставим сколько надо (всё не тестил, но вроде как всё рабтает нормально, правда, для верности, пересобирал вообще всё &#8211; <a href="http://www.lissyara.su/?id=1161" target="_blank">мир</a>, <a href="http://www.lissyara.su/?id=1072" target="_blank">ядро</a>, и<a href="http://www.lissyara.su/?id=1153" target="_blank"> все установленные приложения</a>. Каюсь &#8211; метод, всёже косячный, но умней ничё в башке не родилось, да и время поджимало). Пересобираем ядро. Это описано у <a href="http://www.lissyara.su/?id=1072" target="_blank">меня</a>, и в <a href="http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/kernelconfig-building.html" target="_blank">хандбуке</a>. Пока ядро пересобирается, готовимся, надо подправить <strong>/etc/fstab</strong>. Правим строку, относящуюся к монтированию раздела где живут сайты пользователей. У меня, в итоге, оно выглядит так:</p>
<blockquote>
<p style="text-align: left"># устройство   Куда моунтим         ФС    опции                  дамп<br />
/dev/ad2s1e    /usr/local/hosting   ufs   rw,userquota,nosuid    2   2</p></blockquote>
<p>Также, добавляем такую строку в <strong>/etc/pw.conf</strong>, чтобы при создании пользователя, генерились рандомные пароли:</p>
<blockquote><p>defaultpasswd=random</p></blockquote>
<p>По окончании сборки ядра перезагружаемся, и снова пробуем запустить <strong>edquota</strong> &#8211; если пройдёт без ошибок &#8211; значит всё нормально. (не забываем добавить вышеописанную строчку про &#8216;enable_quotas=&#8221;YES&#8221;&#8216; в <strong>/etc/rc.conf!</strong>). Далее, я настругал небольшой скриптик, для администрирования всего этого добра:</p>
<blockquote><p>#!/bin/sh -</p>
<p># Скрипт для создания клиентской шары, и заведения нужного пользователя<br />
# в системе. Написан lissyara 2006-10-02 &#8211; 2006-10-09 www.lisssyara.su</p>
<p># Ограничения заводимого пользователя &#8211; сколько может занимать места,<br />
# и сколько инод ему выделять (фактически, это &#8211; максимальное число файлов<br />
# и директоий которые он сможет завести. Но не точно.<br />
# Реально &#8211; может быть меньше). 0 &#8211; анлим.<br />
user_datasize=&#8221;500000&#8243; # В килобайтах в 4.11 и в Mb в 6.1, почему так -<br />
# я не понял. будте внимательны.<br />
user_inode=&#8221;100000&#8243;    # Иноды не резиновые. Оцените число командой<br />
# `df -i` и решайте какие у вас должны быть лимиты<br />
# Файловая система, на которую вносим ограничения<br />
fs=&#8221;/usr/local/hosting&#8221;<br />
# Данные для MySQL<br />
mysql_user=&#8221;root&#8221;<br />
mysql_passwd=&#8221;"</p>
<p># Переменные:<br />
domain_name=&#8221;$1&#8243;<br />
user_name=&#8221;$2&#8243;</p>
<p># программы<br />
cat=&#8221;/bin/cat&#8221;			# Перенаправление потоков ввода-вывода<br />
awk=&#8221;/usr/bin/awk&#8221;		# Язык обработки шаблонов<br />
echo=&#8221;/bin/echo&#8221;		# Вывод строк на экран<br />
grep=&#8221;/usr/bin/grep&#8221;		# Выбор строк по шаблону<br />
pw=&#8221;/usr/sbin/pw&#8221;		# Управление учётками, группами пользователей<br />
rm=&#8221;/bin/rm&#8221;			# Удаление файлов и директорий<br />
mkdir=&#8221;/bin/mkdir&#8221;		# Создание директорий<br />
chown=&#8221;/usr/sbin/chown&#8221;		# Выставление владельца файлов и директорий<br />
php=&#8221;/usr/local/bin/php-cgi&#8221;	# Бинарник PHP для использования в виде CGI<br />
cp=&#8221;/bin/cp&#8221;			# Копирование файлов и директорий<br />
mysql=&#8221;/usr/local/bin/mysql&#8221;	# MySQL &#8211; клиент<br />
wc=&#8221;/usr/bin/wc&#8221;		# подсчёт числа строк<br />
cut=&#8221;/usr/bin/cut&#8221;		# Обрезка строк<br />
md5=&#8221;/sbin/md5&#8243;			# подсчёт md5 файлов, строк<br />
jot=&#8221;/usr/bin/jot&#8221;		# генерация случйного числа<br />
tail=&#8221;/usr/bin/tail&#8221;		# Показывает последнюю часть файла<br />
edquota=&#8221;/usr/sbin/edquota&#8221;	# редактор квот<br />
ls=&#8221;/bin/ls&#8221;			# Kbcnbyu диреткорий, файлов<br />
chflags=&#8221;/usr/bin/chflags&#8221;		# Утановка флагов на файл<br />
tr=&#8221;/usr/bin/tr&#8221;		# Замена, удаление символов в строке<br />
mysqldump=&#8221;/usr/local/bin/mysqldump&#8221;	# Содание дампов MySQL<br />
gzip=&#8221;/usr/bin/gzip&#8221;		# Архиватор<br />
rm=&#8221;/bin/rm&#8221;			# Удаление файлов и директорий<br />
mv=&#8221;/bin/mv&#8221;			# Перемещение файлов и директорий<br />
basename=&#8221;/usr/bin/basename&#8221;	# Вывод базового имени файла (из полного пути)<br />
uname=&#8221;/usr/bin/uname&#8221;		# Информация о локальной машине</p>
<p># Файл с настройками php<br />
php_ini=&#8221;/usr/local/etc/php.ini-for-hosting&#8221;<br />
# Временный файл &#8211; для технических нужд<br />
tmp_file=&#8221;/tmp/$$.file.tmp&#8221;<br />
# Файл с системными альясами (для почты &#8211; отлупы на письма с сайтов будут<br />
# возвращаться на этот сервер, надо их пересылать на пользователя, у меня<br />
# забито как info@домен_пользователя)<br />
aliases_file=&#8221;/etc/aliases&#8221;	# На самом деле, во фре, это симлинк на<br />
# файл /etc/mail/aliases.<br />
# Директория хостинга<br />
hosting_preffix=&#8221;/usr/local/hosting/sites&#8221;<br />
# Директория для бэкапов удалённых сайтов<br />
backup_dir=&#8221;/usr/local/hosting/backup&#8221;</p>
<p># Строим префикс для работы с БД<br />
query_preffix=&#8221;${mysql} &#8211;user=${mysql_user} &#8211;password=${mysql_passwd} \<br />
&#8211;database=mysql&#8221;</p>
<p># Проверяем наличие приложений &#8211; в разных версиях FreeBSD разные пути<br />
for application in ${cat} ${awk} ${echo} ${grep} ${pw} ${rm} ${mkdir} \<br />
${chown} ${php} ${cp} ${mysql} ${wc} ${cut} ${md5} ${jot} ${tail} \<br />
${edquota} ${ls} ${chflags} ${tr} ${mysqldump} ${gzip} ${rm} ${mv} \<br />
${basename} ${uname} ${php_ini}<br />
do<br />
if [ ! -s ${application} ]; then<br />
echo &#8220;Приложение \`\`${application}&#8221; не найдено! Проверьте путь!&#8221;<br />
exit<br />
fi<br />
done</p>
<p># Поехали <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ))<br />
case &#8220;$3&#8243; in<br />
create)</p>
<p># Проверяем, не начинается ли имя пользователя с цифры (у `pw`, в этом случае<br />
# будут проблемы с созданием группы пользователя. Либо руками, либо эта<br />
# проверка. Я решил что лучше с цифры не начинать.)<br />
${echo} &#8220;11111111111&#8243; &gt;&gt; ${tmp_file}<br />
${echo} ${user_name} | ${grep} -v &#8220;^[0-9]&#8221; &gt; ${tmp_file}<br />
# проверяем размер файла &#8211; не равен ли нулю<br />
if [ -s ${tmp_file} ]<br />
then<br />
# Ничё не делаем<br />
${rm} ${tmp_file}<br />
else<br />
# Пытаются пользователя с первой цифрой всандалить.<br />
${echo} &#8220;Имя пользователя не может начинаться с цифры!!&#8221;<br />
${rm} ${tmp_file}<br />
exit<br />
fi</p>
<p># Проверяем, не содержит ли имя пользователя точки:<br />
${echo} ${user_name} | ${tr} -d &#8220;[:alnum:]&#8221; | ${grep} &#8220;\.&#8221; &gt; ${tmp_file}<br />
if [ -s ${tmp_file} ]<br />
then<br />
# Пытаются пользователя с точками в имени всандалить.<br />
${echo} &#8220;Имя пользователя не может содержать точки!!&#8221;<br />
${rm} ${tmp_file}<br />
exit<br />
else<br />
# Ничё не делаем<br />
${rm} ${tmp_file}<br />
fi</p>
<p># Проверяем уникальность имени пользователя<br />
${cat} /etc/passwd | ${awk} -F &#8220;:&#8221; &#8216;{print $1}&#8217; | ${grep} &#8220;^[:alnum:]&#8221; |<br />
{<br />
while read existing_user_name<br />
do<br />
if [ ${existing_user_name} = ${user_name} ]<br />
then<br />
# Есть такой юзер. Ругаемся, выходим<br />
${echo} &#8220;Пользователь с именем \&#8221;${user_name}\&#8221; существует!&#8221;<br />
# пишем временный файл, чтоб передать инфу из цикла<br />
${echo} 1 &gt; ${tmp_file}<br />
exit<br />
fi<br />
done<br />
}<br />
# Проверяем наличие и содержимое временного файла.<br />
if [ -s ${tmp_file} ]<br />
then<br />
if [ `cat ${tmp_file}` -eq 1 ]<br />
then<br />
${rm} ${tmp_file}	# удаляем временный файл<br />
exit			# выходим<br />
fi<br />
fi</p>
<p># проверяем, нету ли такого виртуалхоста в apache<br />
if [ -s ${hosting_preffix}/../httpd_configs/${domain_name}.conf ]<br />
then<br />
# Уже есть такой виртуалхост<br />
${echo} &#8220;Хост с именем \&#8221;${domain_name}\&#8221; уже есть в конфиге!&#8221;<br />
exit<br />
fi</p>
<p># такого пользователя нет &#8211; заводим в системе<br />
user_passwd=&#8221;`${pw} useradd ${user_name} -c \&#8221;UserDomain = \<br />
${domain_name}\&#8221; -L webuser -s /bin/csh -d ${hosting_preffix}/${user_name}`&#8221;<br />
# Добавляем апаче в группу пользователя<br />
${pw} groupmod ${user_name} -m www</p>
<p># Создаём структуру директорий для пользователя<br />
${mkdir} -p ${hosting_preffix}/${user_name}/log<br />
${mkdir} -p ${hosting_preffix}/${user_name}/www<br />
${mkdir} -p ${hosting_preffix}/${user_name}/cgi-bin<br />
${mkdir} -p ${hosting_preffix}/${user_name}/tmp</p>
<p># копируем файлы в CGI<br />
${cp} ${php} ${hosting_preffix}/${user_name}/cgi-bin/<br />
${cp} ${php_ini} ${hosting_preffix}/${user_name}/cgi-bin/</p>
<p># Даём права на эти директории<br />
${chown} -R ${user_name}:${user_name} ${hosting_preffix}/${user_name}</p>
<p># Ставим флаги на php.ini<br />
${chflags} sunlnk ${hosting_preffix}/${user_name}/cgi-bin/php.ini<br />
${chflags} schg ${hosting_preffix}/${user_name}/cgi-bin/php.ini</p>
<p># Добавляем пользователя в список тех, кто chroot`ится при<br />
# заходе по FTP<br />
${echo} ${user_name} &gt;&gt; /etc/ftpchroot</p>
<p># Стругаем квоты для пользователя<br />
${edquota} -e \<br />
${fs}:${user_datasize}:${user_datasize}:${user_inode}:${user_inode} \<br />
${user_name}</p>
<p># Стругаем пароль для MySQL<br />
mysql_user_passwd=&#8221;`${jot} -r 1 0 9000000 | ${md5} -p | ${tail} -1  \<br />
| ${cut} -c 1-8`&#8221;</p>
<p># Заводим пользователя в MySQL<br />
${query_preffix} &#8211;execute=&#8221;CREATE DATABASE IF NOT EXISTS \`${user_name}_db\`&#8221;<br />
${query_preffix} &#8211;execute=&#8221;GRANT ALL PRIVILEGES on \`${user_name}_db\`.* to \<br />
&#8216;${user_name}&#8217;@'localhost&#8217; IDENTIFIED BY &#8216;${mysql_user_passwd}&#8217;&#8221;</p>
<p># Создаём виртуалхост в апаче<br />
${echo} &#8220;# Этот файл создан автоматически, скриптом `basename $0`</p>
<p># Virtual host added by \`$USER\`, `date +%Y-%m-%d` in `date +%H:%M:%S`<br />
# from host = \`$REMOTEHOST\`, host IP = \&#8220;echo $SSH_CLIENT | awk &#8216;{print $1}&#8217;`\`<br />
ScriptAlias /cgi-bin/ ${hosting_preffix}/${user_name}/cgi-bin/<br />
ServerAdmin support@${domain_name}<br />
User ${user_name}<br />
Group ${user_name}<br />
DocumentRoot ${hosting_preffix}/${user_name}/www<br />
ServerName ${domain_name}<br />
ServerAlias www.${domain_name}<br />
# Директория пользователя</p>
<p>Options Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
Order deny,allow<br />
Allow from all</p>
<p>DirectoryIndex index.php index.html index.htm index.shtml index.php3<br />
AddType application/x-httpd-php .php .php3<br />
Action  application/x-httpd-php /cgi-bin/php-cgi<br />
ErrorLog ${hosting_preffix}/${user_name}/log/error.log<br />
CustomLog ${hosting_preffix}/${user_name}/log/access.log common</p>
<p>&#8221; &gt;&gt; ${hosting_preffix}/../httpd_configs/${domain_name}.conf</p>
<p># Создаём почтовый альяс для юзера (иначе его почта будет захламлять<br />
# раздел /var). У меня стоит exim в простейшей (дефолтовой) конфигурации,<br />
# т.к. мыльница для клиентов не на хостинге, а на отдельном сервере,<br />
# и он работает с системными пользователями. Если будете делать по другому,<br />
# перепишите этот кусок под себя.<br />
$echo &#8221;<br />
# Alias for user = ${user_name}, domain = ${domain_name},<br />
# added by \`$USER\`, `date +%Y-%m-%d` in `date +%H:%M:%S`<br />
# from host = \`$REMOTEHOST\`, host IP = \&#8220;echo $SSH_CLIENT | awk &#8216;{print $1}&#8217;`\`<br />
${user_name}:	info@${domain_name}<br />
&#8221; &gt;&gt; ${aliases_file}</p>
<p>${echo} &#8220;Имя домена:			${domain_name}&#8221;<br />
${echo} &#8220;Имя пользователя:		${user_name}&#8221;<br />
${echo} &#8220;Пароль пользователя(FTP, SSH):	${user_passwd}&#8221;<br />
${echo} &#8220;Имя базы данных:		${user_name}_db&#8221;<br />
${echo} &#8220;Пароль пользователя (MySQL):	${mysql_user_passwd}&#8221;<br />
${echo} &#8220;Квота пользователя:		${user_datasize}&#8221;<br />
${echo} -n &#8220;Альяс почты (${aliases_file})	${user_name}@`${uname} -n`&#8221;<br />
${echo} &#8221; &#8211;&gt; info@${domain_name}&#8221;<br />
;;<br />
delete)<br />
${echo} &#8220;Вы действительно хотите удалить пользователя и домен?!&#8221;<br />
${echo} &#8220;Наберите YES для подтверждения, или Ctrl+C для выхода&#8230;&#8221;<br />
read confirmation<br />
if [ $confirmation = YES ] &gt; /dev/null 2&gt;&amp;1<br />
then<br />
# Подтверждено.<br />
# Стругаем директорию<br />
${mkdir} -p ${backup_dir}/${domain_name}<br />
# снимаем флаги с директории юзера<br />
${chflags} -R nosunlnk ${hosting_preffix}/${user_name}/*<br />
${chflags} -R noschg ${hosting_preffix}/${user_name}/*<br />
# Копируем содержимое<br />
${echo} &#8220;Копируются пользовательские данные&#8230;&#8221;<br />
${cp} -R ${hosting_preffix}/${user_name} \<br />
${backup_dir}/${domain_name}<br />
# Дампим БД пользователя<br />
${echo} &#8220;Делается дамп БД пользователя&#8230;.&#8221;<br />
${mysqldump} &#8211;user=${mysql_user} &#8211;password=${mysql_passwd} \<br />
&#8211;database ${user_name}_db | ${gzip} &gt; \<br />
${backup_dir}/${domain_name}/${user_name}_db.sql.gz<br />
# Сносим всё нахрен:<br />
# Перемещаем конфиг апача для этого домена<br />
${mv} ${hosting_preffix}/../httpd_configs/${domain_name}.conf \<br />
${backup_dir}/${domain_name}/<br />
# Удаляем доки:<br />
${echo} &#8220;Удаляются пользовательские данные&#8230;&#8221;<br />
${rm} -Rf ${hosting_preffix}/${user_name}<br />
# Удаляем БД<br />
${echo} &#8220;Удаляется БД пользователя&#8230;.&#8221;<br />
${query_preffix} &#8211;execute=&#8221;DROP DATABASE IF EXISTS \<br />
\`${user_name}_db\`&#8221;<br />
# Удаляется пользователь из MySQL<br />
${echo} &#8220;Удаляется пользователь из MySQL&#8230;&#8221;<br />
${query_preffix} &#8211;execute=&#8221;REVOKE ALL PRIVILEGES  \<br />
ON *.* FROM &#8216;${user_name}&#8217;@'localhost&#8217;&#8221;<br />
${query_preffix} &#8211;execute=&#8221;REVOKE GRANT OPTION \<br />
ON *.* FROM &#8216;${user_name}&#8217;@'localhost&#8217;&#8221;<br />
${query_preffix} &#8211;execute=&#8221;DELETE FROM mysql.user WHERE \<br />
User=&#8217;${user_name}&#8217; and Host=&#8217;localhost&#8217;&#8221;<br />
# Удаляется пользователь из системы<br />
${echo} &#8220;Удаляется пользователь из системы&#8230;&#8221;<br />
${pw} userdel ${user_name}<br />
${echo} &#8220;Удаляется группа пользователя из системы&#8230;&#8221;<br />
${pw} groupdel ${user_name}<br />
else<br />
# не захотел удалять <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
${echo} &#8220;Пользователь и его сайт были оставлены&#8221;<br />
fi<br />
;;<br />
update)<br />
# Обновление версии php у всех пользователей.<br />
${ls} ${hosting_preffix}/|<br />
{<br />
# идёт листинг сайтов, но т.к. имя пользователя и директории<br />
# одинаковые &#8211; значит это ещё и именя пользователей <img src='http://howtolinux.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
while read site_user_name<br />
do<br />
${echo} &#8220;Идёт обновление версии php для пользователя ${site_user_name}&#8221;<br />
# Копируем новый<br />
${cp} ${php} ${hosting_preffix}/${site_user_name}/cgi-bin/<br />
# Даём права на него<br />
${chown} ${site_user_name}:${site_user_name} \<br />
${hosting_preffix}/${site_user_name}/cgi-bin/`${basename} ${php}`<br />
done<br />
}<br />
${echo} &#8220;Обновление завершено!&#8221;<br />
;;<br />
*)</p>
<p>${echo} &#8220;&#8221;<br />
${echo} &#8220;Этот скрипт создаёт пользователя в системе, генерит ему<br />
пароль, создаёт базу данных MySQL, генерит для неё пароль,<br />
выставляет квоты на использование ресурсов системы &#8211; на данный<br />
момент все новые пользователи равноправны &#8211; смотрите в login.conf<br />
класс &#8216;webuser&#8217;. Текущие ограничения:<br />
Места:				500mb	(правиться в этом файле)<br />
Инод:				10000	(правиться в этом файле)<br />
Процессов:			64	(правиться в login.conf)<br />
Время работы процесса:		5 минут	(правиться в login.conf)<br />
Размер стека:			4mb	(правиться в login.conf)<br />
Размер блокируемой оперативки:	64mb	(правиться в login.conf)<br />
Макимальный объём оперативки:	256mb	(правиться в login.conf)<br />
Максимальный размер файла:	100mb	(правиться в login.conf)<br />
Открытых файлов на процесс:	1024	(правиться в login.conf)<br />
Приоритет приложений:		20	(правиться в login.conf)</p>
<p>Внимание! На файл php.ini ставяться флаги \`schg\` и \`sunlnk\`,<br />
не сняв их &#8211; файл не уалить и не изменить! Цель &#8211; не позволить юзеру<br />
менять свои настройки php.<br />
Удаление флагов:<br />
chflags noschg php.ini<br />
chflags nosunlnk php.ini<br />
Установка:<br />
chflags schg php.ini<br />
chflags sunlnk php.ini<br />
(Может понадобиться на случай если надо всё-таи чё-то поменять<br />
в дефолтовом файле. Но не забывайте вернуть флаги!)</p>
<p>Также есть предложение придерживаться определённого именования<br />
юзеров для их сайтов &#8211; типа если домен называется \`some.com\` то<br />
юзер должен быть \`somecom\` &#8211; так понятней. Либо, как вариант,<br />
завести таблицу, типа: 1- su, 2 &#8211; ru, 3 -com и т.п. и добавлять эти<br />
цифры в конце. Кому как удобней будет. На данном сервере, под<br />
FreeBSD 4.11, ограничение на длинну имени пользователя &#8211; 16 символов.<br />
Если длинней &#8211; придётся обрубать с конца, или ещё как &#8211; чтобы не<br />
совпадало с существующими.</p>
<p>Про удаление &#8211; перед удалением всё бэкаптся, кроме учётки пользователя.</p>
<p>Про обновления &#8211; имя пользователя и домен &#8211; любые. Нужно при обновлении<br />
версии php на сервере. Обновляются все бинарники и перевыставляются права.</p>
<p>P.S. Не забывайте перезапускать апач после создания-удаления!&#8221;<br />
${echo} &#8220;&#8221;<br />
${echo} &#8220;Использование: `${basename} $0` \<br />
{domainname username create|delete|update}&#8221; &gt;&amp;2<br />
${echo} &#8220;&#8221;<br />
exit 64<br />
;;<br />
esac</p></blockquote>
<p>Можете воспользоваться моим, а можете делать всё руками &#8211; решать вам. Тока к скипту надо одно пояснение &#8211; он удалит любого системного пользователя, если по ошибке вы воткнёте его имя в качастве параметра с командой на удаление. Поэтому, если не понимаете, как оно работает &#8211; не надо пользоваться. Там есть защита от дурака, но от дурака умного. У меня он пашет, а как будет у вас &#8211; не знаю.<br />
Небольшое замечание по поводу пути к файлу <strong>php.ini</strong>. В том файле, что копируется, я подправил лишь несколько пунктов, вот их настройки:</p>
<blockquote><p>safe_mode = On<br />
safe_mode_gid = On<br />
disable_functions = system<br />
# поправка &#8211; этот пункт лучше так не ставить &#8211; php некорректно<br />
# это обрабатывает&#8230; может даже не php но у пары клиентов<br />
# были проблемы с аплоадом файлов на сервер, пока<br />
# не поставил абсолютный путь&#8230;<br />
#upload_tmp_dir = ../tmp<br />
session.save_path = ../tmp<br />
session.auto_start = 1<br />
upload_max_filesize = 4M<br />
memory_limit = 64M</p></blockquote>
<p>А вообще, возьмите файл <strong>/usr/local/etc/php.ini-recommended</strong>, и правьте его под свои нужды.<br />
После проделанного, не забываем поставить парва на скрипт &#8211; в нём хранится рутовый пароль от MySQL (в принципе, можно заюзать флаг &#8220;-p&#8221;, чтобы запрашивал его каждый раз, или отдельную переменную, а потом подставлять её значение &#8211; смотрите сами.)</p>
<blockquote><p>/usr/local/hosting/scripts/&gt;chmod 700 create_client.sh<br />
/usr/local/hosting/scripts/&gt;chown root:wheel create_client.sh<br />
/usr/local/hosting/scripts/&gt;ls -alh create_client.sh<br />
-rwx&#8212;&#8212;  1 root  wheel    12K 24 окт 10:47 create_client.sh</p></blockquote>
<p>Ну и пробуем скриптик:</p>
<blockquote><p>/usr/local/hosting/scripts/&gt;./create_client.sh testing.su testing create<br />
Имя домена:                     testing.su<br />
Имя пользователя:               testing<br />
Пароль пользователя(FTP, SSH):  QBnOXa2k8DCnGY3<br />
Имя базы данных:                testing_db<br />
Пароль пользователя (MySQL):    64cb2586<br />
Квота пользователя:             500000<br />
Альяс почты (/etc/aliases)      testing@hosting.kontora.su &#8211;&gt; info@testing.su<br />
/usr/local/hosting/scripts/&gt;<br />
/usr/local/hosting/scripts/&gt;<br />
/usr/local/hosting/scripts/&gt;<br />
/usr/local/hosting/scripts/&gt;<br />
/usr/local/hosting/scripts/&gt;./create_client.sh testing.su testing delete<br />
Вы действительно хотите удалить пользователя и домен?!<br />
Наберите YES для подтверждения, или Ctrl+C для выхода&#8230;<br />
YES<br />
Копируются пользовательские данные&#8230;<br />
Делается дамп БД пользователя&#8230;.<br />
Удаляются пользовательские данные&#8230;<br />
Удаляется БД пользователя&#8230;.<br />
Удаляется пользователь из MySQL&#8230;<br />
Удаляется пользователь из системы&#8230;<br />
Удаляется группа пользователя из системы&#8230;<br />
/usr/local/hosting/scripts/&gt;</p></blockquote>
<p>Вот и всё. Соответствено, где надо подрихтуйте напильником под свои нужды (в 4.11 и 6.0 пару путей различаются), добавьте такие строки в конец конфига апача:</p>
<blockquote>
<p style="text-align: left">NameVirtualHost *:80</p>
<p style="text-align: left"># Это первый виртуалхост &#8211; он должен быть этого сервера, т.к.<br />
# иначе при обращении на несуществующие сайты будет выводиться<br />
# самый первый виртуалхост &#8211; это может оказаться чей-то из клиентов,<br />
# поэтому создаём скриптом, и копируем конфиг сюда.</p>
<p>ScriptAlias /cgi-bin/ /usr/local/hosting/sites/hosting/cgi-bin/<br />
ServerAdmin support@hosting.kontora.su<br />
User hosting<br />
Group hosting<br />
DocumentRoot /usr/local/hosting/sites/hosting/www<br />
ServerName hosting.kontora.su<br />
ServerAlias www.hosting.kontora.su<br />
# Директория пользователя</p>
<p>Options Indexes FollowSymLinks MultiViews<br />
AllowOverride All<br />
Order deny,allow<br />
Allow from all</p>
<p>DirectoryIndex index.php index.html index.htm index.php3<br />
AddType application/x-httpd-php .php .php3<br />
Action  application/x-httpd-php /cgi-bin/php-cgi<br />
ErrorLog /usr/local/hosting/sites/hosting/log/error.log<br />
CustomLog /usr/local/hosting/sites/hosting/log/access.log common</p>
<p style="text-align: left">Include /usr/local/hosting/httpd_configs/*.conf</p>
</blockquote>
<p>P.S.1 Настройки системы и php брались из головы, так, как я считал нужным. Может что-то и неправильно, или можно сделать лучше. Смотрите и думайте сами.<br />
P.S.2 Насчёт ограничения в 16 групп и правки исходников &#8211; это правда плохая идея. Хотя проблем вроде нету. И если знаете, как можно сделать грамотней &#8211; поделитесь&#8230;<br />
P.S.3 Настройки MySQL не рассмотрены сознательно, <a href="http://howtolinux.ru/2009/09/01/howto-установка-mysql/" target="_self">смотрите тут</a></p>
<p style="text-align: right"><em>Взято с <a href="http://www.lissyara.su/?id=1066" target="_blank">lissyara.su</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/09/01/howto-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d1%85%d0%be%d1%81%d1%82%d0%b8%d0%bd%d0%b3%d0%b0-%d0%bf%d0%be%d0%b4-apache-php-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Установка DNS сервера PowerDNS с поддержкой MYSQL веб интерфейсом Power admin</title>
		<link>http://howtolinux.ru/2009/08/28/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-dns-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-powerdns-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d1%80%d0%b6%d0%ba%d0%be%d0%b9-mysql-%d0%b2/</link>
		<comments>http://howtolinux.ru/2009/08/28/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-dns-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-powerdns-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d1%80%d0%b6%d0%ba%d0%be%d0%b9-mysql-%d0%b2/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 09:50:55 +0000</pubDate>
		<dc:creator>Shugich</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Power admin]]></category>
		<category><![CDATA[PowerDNS]]></category>

		<guid isPermaLink="false">http://howtolinux.ru/?p=106</guid>
		<description><![CDATA[В этой статье описана установка и начальная настройка DNS сервера PowerDNS. Вы можете спросить, почему не так популярный нынче Bind? Power Dns отличается от него тем что берет данные о зонах из базы данных, поддерживаются популярные БД, такие как MYSQL, PGSQL, Oracle. Работает как в качестве авторитетного, так и в качестве рекурсивного сервера. Удобством данного [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img class="aligncenter" src="http://sudouser.com/screen//powerdns_logo.png" alt="" width="463" height="329" /></p>
<p>В этой статье описана установка и начальная настройка DNS сервера PowerDNS. Вы можете спросить, почему не так популярный нынче Bind? Power Dns отличается от него тем что берет данные о зонах из базы данных, поддерживаются популярные БД, такие как MYSQL, PGSQL, Oracle. Работает как в качестве авторитетного, так и в качестве рекурсивного сервера. Удобством данного решения является удобная панель администрирования с веб интерфейсом, каких для Bind есть несколько, и все они не блещут своей функциональностью и удобством настройки. Power Dns так же предусмартивает возможность миграции с обычного Bind.<br />
Данное руководство написано для использования с Ubuntu Server 8.10, но подойдет и для других Debian based дистрибутивов.</p>
<p><span id="more-106"></span><br />
Установим необходимое, для начала MYSQL.</p>
<blockquote><p>apt-get install mysql-server mysql-client</p></blockquote>
<p>Затем отредактируем конфиг файл MYSQL, необходимо настроить его таким образом, что бы он был доступен со всех интерефейсов, для этого необходимо закомментировать строку с параметром bind-address</p>
<blockquote><p>[...]<br />
# Instead of skip-networking the default is now to listen only on<br />
# localhost which is more compatible and is not less secure.<br />
#bind-address<br />
[...]</p></blockquote>
<p>Перезапустим MYSQL командой <strong>/etc/init.d/mysql restart</strong> и проверим что у нас получилось</p>
<blockquote><p>netstat -tap |grep mysql</p></blockquote>
<p>Мы должны увидеть примерно следующее</p>
<blockquote><p>root@server1:~# netstat -tap | grep mysql<br />
tcp 0 0 *:mysql *:* LISTEN 6724/mysqld<br />
root@server1:~#</p></blockquote>
<p>Теперь перейдем к установке сервера PowerDns</p>
<blockquote><p>apt-get install pdns-server pdns-backend-mysql</p></blockquote>
<p>Конфигурация PowerDns хранится в директории <strong>/etc/powerdns</strong>, мы вернемся к ней чуть позже, а пока создадим базу данных и таблицы в ней для нашего dns сервера. Я использовал для примера имя пользователя для БД power_admin с паролем power_admin_password, не забудьте сменить их на свои. Среди команд приведены краткие комментарии для разъяснения действий и названия таблиц.</p>
<blockquote><p>mysql -u root -p<br />
CREATE DATABASE powerdns;<br />
GRANT ALL ON powerdns.* TO &#8216;power_admin&#8217;@'localhost&#8217; IDENTIFIED BY &#8216;power_admin_password&#8217;;<br />
GRANT ALL ON powerdns.* TO &#8216;power_admin&#8217;@'localhost.localdomain&#8217; IDENTIFIED BY &#8216;power_admin_password&#8217;;<br />
FLUSH PRIVILEGES;<br />
### Базу создали, права выставили, переходим к созданию таблиц.<br />
USE powerdns;<br />
### Таблица для доменов<br />
CREATE TABLE domains (<br />
id INT auto_increment,<br />
name VARCHAR(255) NOT NULL,<br />
master VARCHAR(128) DEFAULT NULL,<br />
last_check INT DEFAULT NULL,<br />
type VARCHAR(6) NOT NULL,<br />
notified_serial INT DEFAULT NULL,<br />
account VARCHAR(40) DEFAULT NULL,<br />
primary key (id)<br />
);<br />
### Создаем индекс для таблицы<br />
CREATE UNIQUE INDEX name_index ON domains(name);<br />
### Создаем таблицу записей<br />
CREATE TABLE records (<br />
id INT auto_increment,<br />
domain_id INT DEFAULT NULL,<br />
name VARCHAR(255) DEFAULT NULL,<br />
type VARCHAR(6) DEFAULT NULL,<br />
content VARCHAR(255) DEFAULT NULL,<br />
ttl INT DEFAULT NULL,<br />
prio INT DEFAULT NULL,<br />
change_date INT DEFAULT NULL,<br />
primary key(id)<br />
);<br />
### Создаем индексы для таблицы<br />
CREATE INDEX rec_name_index ON records(name);<br />
CREATE INDEX nametype_index ON records(name,type);<br />
CREATE INDEX domain_id ON records(domain_id);<br />
### Создаем таблицу мастер зон<br />
CREATE TABLE supermasters (<br />
ip VARCHAR(25) NOT NULL,<br />
nameserver VARCHAR(255) NOT NULL,<br />
account VARCHAR(40) DEFAULT NULL<br />
);<br />
### Пока все, можно выходить<br />
quit;</p></blockquote>
<p>Теперь пора отредактировать конфигурационный файл PowerDns, добавим тип запуска, а именно линию <strong>launch=gmysql</strong> как показано в примере ниже. Выполните команду vim /etc/powerdns/pdns.conf и вставьте нужный текст в файл.</p>
<blockquote><p>[...]<br />
#################################<br />
# launch Which backends to launch and order to query them in<br />
#<br />
# launch=<br />
launch=gmysql<br />
[...]</p></blockquote>
<p>Затем отредактируйте файл <strong>/etc/powerdns/pdns.d/pdns.local</strong> до состояния приведенного в примере ниже, не забудьте сменить имя пользователя и пароль от базы данных на те что вы указали при создании базы данных.</p>
<blockquote><p># Here comes the local changes the user made, like configuration of<br />
# the several backends that exists.<br />
gmysql-host=127.0.0.1<br />
gmysql-user=power_admin<br />
gmysql-password=power_admin_password<br />
gmysql-dbname=powerdns</p></blockquote>
<p>Перезапустите сервер PowerDns командой /etc/init.d/pdns restart, после этого он уже готов к работе. Вы можете ознакомится с документацией по нему по адресу <a href="http://downloads.powerdns.com/documentation/" target="_blank">http://downloads.powerdns.com/documentation/</a></p>
<h3>Установка Poweradmin</h3>
<p>Установим все пакет необходимые для нормальной работы пакета.</p>
<blockquote><p>apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext</p></blockquote>
<p>Установим Pear DB</p>
<blockquote><p>pear install DB<br />
pear install pear/MDB2#mysql</p></blockquote>
<p>Затем перезапустите Apache командой <strong>/etc/init.d/apache2 restart</strong>.</p>
<p>Скачаем дистрибутив Poweradmin</p>
<blockquote><p>cd /tmp<br />
wget https://www.poweradmin.org/download/poweradmin-2.1.2.tgz</p></blockquote>
<p>Ставить будем в директорию <strong>/var/www/poweradmin</strong></p>
<p><strong>tar xvfz poweradmin-2.1.2.tgz<br />
mv poweradmin-2.1.2 /var/www/poweradmin<br />
touch /var/www/poweradmin/inc/config.inc.php<br />
chown -R www-data:www-data /var/www/poweradmin/</strong></p>
<p>Затем открываем в браузере адрес вашего сервера, ( например http://server1.example.com/poweradmin/install или http://192.168.0.100/poweradmin/install). И в открывшемся окне выбираем язык, затем заполняем информацию касательно нашей базы данных, а именно логин, пароль, и название базы, хост базы localhost.</p>
<p>Затем будет окно с вопросами о создании служебного аккаунта для нашего DNS сервера, впишем имя юзера power_admin, и зададим ниже пароль для аккаунта администратора и адрес электронной почты, в котором надо <strong>обязательно</strong> заменить символ “<strong>@</strong>” на символ “<strong>.</strong>“, тоесть если у вас адрес vasya@example.com то он должен быть написан как vasya.example.com.<br />
Далее вам будет предложеновыполнить запрос к вашей БД для установки привелегий, и на этом установка завершена.</p>
<p>Необходимо удалить директорию с файлами инсталляции poweradmin</p>
<blockquote><p>rm -fr /var/www/poweradmin/install/</p></blockquote>
<p>Затем вы можете зайти по адресу вашего сервера, ( например http://server1.example.com/poweradmin или http://192.168.0.100/poweradmin) с логином <strong>admin</strong> и паролем который вы задали при установке.<br />
На этом все, можете переходить к созданию зон и настроек вашего DNS сервера.<br />
Оригинал статьи (На английском языке, присутствуют скриншоты) <a href="http://www.howtoforge.com/installing-powerdns-with-mysql-backend-and-poweradmin-on-ubuntu-8.10" target="_blank">http://www.howtoforge.com/installing-powerdns-with-mysql-backend-and-poweradmin-on-ubuntu-8.10</a></p>
<p style="text-align: right"><em>Взято с <a href="http://sudouser.com/ustanovka-dns-servera-powerdns-s-podderzhkoj-mysql-veb-interfejsom-power-admin.html" target="_blank">sudouser.com</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://howtolinux.ru/2009/08/28/howto-%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-dns-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-powerdns-%d1%81-%d0%bf%d0%be%d0%b4%d0%b4%d0%b5%d1%80%d0%b6%d0%ba%d0%be%d0%b9-mysql-%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

