サーバー設定 · 2 min read · Dec 09, 2025
Debian Etch における Proftpd と MySQL を用いた仮想ホスティング (クォータ含む)
Debian Etch における Proftpd と MySQL を用いた仮想ホスティング (クォータ含む)
Version 1.0
Author: Falko Timme
この文書では、実際のシステムユーザーの代わりに MySQL データベースからの仮想ユーザーを使用する Proftpd サーバーのインストール方法について説明します。これにより、単一のマシン上で数千の FTP ユーザーを持つことができ、パフォーマンスが大幅に向上します。さらに、このセットアップでのクォータの使用方法も示します。
MySQL データベースの管理には、phpMyAdmin のようなウェブベースのツールを使用できます。この手順書でも phpMyAdmin をインストールします。phpMyAdmin は快適なグラフィカルインターフェースを提供するため、コマンドラインをいじる必要はありません。
このチュートリアルは Debian Etch (Debian 4.0) に基づいています。最初の 6 章で説明されているように、基本的な Debian Etch システムをすでにセットアップしている必要があります: https://www.howtoforge.com/perfect_setup_debian_etch
この手順書は実践的なガイドとして意図されています。理論的な背景については、ウェブ上の他の多くの文書で扱われています。
この文書は一切の保証なしで提供されます!これはこのようなシステムを設定する唯一の方法ではないことをお伝えしたいと思います。この目標を達成する方法はたくさんありますが、これは私が取る方法です。これがあなたにとって機能することを保証するものではありません!
1 前提条件
このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。
2 MySQL と phpMyAdmin のインストール
これらはすべて 1 つのコマンドでインストールできます:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2MySQL ユーザー root のパスワードを作成します (yourrootsqlpassword を使用したいパスワードに置き換えてください):
mysqladmin -u root password yourrootsqlpassword次に、以下のコマンドで確認します:
netstat -tap | grep mysqlMySQL がどのアドレスでリッスンしているかを確認します。出力が次のように見える場合:
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 yourrootsqlpassword3 MySQL サポート付きの Proftpd のインストール
Debian には、事前に設定された proftpd-mysql パッケージがあります。次のようにスタンドアロンデーモンとしてインストールします:
apt-get install proftpd-mysql次の質問が表示されます:
Run proftpd from inetd or standalone? <– standalone
次に、すべての仮想ユーザーがマッピングされる ftp グループ (ftpgroup) とユーザー (ftpuser) を作成します。グループおよびユーザー ID 2001 を、システム上で空いている番号に置き換えてください:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser4 Proftpd 用の MySQL データベースの作成
次に、ftp という名前のデータベースと、後で proftpd デーモンが ftp データベースに接続するために使用する proftpd という名前の MySQL ユーザーを作成します:
mysql -u root -pcreate 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/ にアクセスし、proftpd としてログインできます。これでデータベースを確認できます。後で phpMyAdmin を使用して Proftpd サーバーを管理できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。