虚拟主机与Proftpd和MySQL(包括配额)在Debian Etch
版本1.0
作者:Falko Timme
本文档介绍如何安装使用MySQL数据库而不是真实系统用户的虚拟用户的Proftpd服务器。 这是更好的性能,并允许在单个机器上有成千上万的ftp用户。 除此之外,我将使用此设置显示使用配额。
对于MySQL数据库的管理,您可以使用基于Web的工具,如phpMyAdmin,它也将安装在此howto中。 phpMyAdmin是一个舒适的图形界面,这意味着您不必乱用命令行。
本教程基于Debian Etch(Debian 4.0)。 您应该已经建立了一个基本的Debian蚀刻系统,如本教程前六章所述: http : //www.youcl.com/perfect_setup_debian_etch
这是一个实践指南; 它不包括理论背景。 他们在网络上的许多其他文档中被处理。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1初步说明
在本教程中,我使用IP地址为192.168.0.100
的hostname server1.example.com
。 这些设置可能会有所不同,因此您必须在适当的情况下更换它们。
2安装MySQL和phpMyAdmin
这一切都可以通过一个命令安装:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
为MySQL用户root
创建密码(将yourrootsql
密码替换为您要使用的密码):
mysqladmin -u root password yourrootsqlpassword
然后检查
netstat -tap | grep mysql
MySQL正在监听哪个地址。 如果输出如下所示:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld
这意味着MySQL只监听localhost.localdomain
,那么你以前设置的密码是安全的。 但如果输出如下所示:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqld
您也应该为您的主机名设置一个MySQL密码,因为否则任何人都可以访问您的数据库并修改数据:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3使用MySQL支持安装Proftpd
对于Debian,有一个预配置的proftpd-mysql
包可用。 将其作为独立守护进程安装,如下所示:
apt-get install proftpd-mysql
您将被问到以下问题:
从inetd或独立运行proftpd?
< - 独立
然后我们创建一个ftp组( ftpgroup
)和用户( ftpuser
),我们所有的虚拟用户将被映射到。 将group-and userid 2001
替换为系统上免费的数字:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
4为Proftpd创建MySQL数据库
现在我们创建一个名为ftp
的数据库和名为proftpd
的MySQL用户,proftpd守护程序稍后将使用它来连接到ftp
数据库:
mysql -u root -p
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
将字符串密码
替换为要用于MySQL用户proftpd的
任何密码。 仍然在MySQL shell上,我们创建了我们需要的数据库表:
USE ftp;
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';
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;
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;
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',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
quit;
你可能已经注意到,随着戒烟;
命令我们已经离开了MySQL shell,并回到了Linux shell。
BTW,(我假设您的ftp服务器系统的主机名为server1.example.com
),您可以访问http://server1.example.com/phpmyadmin/下的phpMyAdmin
(您可以使用IP地址而不是server1。 example.com
),并以proftpd
身份登录。 那么你可以看看数据库。 以后可以使用phpMyAdmin管理您的Proftpd服务器。