서버 관리 · 2 min read · Dec 16, 2025

PureFTPd와 MySQL을 이용한 가상 호스팅 (쿼터 및 대역폭 관리 포함)

이 문서는 실제 시스템 사용자 대신 MySQL 데이터베이스에서 가상 사용자를 사용하는 PureFTPd 서버를 설치하는 방법을 설명합니다. 이는 성능이 훨씬 더 뛰어나며 단일 머신에서 수천 개의 FTP 사용자를 가질 수 있습니다. 또한 이 설정에서 쿼터업로드/다운로드 대역폭 제한의 사용을 보여드리겠습니다. 비밀번호는 데이터베이스에 MD5 문자열로 암호화되어 저장됩니다.

MySQL 데이터베이스 관리를 위해 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있으며, 이 방법에서도 설치됩니다. phpMyAdmin은 명령줄을 다룰 필요가 없는 편리한 그래픽 인터페이스입니다.

이 튜토리얼은 Debian Sarge(Debian 3.1)를 기반으로 합니다. 여기에서 설명한 대로 기본 Debian 시스템을 이미 설정했어야 합니다: https://www.howtoforge.com/perfect_setup_debian_sargehttps://www.howtoforge.com/perfect_setup_debian_sarge_p2. 수정 없이 Ubuntu, Knoppix 등과 같은 다른 Debian 기반 배포판에도 적용될 수 있습니다. SuSE, Fedora, Mandriva 등과 같은 다른 배포판에서는 PureFTPd 설치만 다르며, PureFTPd의 구성은 이러한 배포판에도 적용될 수 있습니다.

이 방법은 실용적인 가이드를 위한 것이며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.

이 문서는 어떤 종류의 보증 없이 제공됩니다! 이러한 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 제가 선택한 방법입니다. 이것이 귀하에게 작동할 것이라는 보증을 제공하지 않습니다!

1 MySQL 및 phpMyAdmin 설치

이 모든 것은 하나의 명령으로 설치할 수 있습니다:

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

몇 가지 질문을 받게 됩니다:

suExec를 활성화하시겠습니까? <– 예
mysql-server 구성 (설치 힌트) <– 확인
자동으로 재구성할 웹 서버는 무엇입니까? <– 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 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 데이터베이스에 연결하는 데 사용할 MySQL 사용자 pureftpd를 생성합니다:

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 셸에서 필요한 데이터베이스 테이블을 생성합니다(예, 테이블은 하나만 있습니다!):

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/를 통해 phpMyAdmin에 접근할 수 있으며(server1.example.com 대신 IP 주소를 사용할 수도 있습니다) pureftpd로 로그인할 수 있습니다. 그런 다음 데이터베이스를 살펴볼 수 있습니다. 나중에 phpMyAdmin을 사용하여 PureFTPd 서버를 관리할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.