Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: djpatzo в May 24, 2010, 01:09



Титла: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: djpatzo в May 24, 2010, 01:09
Инсталирал съм proftpd-mysql заредил съм modules, но като Include файла с sQL настройките и не иска да се стартира. Гледам лога не записва за Proftpd. Използвам CentOS 5.4. За пръв път се получава нещо такова.


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: neter в May 24, 2010, 01:17
Е, сподели малко конфигурации де, и съобщения за грешки, ако ти се намират :)


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: djpatzo в May 24, 2010, 01:27
Така... http://www.howtoforge.com/virtual_hosting_with_proftpd_and_mysql_fedora7 от тук инсталирах. Грешката която ми показва е ...

May 24 01:16:04 hosting-bg.org proftpd[4208] hosting-bg.org: ProFTPD killed (signal 15)
May 24 01:16:04 hosting-bg.org proftpd[4208] hosting-bg.org: ProFTPD 1.3.2 standalone mode SHUTDOWN


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: neter в May 24, 2010, 01:29
Все още не виждам твоите конфигурационни файлове. Как да бъда сигурен, че си изпълнил стъпките точно?


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: djpatzo в May 24, 2010, 01:33
Оправих се. Всичко е ток....


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: djpatzo в May 24, 2010, 12:25
Добре, а как да направя, при създаването на home директорията от proftpd правата да стават 755.


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: djpatzo в May 24, 2010, 13:14
И с това се справих. Нека споделя с Вас цялостната настройка за CentOS 5.4.

Да започнем с инсталацията.

Код
GeSHi (Bash):
  1. [root@localhost ~]# yum install proftpd-mysql

Използвам пакет за промяна на файловете mc. Променяме /etc/proftpd.conf да изглежда по този начин.
Код
GeSHi (Bash):
  1. [root@localhost ~]# mcedit -cd /etc/proftpd.conf
Код
GeSHi (Bash):
  1. ServerName "ProFTPD Сървър"
  2. ServerType standalone
  3. DefaultServer on
  4.  
  5. Port 21
  6.  
  7. UseIPv6 off
  8.  
  9. Umask 022
  10.  
  11. MaxInstances 50
  12.  
  13. User ftpuser
  14. Group ftpgroup
  15.  
  16. DefaultRoot ~
  17. IdentLookups off
  18. ServerIdent on "FTP сървъра е готов."
  19.  
  20. RootLogin off
  21. RequireValidShell off
  22. CreateHome on 755 dirmode 755
  23.  
  24. AllowOverwrite on
  25.  
  26. # Bar use of SITE CHMOD by default
  27. #<Limit SITE_CHMOD>
  28. #  DenyAll
  29. #</Limit>
  30.  
  31. SystemLog /var/log/proftpd/proftpd.log
  32.  
  33. Include "/etc/proftpd/mysql.conf"

Отваряме нов файл mysql.conf и в него въвеждаме
Код
GeSHi ():
  1. [root@localhost ~]# mcedit -cd /etc/proftpd/mysql.conf
Код
GeSHi (Bash):
  1. LoadModule mod_sql.c
  2. LoadModule mod_sql_mysql.c
  3. LoadModule mod_quotatab.c
  4. LoadModule mod_quotatab_sql.c
  5.  
  6. SQLConnectInfo база_данни@localhost потребител_на_бд парола_за_потребителя
  7. SQLAuthenticate users groups
  8. SQLAuthTypes Plaintext Crypt
  9. SQLDefaultHomedir ~
  10. SQLUserInfo ftpuser userid passwd uid gid homedir shell
  11. SQLGroupInfo ftpgroup groupname gid members
  12.  
  13. SQLLogFile /var/log/proftpd/proftpd-sql.log
  14.  
  15. # Count number of logins for each user
  16. SQLLog                PASS lastcount
  17. SQLNamedQuery         lastcount UPDATE "count=count+1 WHERE userid='%u'" ftpuser
  18.  
  19. # Save last login
  20. SQLLog                PASS lastlogin
  21. SQLNamedQuery         lastlogin UPDATE "modified=now() WHERE userid='%u'" ftpuser
  22.  
  23. # Do not let disabled or expired users to login
  24. SQLUserWhereClause "disabled='1' OR expires='0000-00-00 00:00:00' OR expires>now()"
  25.  
  26. # User quotas
  27. # ===========
  28. QuotaEngine on
  29. QuotaDirectoryTally on
  30. QuotaDisplayUnits Mb
  31. QuotaShowQuotas on
  32.  
  33. SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
  34.  
  35. SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
  36.  
  37. SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
  38.  
  39. SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
  40.  
  41. QuotaLimitTable sql:/get-quota-limit
  42. QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

Следва да се свържем с mysql и да създадем потребителя, да му зададем права и да създадем базата данни с таблиците в нея, но преди това въвеждаме в терминала следните команди.
Код
GeSHi (Bash):
  1. [root@localhost ~]# groupadd -g 2001 ftpgroup
  2. [root@localhost ~]# useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

Свързваме се към mysql с root потребител
Код
GeSHi (Bash):
  1. [root@localhost ~]#mysql -u root -p
Код
GeSHi (Bash):
  1. create database ftp;
  2. GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'потребител_за_дб'@'localhost' IDENTIFIED BY 'парола_за_дб_потребителя';
  3. FLUSH PRIVILEGES;
Избираме базата данни ftp:
Код
GeSHi (Bash):
  1. USE ftp;
Създаваме таблиците в нея:
Код
GeSHi (Bash):
  1. CREATE TABLE ftpgroup (
  2. groupname varchar(16) NOT NULL default '',
  3. gid smallint(6) NOT NULL default '5500',
  4. members varchar(16) NOT NULL default '',
  5. KEY groupname (groupname)
  6. ) TYPE=MyISAM COMMENT='ProFTP group table';
