Cài đặt ISPConfig 3 ProFTPd cho Debian

  1. Tác giả: LTTK CTV26
    Đánh giá: ✪ ✪ ✪ ✪ ✪

    Đối với người dùng Linux, ISPConfig 3 là giải pháp hàng đầu trong lĩnh vực quản lý hosting trên nền mã nguồn mở. Nó cho phép quản lý nhiều server thông qua 1 hệ thống control cpanel. Nếu bạn đang sử dụng máy chủ VPS với OpenVZ, thật không may là bạn không thể chạy Pureftpd được đi kèm mặc định với ISPConfig. Bài viết sau sẽ hướng dẫn các bạn sử dụng ProFTPd để thay thế Pureftpd một cách dễ dàng.
    Chuẩn bị cài đặt


    [​IMG]
    ProFTPd
    là một FTP server khá mạnh và đơn giản trong cài đặt cũng như cấu hình, được rất nhiều máy chủ dùng. Tuy nhiên, hướng dẫn này không bao gồm quota bởi nó không được hỗ trợ trong VPS (nếu không muốn chỉnh sửaftp_user_edit.php trong ISPConfig 3).
    Ở minh họa này chúng tôi sử dụng Debian 5.0 Lenny nhưng cũng có thể áp dụng cho bản 6.0. Một số Distribution khác có thể cần sửa đổi một chút.
    Lưu ý: quá trình này làm việc tốt trên máy chủ sạch và cài đặt ISPConfig 3. Nếu sử dụng máy chủ hiện hành sẽ cần vào và editting/saving mọi user được tạo ra, do đó có thể gây một số sự cố.
    Cài đặt

    Đầu tiên bạn chạy độc lập lệnh sau:
    Mã (Text):
    1. apt-get remove pure-ftpd-common pure-ftpd-mysql
    2. apt-get install proftpd proftpd-mod-mysql
    Tạo Group & User
    Mã (Text):
    1. groupadd -g 2001 ftpgroup
    2. useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
    3.  
    4. Cấu hình cơ sở dữ liệu
    Chạy lệnh sau:
    Mã (Text):
    1. mysql -u root -p
    2. Use dbispconfig
    Sau đó chạy các truy vấn dưới đây:
    Mã (Text):
    1. ALTER TABLE `ftp_user` ADD `shell` VARCHAR( 18 ) NOT NULL DEFAULT
    2. '/sbin/nologin',
    3. ADD `count` INT( 11 ) NOT NULL DEFAULT '0',
    4. ADD `accessed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    5. ADD `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
    6. CREATE TABLE ftp_group (
    7. groupname varchar(16) NOT NULL default '',
    8. gid smallint(6) NOT NULL default '5500',
    9. members varchar(16) NOT NULL default '',
    10. KEY groupname (groupname)
    11. ) TYPE=MyISAM COMMENT='ProFTP group table';
    12. INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
    13. ('ftpgroup', 2001, 'ftpuser');
    Cấu hình ProFTPd

    Trước tiên chúng ta sẽ chỉnh sửa lại tập tin /usr/local/ispconfig/interface/lib/config.inc.php:
    nano /usr/local/ispconfig/interface/lib/config.inc.php
    Tìm đến biến db_password và lưu ý mật khẩu cho sau này.
    Chỉnh sửa tập tin
    Mã (Text):
    1. /etc/proftpd/proftpd.conf:
    2. nano /etc/proftpd/proftpd.conf
    Tìm đến dòng:
    Mã (Text):
    1. #Include /etc/proftpd/sql.conf
    Bỏ chú thích cho nó để trở thành:
    Mã (Text):
    1. Include /etc/proftpd/sql.conf
    Chỉnh sửa file /etc/proftpd/sql.conf:
    Mã (Text):
    1. nano /etc/proftpd/sql.conf
    Xóa bỏ toàn bộ nội dung trong đó và thay thế bằng:
    Mã (Text):
    1. ## Proftpd sample configuration for SQL-based authentication.## (This is not to be used if you prefer a PAM-based SQL authentication)#<IfModule mod_sql.c>DefaultRoot~SQLBackend mysql # The passwords in MySQL are encrypted using CRYPTSQLAuthTypes  PlaintextCryptSQLAuthenticate  users groups # used to connect to the database# databasename@host database_user user_passwordSQLConnectInfo  dbispconfig@localhost ispconfig _insertpasswordhere_ # Here we tell ProFTPd the names of the database columns in the "usertable"# we want it to interact with. Match the names with those in the dbSQLUserInfo  ftp_user username password uid gid dir shell # Here we tell ProFTPd the names of the database columns in the "grouptable"# we want it to interact with. Again the names match with those in the dbSQLGroupInfo  ftp_group groupname gid members # set min UID and GID - otherwise these are 999 eachSQLMinID  500# create a user's home directory on demand if it doesn't existCreateHome off # Update count every time user logs inSQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser # Update modified everytime user uploads or deletes a fileSQLLog  STOR,DELE modified SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser RootLogin off RequireValidShell off </IfModule>
    Hãy chắc chắn rằng bạn đã thay đổi _insertpasswordhere_ bằng mật khẩu lấy từ ISPConfig.
    Nếu cơ sở dữ liệu MySQL trên một máy chủ khác, thay đổi localhost để đại diện cho máy chủ MySQL của bạn.
    Chỉnh sửa file
    Mã (Text):
    1. /etc/proftpd/modules.conf:
    2. nano /etc/proftpd/modules.conf
    Tìm đến dòng:
    Mã (Text):
    1. #LoadModule mod_sql.c
    và bỏ chú thích cho nó thành:
    Mã (Text):
    1. LoadModule mod_sql.c
    Đổi dòng:
    Mã (Text):
    1. #LoadModule mod_sql_mysql.c
    Thành:
    Mã (Text):
    1. LoadModule mod_sql_mysql.c
    Cuối cùng chạy:
    /etc/init.d/proftpd restart
    Thay đổi ISPConfig 3

    Bây giờ chúng ta cần thay đổi một số tập tin trong ispconfig. Mặc dù đây không phải ý kiến tốt nhất bởi khi nâng cấp lên phiên bản mới thì các thay đổi này sẽ biến mất. Tuy nhiên trong trường hợp này sẽ giúp ProFTPD hoạt động tốt hơn.
    Chỉnh sửa file /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php:
    nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
    Tìm dòng:
    Mã (Text):
    1. $uid = $web["system_user"];
    2. $gid = $web["system_group"];
    và thay thế bằng:
    Mã (Text):
    1. $userinfo = posix_getpwnam($web["system_user"]);
    2. $uid = $userinfo['uid'];
    3. $gid = $userinfo['gid'];
    Vậy là xong! Lưu ý rằng nếu bạn đang đăng nhập vào giao diện điều khiển web của ISPConfig thì phải đăng xuất trước khi thay đổi các đăng ký trên máy tính của mình.