サーバー管理 · 3 min read · Nov 26, 2025
Fedora 20 における PureFTPd と MySQL を使用した仮想ホスティング (クォータと帯域幅管理を含む)
Fedora 20 における PureFTPd と MySQL を使用した仮想ホスティング (クォータと帯域幅管理を含む)
Version 1.0
Author: Falko Timme, updated by Srijan Kishore
この文書では、実際のシステムユーザーの代わりに MySQL データベースからの仮想ユーザーを使用する PureFTPd サーバーのインストール方法を説明します。これははるかにパフォーマンスが高く、単一のマシンで数千の FTP ユーザーを持つことができます。さらに、このセットアップでのクォータとアップロード/ダウンロード帯域幅制限の使用方法も示します。パスワードはデータベースに MD5 文字列として暗号化されて保存されます。
MySQL データベースの管理には、phpMyAdmin のようなウェブベースのツールを使用できます。このハウツーでも phpMyAdmin をインストールします。phpMyAdmin は快適なグラフィカルインターフェースであり、コマンドラインをいじる必要はありません。
このチュートリアルは Fedora 20 に基づいています。基本的な Fedora 20 システムをすでにセットアップしている必要があります。
このハウツーは実用的なガイドとして意図されており、理論的な背景はカバーしていません。それらはウェブ上の他の多くの文書で扱われています。
この文書にはいかなる種類の保証もありません!これはこのようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はいくつもありますが、これが私の取る方法です。これがあなたにとって機能することを保証するものではありません!
1 予備ノート
このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換える必要があります。
2 MySQL と phpMyAdmin のインストール
これらはすべて 1 つのコマンドでインストールできます:
yum install mysql mysql-server phpMyAdmin httpd次に、phpMyAdmin を設定します。phpMyAdmin が localhost からの接続だけでなく、他の接続も許可するように Apache 設定を変更します(
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 |
次に、MySQL と Apache のシステム起動リンクを作成します(システムが起動するたびに自動的に両方が開始されるように)し、両方のサービスを開始します:
systemctl enable mysqld.service
systemctl start mysqld.service次のようなエラーが表示された場合:
[root@server1 ~]# systemctl enable mysqld.service
Failed to issue method call: No such file or directory
[root@server1 ~]#この理由によるバグが発生した場合は、次のように進めます:
[root@server1 ~]# ln -s '/usr/lib/systemd/system/mysqld.service' '/etc/systemd/system/multi-user.target.wants/mysqld.service'
[root@server1 ~]# ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'systemctl start mysqld.service
systemctl start mariadb.servicesystemctl enable httpd.service
systemctl start httpd.serviceMySQL ユーザー 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!
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 ftpuser4 PureFTPd 用の MySQL データベースの作成
次に、pureftpd という名前のデータベースと、PureFTPd デーモンが後で pureftpd データベースに接続するために使用する pureftpd という名前の MySQL ユーザーを作成します:
mysql -u root -pCREATE 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 サーバーを管理できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。