서버 설정 · 10 min read · Nov 24, 2025
OpenSUSE 13.2에서 PureFTPd와 MySQL을 이용한 가상 호스팅 (쿼터 및 대역폭 관리 포함)
OpenSUSE 13.2에서 PureFTPd와 MySQL을 이용한 가상 호스팅 (쿼터 및 대역폭 관리 포함)
버전 1.0
저자: Srijan Kishore
howtoforge의 트위터 팔로우하기
마지막 수정일 2014년 11월 19일
이 문서는 실제 시스템 사용자 대신 MySQL 데이터베이스에서 가상 사용자를 사용하는 PureFTPd 서버를 설치하는 방법을 설명합니다. 이는 성능이 훨씬 더 뛰어나며 단일 머신에서 수천 개의 FTP 사용자를 가질 수 있게 해줍니다. 또한 이 설정으로 쿼타 및 업로드/다운로드 대역폭 제한의 사용을 보여드리겠습니다. 비밀번호는 데이터베이스에 MD5 문자열로 암호화되어 저장됩니다.
MySQL 데이터베이스 관리를 위해 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있으며, 이 방법서에서도 설치됩니다. phpMyAdmin은 명령줄을 다룰 필요가 없는 편리한 그래픽 인터페이스입니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 이러한 시스템을 설정하는 방법은 이것이 유일한 방법이 아님을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 제가 선택한 방법입니다.
1 사전 참고
이 튜토리얼에서는 호스트 이름 server1.example.com과 IP 주소 192.168.0.100을 사용합니다. 이러한 설정은 귀하의 경우 다를 수 있으므로 적절한 곳에서 교체해야 합니다. 이 튜토리얼에 설명된 대로 진행하기 전에 기본 Open Suse 설치가 필요합니다.
2 MariaDB, Apache2 및 phpMyAdmin 설치
MariaDB, Apache 및 phpMyAdmin에 필요한 PHP 모듈은 다음과 같이 설치할 수 있습니다:
zypper install mariadb mariadb-client apache2 apache2-mod_php5 php5-mysql php5-mcrypt php5-mbstring php5-gdserver1:~ # zypper install mariadb mariadb-client apache2 apache2-mod_php5 php5-mysql php5-mcrypt php5-mbstring php5-gd
저장소 데이터 로딩 중...
설치된 패키지 읽는 중...
패키지 종속성 해결 중...
문제: php5-mysql-5.6.1-4.1.x86_64는 php5 = 5.6.1을 요구하지만 이 요구 사항을 제공할 수 없습니다
설치할 수 없는 제공자: php5-5.6.1-1.1.x86_64[openSUSE-13.2-0]
php5-5.6.1-1.1.i586[repo-oss]
php5-5.6.1-1.1.x86_64[repo-oss]
php5-5.6.1-4.1.i586[repo-update]
php5-5.6.1-4.1.x86_64[repo-update]
해결책 1: 다음 작업이 수행됩니다:
php5-mysql-5.6.1-4.1.x86_64 설치하지 않음
php5-mcrypt-5.6.1-4.1.x86_64 설치하지 않음
php5-gd-5.6.1-4.1.x86_64 설치하지 않음
해결책 2: 다음 작업이 수행됩니다:
php5-mcrypt-5.6.1-4.1.x86_64 설치하지 않음
apache2-mod_php5-5.6.1-4.1.x86_64 설치하지 않음
php5-gd-5.6.1-4.1.x86_64 설치하지 않음
php5-mbstring-5.6.1-4.1.x86_64 설치하지 않음
php5-mysql-5.6.1-4.1.x86_64 설치하지 않음
해결책 3: 다음 작업이 수행됩니다:
php5-mcrypt-5.6.1-4.1.x86_64 설치하지 않음
apache2-mod_php5-5.6.1-4.1.x86_64 설치하지 않음
php5-gd-5.6.1-4.1.x86_64 설치하지 않음
php5-mbstring-5.6.1-4.1.x86_64 설치하지 않음
해결책 4: 다음 작업이 수행됩니다:
php5-mcrypt-5.6.1-4.1.x86_64 설치하지 않음
apache2-mod_php5-5.6.1-4.1.x86_64 설치하지 않음
php5-gd-5.6.1-4.1.x86_64 설치하지 않음
php5-mbstring-5.6.1-4.1.x86_64 설치하지 않음
해결책 5: 다음 작업이 수행됩니다:
php5-mcrypt-5.6.1-4.1.x86_64 설치하지 않음
apache2-mod_php5-5.6.1-4.1.x86_64 설치하지 않음
php5-gd-5.6.1-4.1.x86_64 설치하지 않음
php5-mbstring-5.6.1-4.1.x86_64 설치하지 않음
해결책 6: 다음 작업이 수행됩니다:
php5-mcrypt-5.6.1-4.1.x86_64 설치하지 않음
apache2-mod_php5-5.6.1-4.1.x86_64 설치하지 않음
php5-gd-5.6.1-4.1.x86_64 설치하지 않음
php5-mbstring-5.6.1-4.1.x86_64 설치하지 않음
해결책 7: patterns-openSUSE-minimal_base-conflicts-20141007-2.1.x86_64 제거
해결책 8: php5-mysql-5.6.1-4.1.x86_64의 일부 종속성을 무시하여 중단
위의 해결책 중 번호를 선택하거나 취소 [1/2/3/4/5/6/7/8/c] (c): <--7그런 다음 MySQL의 시스템 시작 링크를 생성하여 시스템이 부팅될 때마다 MySQL이 자동으로 시작되도록 하고 MySQL 서버를 시작합니다:
systemctl enable mysql.service
systemctl start mysql.serviceMySQL 설치를 보안하기 위해 다음을 실행합니다:
mysql_secure_installationserver1:~ # mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found
참고: 이 스크립트의 모든 부분을 실행하는 것이 모든 MariaDB
프로덕션 사용 서버에 권장됩니다! 각 단계를 주의 깊게 읽어주세요!
MariaDB에 로그인하여 보안을 설정하려면 현재
루트 사용자 비밀번호가 필요합니다. MariaDB를 방금 설치했으며
루트 비밀번호를 아직 설정하지 않았다면 비밀번호는 비어 있으므로
여기서 그냥 엔터를 누르세요.
현재 루트 비밀번호 입력 (없으면 엔터):
OK, 비밀번호를 성공적으로 사용했습니다. 계속 진행합니다...
루트 비밀번호를 설정하면 아무도 적절한 권한 없이 MariaDB
루트 사용자로 로그인할 수 없게 됩니다.
루트 비밀번호를 설정하시겠습니까? [Y/n] <--ENTER
새 비밀번호: <--mariadbpassword
새 비밀번호 다시 입력: <--mariadbpassword
비밀번호가 성공적으로 업데이트되었습니다!
권한 테이블을 다시 로드하는 중..
... 성공!
기본적으로 MariaDB 설치에는 익명 사용자가 있어 누구나
사용자 계정을 생성하지 않고도 MariaDB에 로그인할 수 있습니다. 이는
테스트용으로만 의도되며 설치를 좀 더 원활하게 진행하기 위한 것입니다.
프로덕션 환경으로 이동하기 전에 이들을 제거해야 합니다.
익명 사용자 제거? [Y/n] <--ENTER
... 성공!
일반적으로 루트는 'localhost'에서만 연결할 수 있어야 합니다.
이는 누군가가 네트워크에서 루트 비밀번호를 추측할 수 없도록 보장합니다.
원격에서 루트 로그인 금지? [Y/n] <--ENTER
... 성공!
기본적으로 MariaDB에는 누구나 접근할 수 있는 'test'라는 데이터베이스가 있습니다.
이는 테스트용으로만 의도되며 프로덕션 환경으로 이동하기 전에 제거해야 합니다.
테스트 데이터베이스 및 접근 제거? [Y/n] <--ENTER
- 테스트 데이터베이스 삭제 중...
... 성공!
- 테스트 데이터베이스에 대한 권한 제거 중...
... 성공!
권한 테이블을 다시 로드하면 지금까지 수행된 모든 변경 사항이 즉시 적용됩니다.
권한 테이블을 지금 다시 로드하시겠습니까? [Y/n] <--ENTER
... 성공!
정리 중...
모든 작업이 완료되었습니다! 위의 모든 단계를 완료했다면 MariaDB
설치가 이제 보안되었습니다.
MariaDB를 사용해 주셔서 감사합니다!
server1:~ #이제 MySQL 설정이 보안되었습니다.
그런 다음 Apache의 시스템 시작 링크를 생성하여 시스템이 부팅될 때마다 Apache가 자동으로 시작되도록 하고 시작합니다:
systemctl enable apache2.service
systemctl start apache2.servicephpMyAdmin은 다음과 같이 설치할 수 있습니다:
zypper install phpmyadminphpMyAdmin에 접근할 수 있도록 파일을 다음과 같이 수정합니다:
vi /etc/apache2/conf.d/phpMyAdmin.conf별칭을 다음과 같이 추가합니다:
Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin
Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin
[...]Apache를 시작하기 전에 링크를 따라가서 httpd.conf에서 변경해야 합니다.
vi /etc/apache2/httpd.conf
참고: 파일 값이 다르면 다음과 같이 값을 변경하세요:
이 줄을 주석 처리하고 이 줄을 추가하세요:
#
# Options None
# AllowOverride None
# Order deny,allow
# Deny from all
#
Options None
AllowOverride None
Require all denied
다음으로 phpmyadmin의 구성 파일을 다음과 같이 만듭니다:
cd /srv/www/htdocs/phpMyAdmin
cp config.sample.inc.php config.inc.php구성 파일에서 phpmyadmin이 pma 테이블이 포함된 “phpmyadmin”이라는 데이터베이스를 기대하고 있음을 알 수 있습니다:
[...]
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
[...] 따라서 하나를 생성합니다:
echo "create database phpmyadmin;" | mysql -u root -p 'mariadbpassword'그리고 phpmyadmin 문서에서 테이블을 로드합니다.
mysql -u root -p 'mariadbpassword' < /usr/share/doc/packages/phpMyAdmin/examples/create_tables.sql이제 Apache 서비스를 시작합니다:
systemctl enable apache2.service
systemctl restart apache2.service이제 http://192.168.0.100/phpmyadmin 또는 http://server1.example.com에서 phpmyadmin에 접근할 수 있습니다.

