FTP сървър с виртуални потребители на основата на Proftpd и MySQL

от wiki.linux-bg.org, свободната енциклопедия

Съдържание

Въведение

Ще се опитам да обясня как успях при мен да подкарам Proftpd с MySQL като за редактиране на потребителите се използва един PHPтуул proFTPd Administrator (http://proftpd-adm.sourceforge.net/).

Инсталиране на компонентите

Почти за всяко дистро си има готови пакети с необходимите програми. Под Ubuntu 6.06 обаче не можах да подкарам Proftpd да чете правилно базата данни - според мен нещо е бъги. С Дебиан 3.1 нямах никакъв проблем като инсталирах направо дебианway (apt-get). Може би, просто модула proftpd-mysql в убунту не е като хората. И така за хората, които искат, нека да пробват първо с пакетите на дистрото за съответните програми. Необходими са Proftpd с MySQL модул и MySQL-Sever. А за proFTPd Administrator и Apache с PHP,PHP-MySQL поддръжка.

MySQL Сървър

  • При Дебиан Sarge:
apt-get install mysql-server
  • При Убунту 6.06 може да се избира м/у MySQL 4 и 5:
apt-get install mysql-server или
apt-get install mysql-server-5.0

PHP5 и Apache2

  • Дебиан:
Добавяне на:
deb http://people.debian.org/~dexter all sarge
deb-src http://people.debian.org/~dexter all sarge 
в /etc/apt/sources.list (заради PHP5)

Следва:

apt-get update
apt-get install libapache2-mod-php5.0 php5.0-mysqli apache2
  • Убунту:
apt-get install libapache2-mod-php5 php5-mysqli apache2

Proftpd с MySQL модул

  • Дебиан:
apt-get install proftpd-mysql
  • Убунту:

По принцип би трябвало да се инсталира както при Дебиан, но пакета proftpd-mysql не четеше по-късно правилно базата данни, затова си свалих най-новата версия на proftpd от [1] (http://www.proftpd.org) и си го компилирах с поддръжка на MySQL. За компилирането са нужни gcc, g++ и cъответната библиотека libmysqlclient15-dev (при инсталиран MySQL5) или libmysqlclient14-dev (при MySQL4)

apt-get install g++ gcc libmysqlclient15-dev
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0.tar.bz2
tar xjf proftp-1.3.0.tar.bz2
cd proftpd-1.3.0
./configure --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/include/mysql/ --with-libraries=/usr/lib/mysql
make
make install
!!!! Важно !!!! 

Proftpd 1.3.0 в Убунту 6.10 идва с оправен proftpd-mysql, но и с различен начин на зареждане на модула: в /etc/proftpd/proftpd.conf трябва да се вмъкне Include /etc/proftpd/modules.conf , а в /etc/proftpd/modules.conf да се коментира LoadModule mod_sql_postgres.c

За да избегнете и нервиращото "- IPv6 getaddrinfo '<hostname>' error: Name or service not known"  при старт на ФТП Сървъра, вмъкнете в /etc/hosts :
::1     ip6-localhost ip6-loopback <hostname>

proFTPd Administrator

Според мен един много добър туул. Липсва му превод на български, така че някой ако има време и мерак може да пише на автора и предложи услугите си :)

  • Дебиан и Убунту:
wget http://surfnet.dl.sourceforge.net/sourceforge/proftpd-adm/proftpd_admin_v1.0.tar.gz
или сваляме от http://sourceforge.net/projects/proftpd-adm/
tar xzf proftpd_admin_v1.0.tar.gz
mv proftpd_admin_v1.0/ <kъдето искаме >

Конфигуриране

MySQL

За да работи всичко добре ни трябва база данни :) Така че след инсталирането на MySQL е хубаво да се сложи парола за root и после да се създаде нова база данни:

mysqladmin -u root password <парола>
cd <proFTPd Administrator директория>

ProFTPd Administrator

Следва редактиране на misc/database_structure_mysql/db_structure.sql (редактират се последните 3 реда, като на мястото на <database_password> се пише желаната парола за потребителя proftpd) Потребителя proftpd се използва от proFTPd Administrator за да има достъп до базата данни, която се създава чрез този SQL-скрипт ( може да бъде също променен ).

mysql -u root -p < misc/database_structure_mysql/db_structure.sql

Сега трябва да редактираме и файла <proFTPd Administrator директория>/configuration.xml като впишем данните за достъп в базата данни (host,username,password). За да може proFTPd Administrator да променя файла configuration.xml трябва да се нагласят правата за този файл.

chmod 757 configuration.xml

Време е да се нагласи и конфигурационния файл за proftpd. Препоръчително е да се използва фаила misc/sample_config/proftpd.conf

cp misc/sample_config/proftpd.conf /etc/proftpd.conf

ако proftpd е бил компилиран и инсталиран ръчно трябва да се копира примерния файл в /usr/local/etc/:

cp misc/sample_config/proftpd.conf /usr/local/etc/
или да се прибави в стартовия скрипт /usr/local/sbin/proftpd при секцията опции "-c /etc/proftpd.conf"

Сега трябва да се редактира този конфигурационнен файл. В него също трябва да се впишат данните за достъп до базата данни !

SQLConnectInfo                  proftpd_admin@localhost proftpd <database_password>

В същия този файл трябва да се променят User и Group. За Дебиан/Убунту трябваше да променя в реда Group nobody на nogroup. Ако proftpd е бил "ръчно" компилиран, то трябва да се създадат съответните директории.

cd /
mkdir ftp
cd ftp
mkdir incoming
chmod o+w incoming

Тези директории са нагласени и във файловете proftpd.conf и configuration.xml, така че ако решите да ги променяте, то трябва да внесете промените навсякъде.

Apache

В конфигурационния файл на Apache следва да се укаже пътя към <proFTPd Administrator директория>.

Следва рестартиране на MySQL, Proftpd, Apache и изпробване :)

P.S.

Това ми е първото Howto, така че моля по-полека с критиките. С удоволствие бих помогнал, ако нещо не е ясно.

Лични инструменти