서버 관리 · 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_sarge 및 https://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 서버를 관리할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.