サーバー設定 · 2 min read · Feb 14, 2026

Fedora 13 における PureFTPd と MySQL を用いた仮想ホスティング (クォータと帯域幅管理を含む)

Fedora 13 における PureFTPd と MySQL を用いた仮想ホスティング (クォータと帯域幅管理を含む)

Version 1.0
Author: Falko Timme
Follow me on Twitter

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

MySQL データベースの管理には、phpMyAdmin のようなウェブベースのツールを使用できます。このハウツーでも phpMyAdmin をインストールします。phpMyAdmin は快適なグラフィカルインターフェースであり、コマンドラインをいじる必要がありません。

このチュートリアルは Fedora 13 に基づいています。基本的な Fedora 13 システムをすでにセットアップしている必要があります。たとえば、このチュートリアルの最初の 5 章で説明されているように: https://www.howtoforge.com/perfect-server-fedora-13-x86_64-ispconfig-2

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

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

1 前提条件

このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。

2 MySQL と phpMyAdmin のインストール

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

yum install mysql mysql-server phpMyAdmin httpd

その後、phpMyAdmin をすべての IP アドレスからアクセス可能にするために、ファイル /etc/httpd/conf.d/phpMyAdmin.conf を編集する必要があります。デフォルトでは、127.0.0.1 からのみアクセス可能です。このセクションをコメントアウトします:

#  
#   Order Deny,Allow  
#   Deny from All  
#   Allow from 127.0.0.1  
#   Allow from ::1  
#

ファイルが次のようになるようにします:

vi /etc/httpd/conf.d/phpMyAdmin.conf

| # phpMyAdmin - Web based MySQL browser written in php # # Allows only localhost by default # # But allowing phpMyAdmin to anyone other than localhost should be considered # dangerous unless properly secured by SSL Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin # # Order Deny,Allow # Deny from All # Allow from 127.0.0.1 # Allow from ::1 # Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 # These directories do not require access over HTTP - taken from the original # phpMyAdmin upstream tarball # Order Deny,Allow Deny from All Allow from None Order Deny,Allow Deny from All Allow from None # This configuration prevents mod_security at phpMyAdmin directories from # filtering SQL etc. This may break your mod_security implementation. # # # # SecRuleInheritance Off # # |

次に、MySQL と Apache のシステム起動リンクを作成します(システムが起動するたびに自動的に両方が起動するように)し、両方のサービスを開始します:

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start
chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

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

mysql_secure_installation

[root@server1 ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

MySQL を安全にするためにログインするには、現在の root ユーザーの パスワードが必要です。 MySQL をインストールしたばかりで、まだ root パスワードを設定していない場合、パスワードは空白になりますので、ここでは単にエンターを押してください。

Enter current password for root (enter for none): <– ENTER
OK, successfully used password, moving on…

root パスワードを設定することで、適切な認証なしに誰も MySQL の root ユーザーにログインできないようにします。

Set root password? [Y/n] <– ENTER
New password: <– yourrootsqlpassword
Re-enter new password: <– yourrootsqlpassword
Password updated successfully!
Reloading privilege tables..
… Success!

デフォルトでは、MySQL インストールには匿名ユーザーがあり、誰でも ユーザーアカウントを作成することなく MySQL にログインできます。 これはテスト用にのみ意図されており、インストールを少しスムーズにするためのものです。 本番環境に移行する前にそれらを削除する必要があります。

Remove anonymous users? [Y/n] <– ENTER
… Success!

通常、root は「localhost」からのみ接続を許可されるべきです。 これにより、誰かがネットワークから root パスワードを推測できないようにします。

Disallow root login remotely? [Y/n] <– ENTER
… Success!

デフォルトでは、MySQL には「test」という名前のデータベースがあり、誰でもアクセスできます。 これはテスト用にのみ意図されており、本番環境に移行する前に削除する必要があります。

Remove test database and access to it? [Y/n] <– ENTER
- Dropping test database…
… Success!
- Removing privileges on test database…
… Success!

特権テーブルを再読み込みすることで、これまでに行ったすべての変更が即座に適用されることを保証します。

Reload privilege tables now? [Y/n] <– ENTER
… Success!

Cleaning up…

すべて完了しました! 上記のすべての手順を完了した場合、MySQL インストールは現在安全であるはずです。

MySQL をご利用いただきありがとうございます!

[root@server1 ~]#

3 MySQL サポート付き PureFTPd のインストール

Fedora の PureFTPd パッケージは、MySQL、PostgreSQL、LDAP などのさまざまなバックエンドをサポートしています。したがって、通常の PureFTPd パッケージをインストールするだけで済みます:

yum install pure-ftpd

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

Share: X/Twitter LinkedIn

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

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