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

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

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

バージョン 1.0
著者: Falko Timme
Twitterでフォローしてください

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

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

このチュートリアルはFedora 18に基づいています。基本的なFedora 18システムをすでにセットアップしている必要があります。

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

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

1 前提条件

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

2 MySQLとphpMyAdminのインストール

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

yum install mysql mysql-server phpMyAdmin httpd

次に、phpMyAdminを設定します。phpMyAdminがlocalhostからの接続だけでなく、他の接続も許可するようにApacheの設定を変更します(のスタンザ内のすべてをコメントアウトし、Require all grantedという行を追加します):

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 # # # Apache 2.4 # # Require ip 127.0.0.1 # Require ip ::1 # # # # # Apache 2.2 # Order Deny,Allow # Deny from All # Allow from 127.0.0.1 # Allow from ::1 # Require all granted # Apache 2.4 Require ip 127.0.0.1 Require ip ::1 # Apache 2.2 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 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のシステム起動リンクを作成します(これにより、システムが起動するたびに両方が自動的に開始されます)および両方のサービスを開始します:

systemctl enable mysqld.service  
systemctl start mysqld.service
systemctl enable httpd.service   
systemctl start httpd.service

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を押してください。

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!

クリーンアップ中…

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

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

[root@server1 ~]#

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

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

yum install pure-ftpd

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

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)  
) ENGINE=MyISAM;
quit;

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

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

Share: X/Twitter LinkedIn

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

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