サーバー管理 · 1 min read · Dec 15, 2025

Debian Etch における PureFTPd と MySQL を使用した仮想ホスティング (クォータおよび帯域幅管理を含む)

Debian Etch における PureFTPd と MySQL を使用した仮想ホスティング (クォータおよび帯域幅管理を含む)

バージョン 1.0
著者: Falko Timme

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

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 apache2

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

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 サポート付き PureFTPd のインストール

Debian には事前に設定された pure-ftpd-mysql パッケージが利用可能です。次のようにインストールします:

apt-get install pure-ftpd-mysql

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

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

4 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 であると仮定しています) phpMyAdmin にアクセスするには、ブラウザで http://server1.example.com/phpmyadmin/ にアクセスし、ユーザー pureftpd としてログインします。これでデータベースを確認できます。後で phpMyAdmin を使用して PureFTPd サーバーを管理できます。

Share: X/Twitter LinkedIn

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

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