3 MySQL 지원을 갖춘 PureFTPd 설치
OpenSUSE의 PureFTPd 패키지는 MySQL, PostgreSQL, LDAP 등 다양한 백엔드를 지원합니다. 따라서 우리가 해야 할 일은 일반 PureFTPd 패키지를 설치하는 것입니다:
zypper 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;이제 브라우저에서 http://server1.example.com/phpMyAdmin/ (server1.example.com 대신 IP 주소를 사용할 수도 있습니다)에 접근하여 pureftpd 사용자로 로그인할 수 있습니다. 그런 다음 데이터베이스를 확인할 수 있습니다. 나중에 phpMyAdmin을 사용하여 PureFTPd 서버를 관리할 수 있습니다.
5 PureFTPd 구성
/etc/pure-ftpd/pure-ftpd.conf를 편집하고 ChrootEveryone, AnonymousOnly, MySQLConfigFile 및 CreateHomeDir 줄이 활성화되어 있고 다음과 같이 보이는지 확인합니다:
vi /etc/pure-ftpd/pure-ftpd.conf[...]
ChrootEveryone yes
[...]
AnonymousOnly no
[...]
MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
[...]
CreateHomeDir yes
[...] ChrootEveryone 설정은 PureFTPd가 모든 가상 사용자를 자신의 홈 디렉토리로 chroot하게 하여 홈 디렉토리 외부의 디렉토리 및 파일을 탐색할 수 없도록 합니다. CreateHomeDir 줄은 사용자가 로그인할 때 사용자의 홈 디렉토리가 존재하지 않으면 PureFTPd가 사용자의 홈 디렉토리를 생성하도록 합니다. AnonymousOnly는 no로 설정해야 합니다. 그렇지 않으면 익명 FTP 세션만 허용됩니다.
그런 다음 /etc/pure-ftpd/pureftpd-mysql.conf를 생성합니다. 다음과 같이 보이도록 합니다:
vi /etc/pure-ftpd/pureftpd-mysql.confMYSQLSocket /var/run/mysql/mysql.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5는 일반 텍스트보다 훨씬 권장됩니다
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")MYSQLPassword 줄에서 MySQL 사용자 pureftpd의 실제 비밀번호로 문자열 ftpdpass를 교체해야 합니다! MYSQLCrypt 방법으로 md5를 사용하므로 사용자의 비밀번호를 데이터베이스에 MD5 문자열로 저장하게 되며, 이는 일반 텍스트 비밀번호보다 훨씬 안전합니다!
이제 PureFTPd의 시스템 시작 링크를 생성하고 시작합니다:
systemctl enable pure-ftpd
systemctl start pure-ftpd6 데이터베이스 채우기 및 테스트
데이터베이스를 채우기 위해 MySQL 셸을 사용할 수 있습니다:
mysql -u root -pUSE pureftpd;이제 상태 1(즉, FTP 계정이 활성화됨), 비밀번호 secret(비밀번호는 MySQL의 MD5 함수로 암호화되어 저장됨), UID 및 GID 2001(2단계 끝에서 생성한 사용자/그룹의 사용자 ID 및 그룹 ID 사용), 홈 디렉토리 /home/www.example.com, 업로드 및 다운로드 대역폭 100 KB/sec(킬로바이트/초), 쿼타 50 MB인 사용자 exampleuser를 생성합니다:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');quit;이제 작업 스테이션에서 FTP 클라이언트 프로그램(Windows 시스템에서는 WS_FTP 또는 SmartFTP, Linux 데스크탑에서는 gFTP와 같은)을 열고 연결을 시도합니다. 호스트 이름으로 server1.example.com(또는 시스템의 IP 주소)을 사용하고, 사용자 이름은 exampleuser, 비밀번호는 secret입니다.
연결할 수 있다면 축하합니다! 그렇지 않다면 뭔가 잘못된 것입니다.
이제 다음을 실행하면
ls -l /home/server1:~ # ls -l /home/
total 0
drwxr-xr-x 1 administrator users 128 Nov 7 14:30 administrator
drwxr-xr-x 1 ftpuser ftpgroup 18 Nov 19 14:32 www.example.com
server1:~ #/home/www.example.com(예제 사용자의 홈 디렉토리) 디렉토리가 자동으로 생성되었고, ftpuser 및 ftpgroup(2단계 끝에서 생성한 사용자/그룹 소유) 소유임을 확인할 수 있습니다:
7 데이터베이스 관리
대부분의 사람들은 MySQL에 대한 그래픽 프론트 엔드가 있는 것이 더 쉽기 때문에 phpMyAdmin(이 예제에서는 http://server1.example.com/phpMyAdmin/ 또는 http://192.168.0.100/phpMyAdmin/)을 사용하여 pureftpd 데이터베이스를 관리할 수 있습니다.

새 사용자를 생성하려면 항상 ftpd 테이블에 항목을 생성해야 하므로 이 테이블의 열을 설명하겠습니다:
ftpd 테이블:
User: 가상 PureFTPd 사용자 이름(예: exampleuser).
status: 0 또는 1. 0은 계정이 비활성화되어 사용자가 로그인할 수 없음을 의미합니다.
Password: 가상 사용자의 비밀번호. MySQL의 MD5 함수를 사용하여 비밀번호를 MD5 문자열로 암호화하여 저장해야 합니다:

UID: 2단계 끝에서 생성한 FTP 사용자의 사용자 ID(예: 2001).
GID: 2단계 끝에서 생성한 FTP 그룹의 그룹 ID(예: 2001).
Dir: 가상 PureFTPd 사용자의 홈 디렉토리(예: /home/www.example.com). 존재하지 않으면 사용자가 처음 FTP를 통해 로그인할 때 생성됩니다. 가상 사용자는 이 홈 디렉토리에 감금되며, 즉, 홈 디렉토리 외부의 다른 디렉토리에 접근할 수 없습니다.
ULBandwidth: 가상 사용자의 업로드 대역폭(KB/sec, 킬로바이트/초). 0은 무제한을 의미합니다.
DLBandwidth: 가상 사용자의 다운로드 대역폭(KB/sec, 킬로바이트/초). 0은 무제한을 의미합니다.
comment: 여기에는 어떤 주석도 입력할 수 있습니다(예: 내부 관리용). 일반적으로 이 필드는 비워둡니다.
ipaccess: 이 FTP 계정에 연결할 수 있는 IP 주소를 입력합니다. *는 모든 IP 주소가 연결할 수 있음을 의미합니다.
QuotaSize: FTP 서버에서 가상 사용자가 사용할 수 있는 저장 공간(MB, ULBandwidth 및 DLBandwidth에서는 KB가 아님!). 0은 무제한을 의미합니다.
QuotaFiles: FTP 서버에 가상 사용자가 저장할 수 있는 파일 수. 0은 무제한을 의미합니다.
8 익명 FTP
비밀번호 없이 누구나 로그인할 수 있는 익명 FTP 계정을 생성하려면 ftp라는 사용자와 그룹이 필요합니다. 두 개는 pure-ftpd 패키지를 설치할 때 자동으로 생성되므로 수동으로 생성할 필요가 없습니다. 그러나 ftp의 홈 디렉토리는 기본적으로 /srv/ftp이지만, 익명 FTP 디렉토리를 /home/ftp에 생성하고 싶습니다(일반 사용자 FTP 디렉토리도 /home에 있습니다. 예: /home/www.example.com). 그러나 물론 /srv/ftp 디렉토리를 익명 FTP에 사용할 수도 있습니다.
/home/ftp를 사용하려면 /etc/passwd를 열고 ftp 사용자의 홈 디렉토리를 /srv/ftp에서 /home/ftp로 변경합니다(이를 사용하려면 /srv/ftp를 사용하지 마세요):
vi /etc/passwd[...]
#ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
ftp:x:40:49:FTP account:/home/ftp:/bin/bash
[...] 그런 다음 /srv/ftp를 /home으로 이동합니다(이를 사용하려면 /srv/ftp를 사용하지 마세요):
mv /srv/ftp /home그런 다음 /home/ftp/incoming 디렉토리를 생성하여 익명 사용자가 파일을 업로드할 수 있도록 합니다. /home/ftp/incoming 디렉토리에 311 권한을 부여하여 사용자가 업로드할 수 있지만 해당 디렉토리의 파일을 볼 수 없도록 합니다. /home/ftp 디렉토리는 555 권한을 부여하여 파일을 보고 다운로드할 수 있도록 합니다:
chown ftp:nobody /home/ftp
cd /home/ftp
mkdir incoming
chown ftp:nobody incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/(위의 명령에서 /srv/ftp 대신 /home/ftp를 사용하려면 /home/ftp를 /srv/ftp로 바꾸세요.)
익명 사용자는 로그인할 수 있으며 /home/ftp에서 파일을 다운로드할 수 있지만 업로드는 /home/ftp/incoming으로 제한됩니다(그리고 /home/ftp/incoming에 파일이 업로드되면 해당 파일은 읽거나 다운로드할 수 없으며, 서버 관리자가 이를 /home/ftp로 이동해야 다른 사용자가 사용할 수 있습니다).
이제 익명 FTP를 위해 PureFTPd를 구성해야 합니다. /etc/pure-ftpd/pure-ftpd.conf를 열고 다음 설정이 포함되어 있는지 확인합니다:
vi /etc/pure-ftpd/pure-ftpd.conf[...]
NoAnonymous no
[...]
AnonymousBandwidth 8
[...]
AnonymousCantUpload no
[...] (AnonymousBandwidth 설정은 선택 사항입니다. 익명 사용자의 업로드 및 다운로드 대역폭을 제한할 수 있습니다. 8은 8 KB/sec를 의미합니다. 원하는 값을 사용하거나 대역폭을 제한하고 싶지 않으면 이 줄을 주석 처리하세요.)
마지막으로 PureFTPd를 재시작합니다:
systemctl restart pure-ftpd.service9 링크
- OpenSUSE: http://www.opensuse.org/
- PureFTPd: http://www.pureftpd.org/
- phpMyAdmin: http://www.phpmyadmin.net/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.