서버 설정 · 5 min read · Jan 31, 2026
CentOS 6.4에서 PureFTPd 및 MySQL을 이용한 가상 호스팅 (쿼터 및 대역폭 관리 포함)
CentOS 6.4에서 PureFTPd 및 MySQL을 이용한 가상 호스팅 (쿼터 및 대역폭 관리 포함)
버전 1.0
저자: Falko Timme
트위터에서 나를 팔로우하세요
이 문서는 실제 시스템 사용자 대신 MySQL 데이터베이스의 가상 사용자를 사용하는 PureFTPd 서버를 설치하는 방법을 설명합니다. 이는 훨씬 더 성능이 뛰어나며 단일 머신에서 수천 개의 FTP 사용자를 가질 수 있습니다. 또한 이 설정을 통해 쿼타 및 업로드/다운로드 대역폭 제한의 사용을 보여드리겠습니다. 비밀번호는 데이터베이스에 MD5 문자열로 암호화되어 저장됩니다.
MySQL 데이터베이스 관리를 위해 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있으며, 이 방법서에서 설치할 것입니다. phpMyAdmin은 명령줄을 다루지 않아도 되는 편리한 그래픽 인터페이스입니다.
이 튜토리얼은 CentOS 6.4를 기반으로 합니다. 이 튜토리얼의 처음 여섯 장에서 설명한 대로 기본 CentOS 6.4 시스템을 이미 설정했어야 합니다: 완벽한 서버 - CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)
이 방법서는 실용적인 가이드를 목적으로 하며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이러한 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보장은 하지 않습니다!
1 사전 참고
이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.0.100을 사용합니다. 이러한 설정은 여러분의 환경에 따라 다를 수 있으므로 적절한 곳에서 교체해야 합니다.
2 MySQL 및 phpMyAdmin 설치
먼저, 이 튜토리얼에서 설치할 일부 패키지가 공식 CentOS 6.4 저장소에 없으므로 CentOS 시스템에서 EPEL 저장소를 활성화합니다:
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpmyum install yum-priorities/etc/yum.repos.d/epel.repo 파일을 편집합니다…
vi /etc/yum.repos.d/epel.repo… 그리고 [epel] 섹션에 priority=10 줄을 추가합니다:
| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |
이제 다음과 같이 MySQL 및 phpMyAdmin을 설치할 수 있습니다:
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 # |
그런 다음 MySQL 및 Apache의 시스템 시작 링크를 생성하여 시스템 부팅 시 두 서비스가 자동으로 시작되도록 하고 두 서비스를 시작합니다:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startchkconfig --levels 235 httpd on
/etc/init.d/httpd startMySQL 사용자 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를 누르세요.
현재 root의 비밀번호를 입력하세요 (없으면 Enter): <– ENTER
OK, 비밀번호가 성공적으로 사용되었습니다. 계속 진행합니다…
root 비밀번호를 설정하면 아무도 적절한 권한 없이 MySQL root 사용자로 로그인할 수 없게 됩니다.
root 비밀번호를 설정하시겠습니까? [Y/n] <– ENTER
새 비밀번호: <– yourrootsqlpassword
새 비밀번호를 다시 입력하세요: <– yourrootsqlpassword
비밀번호가 성공적으로 업데이트되었습니다!
권한 테이블을 다시 로드하는 중..
… 성공!
기본적으로 MySQL 설치에는 익명 사용자가 있어 누구나 사용자 계정을 생성하지 않고도 MySQL에 로그인할 수 있습니다.
이는 테스트 용도로만 의도되며 설치를 조금 더 원활하게 진행하기 위한 것입니다.
생산 환경으로 이동하기 전에 이들을 제거해야 합니다.
익명 사용자를 제거하시겠습니까? [Y/n] <– ENTER
… 성공!
일반적으로 root는 ‘localhost’에서만 연결할 수 있어야 합니다.
이는 누군가가 네트워크에서 root 비밀번호를 추측할 수 없도록 보장합니다.
원격에서 root 로그인을 금지하시겠습니까? [Y/n] <– ENTER
… 성공!
기본적으로 MySQL에는 누구나 접근할 수 있는 ‘test’라는 데이터베이스가 있습니다.
이는 테스트 용도로만 의도되며 생산 환경으로 이동하기 전에 제거해야 합니다.
test 데이터베이스 및 접근 권한을 제거하시겠습니까? [Y/n] <– ENTER
- test 데이터베이스 삭제 중…
… 성공! - test 데이터베이스에 대한 권한 제거 중…
… 성공!
권한 테이블을 다시 로드하면 지금까지 수행한 모든 변경 사항이 즉시 적용됩니다.
권한 테이블을 지금 다시 로드하시겠습니까? [Y/n] <– ENTER
… 성공!
정리 중…
모든 작업이 완료되었습니다!
위의 모든 단계를 완료했다면 MySQL 설치가 이제 안전해야 합니다.
MySQL을 사용해 주셔서 감사합니다!
[root@server1 ~]#
3 MySQL 지원이 포함된 PureFTPd 설치
CentOS 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 데이터베이스에 연결하는 데 사용할 MySQL 사용자 이름 pureftpd를 생성합니다:
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 셸에서 필요한 데이터베이스 테이블을 생성합니다(예, 테이블은 하나뿐입니다!):
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 셸을 종료하고 리눅스 셸로 돌아왔습니다.
그런데 (여러분의 FTP 서버 시스템의 호스트 이름이 server1.example.com이라고 가정합니다) 브라우저에서 http://server1.example.com/phpMyAdmin/ (server1.example.com 대신 IP 주소를 사용할 수도 있습니다)로 phpMyAdmin에 접근하고 사용자 pureftpd로 로그인할 수 있습니다. 그런 다음 데이터베이스를 확인할 수 있습니다. 나중에 phpMyAdmin을 사용하여 PureFTPd 서버를 관리할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.