サーバー設定 · 1 min read · Dec 15, 2025
ProftpdとMySQLを使用した仮想ホスティング(クォータを含む)
これは“コピー&ペースト”のHowToです! このチュートリアルに従う最も簡単な方法は、コマンドラインクライアント/SSHクライアント(Windows用のPuTTYなど)を使用し、コマンドをコピー&ペーストすることです(IPアドレス、ホスト名、パスワードなどの自分の情報を提供する必要がある場所を除く)。これにより、タイプミスを避けることができます。
ProftpdとMySQLを使用した仮想ホスティング(クォータを含む)
バージョン 1.0
著者: Falko Timme
この文書では、実際のシステムユーザーの代わりにMySQLデータベースから仮想ユーザーを使用するProftpdサーバーのインストール方法について説明します。これははるかにパフォーマンスが良く、単一のマシンで数千のFTPユーザーを持つことができます。さらに、このセットアップでのクォータの使用方法も示します。
MySQLデータベースの管理には、phpMyAdminのようなウェブベースのツールを使用できます。このHowToでもインストールされます。phpMyAdminは、コマンドラインをいじる必要がない快適なグラフィカルインターフェースです。
このチュートリアルはDebian Sarge(Debian 3.1)に基づいています。ここで説明されているように、基本的なDebianシステムをすでにセットアップしている必要があります: https://www.howtoforge.com/perfect_setup_debian_sarge と https://www.howtoforge.com/perfect_setup_debian_sarge_p2。他のDebianベースのディストリビューション(Ubuntu、Knoppixなど)にも修正なしで適用されるはずです。SuSE、Fedora、Mandrivaなどの他のディストリビューションでは、Proftpdのインストールのみが異なります。Proftpdの設定はこれらのディストリビューションにも適用されるはずです。
このHowToは実用的なガイドとして意図されています。理論的な背景はカバーしていません。それらはウェブ上の他の多くの文書で扱われています。
この文書にはいかなる種類の保証もありません!これはそのようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はたくさんありますが、これが私の取る方法です。これがあなたにとって機能するという保証はありません!
1 MySQLとphpMyAdminのインストール
これらはすべて1つのコマンドでインストールできます:
apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin
いくつかの質問が表示されます:
suExecを有効にしますか? <– はい
mysql-serverの設定(インストールヒント) <– OK
自動的に再構成したいWebサーバーはどれですか? <– apache, apache2
今すぐapacheを再起動しますか? <– はい
MySQLユーザーrootのパスワードを作成します(yourrootsqlpasswordを使用したいパスワードに置き換えます):
mysqladmin -u root password yourrootsqlpassword
2 MySQLサポート付きのProftpdのインストール
Debianには、事前に設定されたproftpd-mysqlパッケージが利用可能です。次のようにスタンドアロンデーモンとしてインストールします:
apt-get install proftpd-mysql
inetdからproftpdを実行しますか、それともスタンドアロンですか? <– スタンドアロン
次に、すべての仮想ユーザーがマッピングされるftpグループ(”ftpgroup“)とユーザー(”ftpuser“)を作成します。グループIDとユーザーID2001をシステム上で空いている番号に置き換えます:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “proftpd user” -g ftpgroup ftpuser
3 Proftpd用のMySQLデータベースの作成
次に、ftpという名前のデータベースと、Proftpdデーモンが後でftpデータベースに接続するために使用するproftpdという名前のMySQLユーザーを作成します:
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;
passwordという文字列をMySQLユーザーproftpdに使用したいパスワードに置き換えます。MySQLシェルにいる間に、必要なデータベーステーブルを作成します:
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;
ご覧のとおり、quit;コマンドでMySQLシェルを終了し、Linuxシェルに戻りました。
ところで、(あなたのFTPサーバーシステムのホスト名がserver1.example.comであると仮定します)ブラウザでhttp://server1.example.com/phpmyadmin/にアクセスし(server1.example.comの代わりにIPアドレスを使用できます)、proftpdとしてログインできます。これでデータベースを確認できます。後でphpMyAdminを使用してProftpdサーバーを管理できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。