Инсталирал съм proftpd-mysql заредил съм modules, но като Include файла с sQL настройките и не иска да се стартира. Гледам лога не записва за Proftpd. Използвам CentOS 5.4. За пръв път се получава нещо такова.
Така... 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
Все още не виждам твоите конфигурационни файлове. Как да бъда сигурен, че си изпълнил стъпките точно?
Оправих се. Всичко е ток....
Добре, а как да направя, при създаването на home директорията от proftpd правата да стават 755.
И с това се справих. Нека споделя с Вас цялостната настройка за CentOS 5.4.
Да започнем с инсталацията.
GeSHi (Bash):
[root@localhost ~]# yum install proftpd-mysql
Използвам пакет за промяна на файловете mc. Променяме /etc/proftpd.conf да изглежда по този начин.
GeSHi (Bash):
[root@localhost ~]# mcedit -cd /etc/proftpd.conf
GeSHi (Bash):
ServerName "ProFTPD Сървър"
ServerType standalone
DefaultServer on
Port 21
UseIPv6 off
Umask 022
MaxInstances 50
User ftpuser
Group ftpgroup
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP сървъра е готов."
RootLogin off
RequireValidShell off
CreateHome on 755 dirmode 755
AllowOverwrite on
# Bar use of SITE CHMOD by default
#<Limit SITE_CHMOD>
# DenyAll
#</Limit>
SystemLog /var/log/proftpd/proftpd.log
Include "/etc/proftpd/mysql.conf"
Отваряме нов файл mysql.conf и в него въвеждаме
GeSHi ():
[root@localhost ~]# mcedit -cd /etc/proftpd/mysql.conf
GeSHi (Bash):
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_sql.c
SQLConnectInfo база_данни@localhost потребител_на_бд парола_за_потребителя
SQLAuthenticate users groups
SQLAuthTypes Plaintext Crypt
SQLDefaultHomedir ~
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
SQLLogFile /var/log/proftpd/proftpd-sql.log
# Count number of logins for each user
SQLLog PASS lastcount
SQLNamedQuery lastcount UPDATE "count=count+1 WHERE userid='%u'" ftpuser
# Save last login
SQLLog PASS lastlogin
SQLNamedQuery lastlogin UPDATE "modified=now() WHERE userid='%u'" ftpuser
# Do not let disabled or expired users to login
SQLUserWhereClause "disabled='1' OR expires='0000-00-00 00:00:00' OR expires>now()"
# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
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}'"
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}'"
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
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
Следва да се свържем с mysql и да създадем потребителя, да му зададем права и да създадем базата данни с таблиците в нея, но преди това въвеждаме в терминала следните команди.
GeSHi (Bash):
[root@localhost ~]# groupadd -g 2001 ftpgroup
[root@localhost ~]# useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
Свързваме се към mysql с root потребител
GeSHi (Bash):
[root@localhost ~]#mysql -u root -p
GeSHi (Bash):
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'потребител_за_дб'@'localhost' IDENTIFIED BY 'парола_за_дб_потребителя';
FLUSH PRIVILEGES;
Избираме базата данни ftp:
GeSHi (Bash):
USE ftp;
Създаваме таблиците в нея:
GeSHi (Bash):
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';
GeSHi (Bash):
CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
GeSHi (Bash):
CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
GeSHi (Bash):
CREATE TABLE `ftpuser` (
`id` int(10) unsigned NOT NULL auto_increment,
`userid` varchar(32) NOT NULL default '',
`passwd` varchar(32) NOT NULL default '',
`uid` smallint(6) NOT NULL default '5500',
`gid` smallint(6) NOT NULL default '5500',
`homedir` varchar(255) NOT NULL default '',
`shell` varchar(16) NOT NULL default '/sbin/nologin',
`count` int(11) NOT NULL default '0',
`accessed` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`disabled` enum('0','1') NOT NULL default '0',
`expires` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `userid` (`userid`)
) ENGINE=MyISAM;
Изписваме quit; за да излезем от Mysql Shell-а и да се върнем отново към Linux Shell-а
GeSHi (Bash):
quit;
Дойде ред да направим proftpd да се стартира със зареждане на OS и да го стартираме самия него още сега.
GeSHi (Bash):
[root@localhost ~]# chkconfig --levels 235 proftpd on
[root@localhost ~]# /etc/init.d/proftpd start
За да създадем 1-вия потребител влизаме отново в mysql:
GeSHi (Bash):
[root@localhost ~]# mysql -u root -p
Отново избираме база ftp:
GeSHi (Bash):
USE ftp;
Вмъкмаме записите както следва:
GeSHi (Bash):
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
GeSHi (Bash):
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):
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`, `disabled`, `expires`) VALUES
(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):
quit;
Проверяваме правата да изглеждат по следния начин.
GeSHi (Bash):
[root@localhost ~]# ls -l /home/
Трябва да Ви изведе нещо подобно
GeSHi (Bash):
drwxr-xr-x 2 ftpuser ftpgroup 4096 2010-05-24 13:10 ftp_потребителската_директория
Ако имате въпроси питайте... Продължението на темата, е настройка на httpd да ползва потребителските директории и да могат да се отварят със субдомейн примерно от типа http://ftp_потребител.site.com + php скриптовете за регистрация на фтп акаунт и администрацията на тези.. Става въпрос да се получи системка за безплатен хостинг с поддомейни.
Браво. Описал си го много добре!
Благодаря. Забравих да отбележа, че източника е http://www.howtoforge.com/virtual_hosting_with_proftpd_and_mysql_fedora7 ($2), но го доработих да стане за CentOS(едно и също е ама) ... Сложил съм някои допълнения към кода, за таблица ftpuser да може да отчита последни промени. В php кода, ще направя да може да слага дата на accessed от ftpuser като дата на създаване на акаунта. Ще го направя завършена хостинг системка от типа free.bg или hit.bg както искате го приемайте, но ще има доста екстри, като например база данни + фтп достъп + php поддръжка