Код
GeSHi (Bash):
  1. CREATE TABLE ftpquotalimits (
  2. name varchar(30) default NULL,
  3. quota_type enum('user','group','class','all') NOT NULL default 'user',
  4. per_session enum('false','true') NOT NULL default 'false',
  5. limit_type enum('soft','hard') NOT NULL default 'soft',
  6. bytes_in_avail int(10) unsigned NOT NULL default '0',
  7. bytes_out_avail int(10) unsigned NOT NULL default '0',
  8. bytes_xfer_avail int(10) unsigned NOT NULL default '0',
  9. files_in_avail int(10) unsigned NOT NULL default '0',
  10. files_out_avail int(10) unsigned NOT NULL default '0',
  11. files_xfer_avail int(10) unsigned NOT NULL default '0'
  12. ) TYPE=MyISAM;
Код
GeSHi (Bash):
  1. CREATE TABLE ftpquotatallies (
  2. name varchar(30) NOT NULL default '',
  3. quota_type enum('user','group','class','all') NOT NULL default 'user',
  4. bytes_in_used int(10) unsigned NOT NULL default '0',
  5. bytes_out_used int(10) unsigned NOT NULL default '0',
  6. bytes_xfer_used int(10) unsigned NOT NULL default '0',
  7. files_in_used int(10) unsigned NOT NULL default '0',
  8. files_out_used int(10) unsigned NOT NULL default '0',
  9. files_xfer_used int(10) unsigned NOT NULL default '0'
  10. ) TYPE=MyISAM;
Код
GeSHi (Bash):
  1. CREATE TABLE `ftpuser` (
  2.  `id` int(10) unsigned NOT NULL auto_increment,
  3.  `userid` varchar(32) NOT NULL default '',
  4.  `passwd` varchar(32) NOT NULL default '',
  5.  `uid` smallint(6) NOT NULL default '5500',
  6.  `gid` smallint(6) NOT NULL default '5500',
  7.  `homedir` varchar(255) NOT NULL default '',
  8.  `shell` varchar(16) NOT NULL default '/sbin/nologin',
  9.  `count` int(11) NOT NULL default '0',
  10.  `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
  11.  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  12.  `disabled` enum('0','1') NOT NULL default '0',
  13.  `expires` datetime NOT NULL default '0000-00-00 00:00:00',
  14.  PRIMARY KEY  (`id`),
  15.  UNIQUE KEY `userid` (`userid`)
  16. ) ENGINE=MyISAM;
Изписваме quit; за да излезем от Mysql Shell-а и да се върнем отново към Linux Shell-а
Код
GeSHi (Bash):
  1. quit;

Дойде ред да направим proftpd да се стартира със зареждане на OS и да го стартираме самия него още сега.
Код
GeSHi (Bash):
  1. [root@localhost ~]# chkconfig --levels 235 proftpd on
  2. [root@localhost ~]# /etc/init.d/proftpd start

За да създадем 1-вия потребител влизаме отново в mysql:
Код
GeSHi (Bash):
  1. [root@localhost ~]# mysql -u root -p

Отново избираме база ftp:
Код
GeSHi (Bash):
  1. USE ftp;

Вмъкмаме записите както следва:
Код
GeSHi (Bash):
  1. INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
Код
GeSHi (Bash):
  1. INSERT INTO `ftpquotalimits` (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`, `bytes_xfer_avail`, `files_in_avail`, `files_out_avail`, `files_xfer_avail`) VALUES ('ftp_потребител', 'user', 'true', 'hard', 15728640, 0, 0, 0, 0, 0);
Код
GeSHi (Bash):
  1. INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`, `disabled`, `expires`) VALUES
  2. (1, 'ftp_потребител', 'парола_за_ftp_потребителя', 2001, 2001, '/home/директорията/която/ще/ползва/потребителя', '/sbin/nologin', 14, '0000-00-00 00:00:00',  '0000-00-00 00:00:00', '0', '0000-00-00 00:00:00');

Отново излизаме от mysql с команда quit;
Код
GeSHi (Bash):
  1. quit;

Проверяваме правата да изглеждат по следния начин.
Код
GeSHi (Bash):
  1. [root@localhost ~]# ls -l /home/

Трябва да Ви изведе нещо подобно
Код
GeSHi (Bash):
  1. drwxr-xr-x 2 ftpuser ftpgroup 4096 2010-05-24 13:10 ftp_потребителската_директория

Ако имате въпроси питайте... Продължението на темата, е настройка на httpd да ползва потребителските директории и да могат да се отварят със субдомейн примерно от типа http://ftp_потребител.site.com + php скриптовете за регистрация на фтп акаунт и администрацията на тези.. Става въпрос да се получи системка за безплатен хостинг с поддомейни.


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: b2l в May 24, 2010, 13:20
Браво. Описал си го много добре!


Титла: Re: Проблем с настройването на Proftpd с include mysql.conf
Публикувано от: djpatzo в May 24, 2010, 13:26
Благодаря. Забравих да отбележа, че източника е http://www.howtoforge.com/virtual_hosting_with_proftpd_and_mysql_fedora7 ($2), но го доработих да стане за CentOS(едно и също е ама) ... Сложил съм някои допълнения към кода, за таблица ftpuser да може да отчита последни промени. В php кода, ще направя да може да слага дата на accessed от ftpuser като дата на създаване на акаунта. Ще го направя завършена хостинг системка от типа free.bg или hit.bg както искате го приемайте, но ще има доста екстри, като например база данни + фтп достъп + php поддръжка