GNU/Linux >> Belajar Linux >  >> Cent OS

Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Pada CentOS 7.0

Tutorial ini ada untuk versi OS ini

  • CentOS 7.2
  • CentOS 7
  • CentOS 6.5
  • CentOS 6.4
  • CentOS 6.2
  • CentOS 5.3

Di halaman ini

  1. 1 Catatan Pendahuluan
  2. 2 Instal MySQL Dan phpMyAdmin
  3. 3 Instal PureFTPd Dengan Dukungan MySQL
  4. 4 Membuat Database MySQL Untuk PureFTPd
  5. 5 Konfigurasi PureFTPd
  6. 6 Isi Basis Data Dan Uji
  7. 7 Administrasi Basis Data
    1. Tabel ftpd:
  • 8 FTP Anonim
  • 9 Tautan
  • Dokumen ini menjelaskan cara menginstal server PureFTPd yang menggunakan pengguna virtual dari database MySQL alih-alih pengguna sistem nyata. Ini jauh lebih berkinerja dan memungkinkan untuk memiliki ribuan pengguna FTP di satu mesin. Selain itu, saya akan menunjukkan penggunaan kuota dan batas bandwidth upload/download dengan pengaturan ini. Kata sandi akan disimpan terenkripsi sebagai string MD5 dalam database.

    Untuk administrasi database MySQL Anda dapat menggunakan alat berbasis web seperti phpMyAdmin yang juga akan diinstal di howto ini. phpMyAdmin adalah antarmuka grafis yang nyaman yang berarti, Anda tidak perlu dipusingkan dengan baris perintah.

    Tutorial ini didasarkan pada CentOS 7.0. Anda seharusnya sudah menyiapkan sistem CentOS 7 minimal dasar.

    Howto ini dimaksudkan sebagai panduan praktis; itu tidak mencakup latar belakang teoretis. Mereka diperlakukan di banyak dokumen lain di web.

    Dokumen ini datang tanpa jaminan apapun! Saya ingin mengatakan bahwa ini bukan satu-satunya cara untuk mengatur sistem seperti itu. Ada banyak cara untuk mencapai tujuan ini tetapi ini adalah cara yang saya ambil.

    1 Catatan Awal

    Dalam tutorial ini, saya menggunakan hostname server1.example.com dengan alamat IP 192.168.0.100. Setelan ini mungkin berbeda untuk Anda, jadi Anda harus menggantinya jika perlu.

    2 Instal MySQL Dan phpMyAdmin

    Pertama, kami mengaktifkan repositori EPEL pada sistem CentOS kami karena beberapa paket yang akan kami instal selama tutorial ini tidak tersedia di repositori resmi CentOS 7.0:

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

    Kemudian kami mengaktifkan repositori EPEL pada sistem CentOS kami karena banyak paket yang akan kami instal selama tutorial ini tidak tersedia di repositori resmi CentOS 7:

    yum -y install epel-release
    yum -y install yum-priorities

    Edit /etc/yum.repos.d/epel.repo...

    nano /etc/yum.repos.d/epel.repo

    ... dan tambahkan baris priority=10 ke bagian [epel]:

    [epel]
    name=Extra Packages for Enterprise Linux 7 - $basearch
    #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
    mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
    failovermethod=priority
    enabled=1
    priority=10
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    [...]

    Kemudian kami memperbarui paket kami yang ada di sistem:

    yum update

    Sekarang kita dapat menginstal MySQL dan phpMyAdmin sebagai berikut:

    yum install mariadb mariadb-server phpmyadmin httpd php

    Sekarang kita mengkonfigurasi phpMyAdmin. Kami mengubah konfigurasi Apache sehingga phpMyAdmin mengizinkan koneksi tidak hanya dari localhost (dengan mengomentari semua yang ada di bait dan menambahkan baris Require all grant):

    vi /etc/httpd/conf.d/phpMyAdmin.conf

    sehingga filenya seperti ini:

    # 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
    
    <Directory /usr/share/phpMyAdmin/>
    #  <IfModule mod_authz_core.c>
    #     # Apache 2.4
    #     <RequireAny>
    #       Require ip 127.0.0.1
    #       Require ip ::1
    #     </RequireAny>
    #   </IfModule>
    #   <IfModule !mod_authz_core.c>
    #     # Apache 2.2
    #     Order Deny,Allow
    #    # Deny from All
    #     Allow from 127.0.0.1
         Options Indexes
         AllowOverride None
         Require all granted
    #     Allow from ::1
    #   </IfModule>
    </Directory>
    
    
    
    <Directory /usr/share/phpMyAdmin/setup/>
       <IfModule mod_authz_core.c>
         # Apache 2.4
         <RequireAny>
           Require ip 127.0.0.1
           Require ip ::1
         </RequireAny>
       </IfModule>
       <IfModule !mod_authz_core.c>
         # Apache 2.2
         Order Deny,Allow
         Deny from All
         Allow from 127.0.0.1
         Allow from ::1
       </IfModule>
    </Directory>
    
    # These directories do not require access over HTTP - taken from the original
    # phpMyAdmin upstream tarball
    #
    <Directory /usr/share/phpMyAdmin/libraries/>
        Order Deny,Allow
        Deny from All
        Allow from None
    </Directory>
    
    <Directory /usr/share/phpMyAdmin/setup/lib/>
        Order Deny,Allow
        Deny from All
        Allow from None
    </Directory>
    
    <Directory /usr/share/phpMyAdmin/setup/frames/>
        Order Deny,Allow
        Deny from All
        Allow from None
    </Directory>
    
    # This configuration prevents mod_security at phpMyAdmin directories from
    # filtering SQL etc.  This may break your mod_security implementation.
    #
    #<IfModule mod_security.c>
    #    <Directory /usr/share/phpMyAdmin/>
    #        SecRuleInheritance Off
    #    </Directory>
    #</IfModule>
    

    Kemudian kami membuat tautan startup sistem untuk MySQL dan Apache (sehingga keduanya mulai secara otomatis setiap kali sistem boot) dan memulai kedua layanan. Selain itu, kedua layanan harus diizinkan oleh firewall:

    firewall-cmd --permanent --zone=public --add-service=http
    firewall-cmd --permanent --zone=public --add-service=https
    firewall-cmd --reload
    systemctl enable mariadb.service
    systemctl start mariadb.service
    systemctl enable httpd.service
    systemctl start httpd.service

    Buat kata sandi untuk root pengguna MySQL (ganti kata sandi mariadb Anda dengan kata sandi yang ingin Anda gunakan):

    mysql_secure_installation

    [[email protected] ~]# mysql_secure_installation
    /usr/bin/mysql_secure_installation:line 379:find_mysql_client:command not found

    CATATAN:MENJALANKAN SEMUA BAGIAN SKRIP INI DIREKOMENDASIKAN UNTUK SEMUA MariaDB
          SERVER YANG DIGUNAKAN PRODUKSI! HARAP BACA SETIAP LANGKAH DENGAN SEKSAMA!

    Untuk masuk ke MariaDB untuk mengamankannya, kita memerlukan
    sandi saat ini untuk pengguna root. Jika Anda baru saja menginstal MariaDB, dan
    Anda belum menyetel kata sandi root, kata sandi akan kosong,
    jadi Anda cukup menekan enter di sini.<--ENTER
    Masukkan kata sandi saat ini untuk root (masukkan jika tidak ada):<--ENTER
    Oke, kata sandi berhasil digunakan, lanjutkan...

    Menyetel kata sandi root memastikan bahwa tidak ada yang bisa masuk ke MariaDB
    pengguna root tanpa otorisasi yang tepat.

    Tetapkan kata sandi root? [Y/n]<--ENTER
    Sandi baru:<--yourmariadbpassword
    Masukkan kembali sandi baru:<--yourmariadbpassword
    Sandi berhasil diperbarui!
    Memuat ulang tabel hak istimewa..
     ... Berhasil!


    Secara default, penginstalan MariaDB memiliki pengguna anonim, memungkinkan siapa saja
    untuk masuk ke MariaDB tanpa harus membuat akun pengguna untuk
    mereka. Ini dimaksudkan hanya untuk pengujian, dan untuk membuat penginstalan
    berjalan sedikit lebih lancar. Anda harus menghapusnya sebelum pindah ke
    lingkungan produksi.

    Hapus pengguna anonim? [Y/n]<--ENTER
     ... Berhasil!

    Biasanya, root hanya boleh terhubung dari 'localhost'. Ini
    memastikan bahwa seseorang tidak dapat menebak kata sandi root dari jaringan.

    Larang login root dari jarak jauh? [Y/n]<--ENTER
     ... Sukses!

    Secara default, MariaDB hadir dengan database bernama 'test' yang dapat
    akses siapa saja. Ini juga dimaksudkan hanya untuk pengujian, dan harus dihapus
    sebelum pindah ke lingkungan produksi.

    Hapus database pengujian dan akses ke sana? [Y/n]<--ENTER
     - Menghapus database pengujian...
     ... Berhasil!
     - Menghapus hak istimewa pada database pengujian...
     ... Berhasil!

    Memuat ulang tabel hak istimewa akan memastikan bahwa semua perubahan yang dibuat sejauh ini
    akan segera berlaku.

    Muat ulang tabel hak istimewa sekarang? [Y/n]<--ENTER
     ... Sukses!

    Bersihkan...

    Selesai! Jika Anda telah menyelesaikan semua langkah di atas, penginstalan MariaDB
    Anda seharusnya sudah aman.

    Terima kasih telah menggunakan MariaDB!
    [[email protected] ~]#

    3 Instal PureFTPd Dengan Dukungan MySQL

    Paket CentOS PureFTPd mendukung berbagai backend, seperti MySQL, PostgreSQL, LDAP, dll. Oleh karena itu, yang harus kita lakukan hanyalah menginstal paket PureFTPd normal:

    yum install pure-ftpd

    Kemudian kami membuat grup ftp (ftpgroup) dan pengguna (ftpuser) tempat semua pengguna virtual kami akan dipetakan. Ganti group- dan userid 2001 dengan nomor yang gratis di sistem Anda:

    groupadd -g 2001 ftpgroup
    useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

    Layanan ftp harus diizinkan oleh firewall-cmd sebagai berikut:

    firewall-cmd --permanent --zone=public --add-service=ftp
    firewall-cmd --reload

    4 Buat Database MySQL Untuk PureFTPd

    Sekarang kita membuat database bernama pureftpd dan pengguna MySQL bernama pureftpd yang nantinya akan digunakan daemon PureFTPd untuk terhubung ke database 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;

    Ganti string ftpdpass dengan kata sandi apa pun yang ingin Anda gunakan untuk pureftpd pengguna MySQL. Masih di shell MySQL, kita membuat tabel database yang kita butuhkan (ya, hanya ada satu tabel!):

    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;

    Seperti yang mungkin Anda perhatikan, dengan berhenti; perintah kami telah meninggalkan shell MySQL dan kembali ke shell Linux.

    BTW, (Saya berasumsi bahwa nama host sistem server ftp Anda adalah server1.example.com) Anda dapat mengakses phpMyAdmin di http://server1.example.com/phpMyAdmin/ (Anda juga dapat menggunakan alamat IP alih-alih server1 .example.com) di browser dan masuk sebagai pengguna pureftpd. Kemudian Anda dapat melihat database. Nanti Anda dapat menggunakan phpMyAdmin untuk mengelola server PureFTPd Anda.

    5 Konfigurasi PureFTPd

    Edit /etc/pure-ftpd/pure-ftpd.conf dan pastikan bahwa baris ChrootEveryone, MySQLConfigFile, dan CreateHomeDir diaktifkan dan terlihat seperti ini:

    vi /etc/pure-ftpd/pure-ftpd.conf
    [...]
    ChrootEveryone              yes
    [...]
    MySQLConfigFile               /etc/pure-ftpd/pureftpd-mysql.conf
    [...]
    CreateHomeDir               yes
    [...]

    Pengaturan ChrootEveryone akan membuat PureFTPd chroot setiap pengguna virtual di direktori home-nya sehingga dia tidak akan dapat menelusuri direktori dan file di luar direktori home-nya. Baris CreateHomeDir akan membuat PureFTPd membuat direktori home pengguna ketika pengguna login dan direktori home belum ada.

    Kemudian kita edit /etc/pure-ftpd/pureftpd-mysql.conf. Seharusnya terlihat seperti ini:

    cp /etc/pure-ftpd/pureftpd-mysql.conf /etc/pure-ftpd/pureftpd-mysql.conf_orig
    cat /dev/null > /etc/pure-ftpd/pureftpd-mysql.conf
    vi /etc/pure-ftpd/pureftpd-mysql.conf
    MYSQLSocket      /var/lib/mysql/mysql.sock
    #MYSQLServer     localhost
    #MYSQLPort       3306
    MYSQLUser       pureftpd
    MYSQLPassword   ftpdpass
    MYSQLDatabase   pureftpd
    #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
    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")

    Pastikan Anda mengganti string ftpdpass dengan kata sandi asli untuk pureftpd pengguna MySQL di baris MYSQLPassword! Harap dicatat bahwa kami menggunakan md5 sebagai metode MYSQLCrypt, yang berarti kami akan menyimpan kata sandi pengguna sebagai string MD5 dalam database yang jauh lebih aman daripada menggunakan kata sandi teks biasa!

    Sekarang kita membuat link startup sistem untuk PureFTPd dan memulainya:

    systemctl enable pure-ftpd.service
    systemctl enable pure-ftpd.service

    6 Mengisi Database Dan Menguji

    Untuk mengisi database Anda dapat menggunakan shell MySQL:

    mysql -u root -p
    USE pureftpd;

    Sekarang kita buat user exampleuser dengan status 1 (yang berarti akun ftp-nya aktif), password secret (yang akan disimpan dienkripsi menggunakan fungsi MD5 MySQL), UID dan GID 2001 (gunakan userid dan groupid dari user/ grup yang Anda buat di akhir langkah kedua!), direktori home /home/www.example.com, bandwidth unggah dan unduh 100 KB/dtk. (kilobyte per detik), dan kuota 50 MB:

    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;

    Sekarang buka program klien FTP Anda di stasiun kerja Anda (seperti WS_FTP atau SmartFTP jika Anda menggunakan sistem Windows atau gFTP di desktop Linux) dan coba sambungkan. Sebagai nama host, Anda menggunakan server1.example.com (atau alamat IP sistem), nama pengguna adalah pengguna contoh, dan kata sandinya rahasia.

    Jika Anda dapat terhubung - selamat! Jika tidak, ada yang tidak beres.

    Sekarang, jika Anda menjalankan

    ls -l /home

    Anda akan melihat bahwa direktori /home/www.example.com (direktori home pengguna example) telah dibuat secara otomatis, dan direktori tersebut dimiliki oleh ftpuser dan ftpgroup (pengguna/grup yang kita buat di akhir langkah kedua):

    [[email protected] ~]# ls -l /home/
    total 0
    drwx------. 2 administrator administrator 59 Sep 26 10:35 administrator
    drwxr-xr-x. 2 ftpuser       ftpgroup      22 Sep 26 12:07 www.example.com
    [[email protected] ~]#

    7 Administrasi Basis Data

    Bagi kebanyakan orang akan lebih mudah jika mereka memiliki front-end grafis ke MySQL; oleh karena itu Anda juga dapat menggunakan phpMyAdmin (dalam contoh ini di bawah http://server1.example.com/phpMyAdmin/) untuk mengelola database pureftpd.

    Setiap kali Anda ingin membuat pengguna baru, Anda harus membuat entri di tabel ftpd jadi saya akan menjelaskan kolom tabel ini di sini:

    tabel ftpd:

    • Pengguna:Nama pengguna PureFTPd virtual (mis. pengguna contoh).
    • status:0 atau 1. 0 berarti akun dinonaktifkan, pengguna tidak dapat login.
    • Kata Sandi:Kata sandi pengguna virtual. Pastikan Anda menggunakan fungsi MD5 MySQL untuk menyimpan kata sandi yang dienkripsi sebagai string MD5:
    • UID:Userid dari pengguna ftp yang Anda buat di akhir langkah kedua (mis. 2001).
    • GID:Groupid dari grup ftp yang Anda buat di akhir langkah kedua (mis. 2001).
    • Dir:Direktori beranda pengguna PureFTPd virtual (mis. /home/www.example.com). Jika tidak ada, maka akan dibuat saat pengguna baru login pertama kali melalui FTP. Pengguna virtual akan di-jail ke dalam direktori home ini, yaitu, dia tidak dapat mengakses direktori lain di luar direktori home-nya.
    • ULBandwidth:Unggah bandwidth pengguna virtual dalam KB/dtk. (kilobyte per detik). 0 berarti tidak terbatas.
    • DLBandwidth:Unduh bandwidth pengguna virtual dalam KB/detik. (kilobyte per detik). 0 berarti tidak terbatas.
    • komentar:Anda dapat memasukkan komentar apa pun di sini (misalnya untuk administrasi internal Anda) di sini. Biasanya Anda membiarkan kolom ini kosong.
    • ipaccess:Masukkan alamat IP di sini yang diizinkan untuk terhubung ke akun FTP ini. * berarti alamat IP apa pun diizinkan untuk terhubung.
    • QuotaSize:Ruang penyimpanan dalam MB (bukan KB, seperti pada ULBandwidth dan DLBandwidth!) yang diizinkan untuk digunakan oleh pengguna virtual di server FTP. 0 berarti tidak terbatas.
    • QuotaFiles:jumlah file yang boleh disimpan oleh pengguna virtual di server FTP. 0 berarti tidak terbatas.

    8 FTP Anonim

    Jika Anda ingin membuat akun ftp anonim (akun ftp yang dapat diakses semua orang tanpa kata sandi), Anda memerlukan pengguna dan grup bernama ftp. Keduanya telah dibuat secara otomatis saat Anda menginstal paket pure-ftpd, jadi Anda tidak perlu membuatnya secara manual. Namun, homedir ftp adalah /var/ftp secara default, tetapi saya ingin membuat direktori ftp anonim di /home/ftp (direktori ftp pengguna normal juga ada di /home, mis. /home/www.example. com). Tetapi tentu saja, Anda dapat menggunakan direktori /var/ftp untuk ftp anonim, jika Anda menginginkannya.

    Jika Anda ingin menggunakan /home/ftp, buka /etc/passwd dan ubah homedir pengguna ftp dari /var/ftp menjadi /home/ftp (jangan lakukan ini jika Anda ingin menggunakan /var/ftp):

    vi /etc/passwd
    [...]
    #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    ftp:x:14:50:FTP User:/home/ftp:/sbin/nologin
    [...]

    Kemudian pindahkan /var/ftp ke /home (jangan lakukan ini jika Anda ingin menggunakan /var/ftp):

    mv /var/ftp /home

    Kemudian kita membuat direktori /home/ftp/incoming yang memungkinkan pengguna anonim untuk mengunggah file. Kami akan memberikan izin direktori /home/ftp/incoming dari 311 sehingga pengguna dapat mengunggah, tetapi tidak melihat atau mengunduh file apa pun di direktori itu. Direktori /home/ftp akan memiliki izin 555 yang memungkinkan melihat dan mengunduh file:

    chown ftp:nobody /home/ftp
    cd /home/ftp
    mkdir incoming
    chown ftp:nobody incoming/
    chmod 311 incoming/
    cd ../
    chmod 555 ftp/

    (Jika Anda ingin menggunakan /var/ftp sebagai gantinya, ganti /home/ftp dengan /var/ftp pada perintah di atas.)

    Pengguna anonim akan dapat masuk, dan mereka akan diizinkan untuk mengunduh file dari /home/ftp, tetapi unggahan akan dibatasi ke /home/ftp/incoming (dan setelah file diunggah ke /home/ftp/incoming, itu tidak dapat dibaca atau diunduh dari sana; admin server harus memindahkannya ke /home/ftp terlebih dahulu agar tersedia untuk orang lain).

    Sekarang kita harus mengkonfigurasi PureFTPd untuk ftp anonim. Buka /etc/pure-ftpd/pure-ftpd.conf dan pastikan Anda memiliki pengaturan berikut di dalamnya:

    vi /etc/pure-ftpd/pure-ftpd.conf
    [...]
    NoAnonymous                 no
    [...]
    AntiWarez                   no
    [...]
    AnonymousBandwidth            8
    [...]
    AnonymousCantUpload         no
    [...]

    (Pengaturan AnonymousBandwidth adalah opsional - memungkinkan Anda membatasi bandwidth upload dan download untuk pengguna anonim. 8 berarti 8 KB/dtk. Gunakan nilai apa pun yang Anda suka, atau komentari baris jika Anda tidak ingin membatasi bandwidth.)

    Terakhir, kita restart PureFTPd:

    systemctl restart pure-ftpd.service

    • PureFTPd:http://www.pureftpd.org/
    • MySQL:http://www.mysql.com/
    • phpMyAdmin:http://www.phpmyadmin.net/
    • CentOS:http://centos.org/

    Cent OS
    1. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 14.04LTS

    2. Server FTP dengan PureFTPd, MariaDB dan Pengguna Virtual (termasuk Manajemen Kuota dan Bandwidth) di CentOS 7.2

    3. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 7.10 (Gutsy Gibbon)

    1. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.04 LTS

    2. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 8.10 (Intrepid Ibex)

    3. Hosting Virtual Dengan Proftpd Dan MySQL (Termasuk Kuota) Di Ubuntu 8.10

    1. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.04 (Jaunty Jackalope)

    2. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 9.10 (Karmic Koala)

    3. Hosting Virtual Dengan PureFTPd Dan MySQL (Termasuk Kuota Dan Manajemen Bandwidth) Di Ubuntu 10.10 (Maverick Meerkat)