サーバー設定 · 1 min read · Dec 16, 2025

PureFTPd と MySQL を使用した仮想ホスティング (クォータと帯域幅管理を含む)

この文書では、実際のシステムユーザーの代わりに MySQL データベースからの仮想ユーザーを使用する PureFTPd サーバーのインストール方法について説明します。これにより、単一のマシン上で数千の FTP ユーザーを持つことができ、パフォーマンスが大幅に向上します。さらに、このセットアップでの クォータアップロード/ダウンロード帯域幅制限 の使用方法も示します。パスワードはデータベースに 暗号化 された MD5 文字列として保存されます。

MySQL データベースの管理には、phpMyAdmin のようなウェブベースのツールを使用できます。この手順書でも phpMyAdmin をインストールします。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 ベースのディストリビューション(UbuntuKnoppix など)にも修正なしで適用できるはずです。SuSEFedoraMandriva などの他のディストリビューションでは、PureFTPd のインストールのみが異なりますが、PureFTPd の設定はこれらのディストリビューションにも適用されるはずです。

この手順書は実用的なガイドとして意図されており、理論的な背景はカバーしていません。理論的な背景は、ウェブ上の他の多くの文書で扱われています。

この文書にはいかなる種類の保証もありません!これはこのようなシステムを設定する唯一の方法ではないことをお伝えしたいと思います。この目標を達成する方法はたくさんありますが、これは私が取る方法です。これがあなたにとって機能することを保証するものではありません!

1 MySQL と phpMyAdmin をインストールする

これらはすべて 1 つのコマンドでインストールできます:

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

いくつかの質問が表示されます:

suExec を有効にしますか? <– はい
mysql-server の設定 (インストールのヒント) <– OK
自動的に再構成したいウェブサーバーはどれですか? <– apache, apache2
今すぐ apache を再起動しますか? <– はい

MySQL ユーザー root のパスワードを作成します (yourrootsqlpassword を使用したいパスワードに置き換えます):

mysqladmin -u root password yourrootsqlpassword

2 MySQL サポート付きの PureFTPd をインストールする

Debian には、事前に構成された pure-ftpd-mysql パッケージがあります。次のように スタンドアロン デーモンとしてインストールします:

apt-get install pure-ftpd-mysql

inetd から pure-ftpd を実行しますか、それともスタンドアロン サーバーとして実行しますか? <– スタンドアロン
pure-ftpwho を setuid root としてインストールしますか? <– いいえ

次に、すべての仮想ユーザーがマッピングされる FTP グループ(” ftpgroup “)とユーザー(” ftpuser “)を作成します。グループ ID とユーザー ID 2001 をシステム上で空いている番号に置き換えます:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “pureftpd user” -g ftpgroup ftpuser

3 PureFTPd 用の MySQL データベースを作成する

次に、pureftpd という名前のデータベースと、PureFTPd デーモンが後で pureftpd データベースに接続するために使用する pureftpd という名前の MySQL ユーザーを作成します:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.
TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd. TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;

文字列 ftpdpass を MySQL ユーザー pureftpd に使用したいパスワードに置き換えます。まだ MySQL シェルにいる間に、必要なデータベーステーブルを作成します(はい、テーブルは 1 つだけです!):

USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default ‘’,
status enum(‘0’,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default ‘’,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default ‘’,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘
‘,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;*

quit;

ご覧のとおり、quit; コマンドで MySQL シェルを終了し、Linux シェルに戻りました。

ちなみに、(あなたの FTP サーバーシステムのホスト名が server1.example.com であると仮定します)ブラウザで http://server1.example.com/phpmyadmin/ にアクセスし、pureftpd としてログインできます。(server1.example.com の代わりに IP アドレスを使用することもできます。)その後、データベースを確認できます。後で phpMyAdmin を使用して PureFTPd サーバーを管理できます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。