Froxlor是知名的主机控制面板。它完全开源,因此所有人都可以免费使用。同时,它拥有不弱于cPanel, DirectAdmin等收费面板的功能、安全性和实用性(包括子账户、邮箱、FTP、分销、工单系统等功能),以及美观大气的使用界面。其唯一缺点,在我看来是安装过程繁琐冗长。本次我将详细介绍Debian 8操作系统下安装Froxlor和配置的方法。本文作者为香菇肥牛http://qing.su 未经允许,不得转载。
值得一提的是,国内不少知名博主(比如赵容、老左等)均写过Froxlor的安装过程,然而如果大家按照那上面的步骤去操作,则安装好的Froxlor完全无法使用(表现为Cron Job List一直堆积, FTP无法连接等),其根本原因是他们根本就没有自己操作和使用过这个面板,因此都没有提及安装完成后的配置步骤(而那才是主要部分)。本次我给出的这个Froxlor安装和配置过程非常详细。希望对大家有所帮助。
安装的基本条件: 1, 新装的Debian 8 (32/64 bit) VPS一台; 2, SSH root账户; 3, 较为熟练的vi操作; 4, 请将你的域名example.com A记录解析到你的VPS的IP, *.example.com A记录解析到你的VPS的IP; 5, 确保VPS的主机名是example.com (请用hostname命令查看)。
下面,我们就开始安装Froxlor. 安装Froxlor之前,我们要安装好必要的软件。下面以LAMP为例搭建Froxlor基础环境,若你倾向于用EngineX, 则后续的配置部分请自行更改。如果你的包管理器中默认将MySQL替换成了MariaDB, 这没有关系,后续部分无需任何更改。
Froxlor的安装
在Debian系统中我们可以通过包管理器安装Froxlor. 依次执行:
touch /etc/apt/sources.list.d/froxlor.list
echo ‘deb http://debian.froxlor.org jessie main’ > /etc/apt/sources.list.d/froxlor.list
apt-key adv –keyserver pool.sks-keyservers.net –recv-key FD88018B6F2D5390D051343FF6B4A8704F9E9BBC
apt-get update && apt-get upgrade
apt-get install froxlor
安装过程中会出现两个选项框,第一次是配置Courier, 我们选择YES. 第二次是配置ProFTPD, 这里我们需要选择Standalone.
如果没有报错,那么Froxlor文件夹已经安装到主机上了,其位置是/var/www/froxlor 然而这个地址是不能直接通过浏览器访问的(这很奇怪,Froxlor经过这么多的版本了难道连apache的默认网页文件夹都不知道在哪儿吗…),我们需要将其复制到可以访问的目录下:
mv /var/www/froxlor /var/www/html/froxlor
然后我们在浏览器中打开http://your_IP/froxlor则可以看到froxlor安装界面,点击下一步会出现froxlor需要的组件清单,如果有哪一项缺失,请自行安装。比如如果缺少php-curl组件,则在SSH中执行apt-get install php5-curl安装该组件。(安装完毕后需重启Apache)
将缺少的包全部补充完毕后,点击continue, 会出现连接数据库的界面。这里,我们需要新建一个数据库用来存放Froxlor数据。回到SSH, 执行:
mysql -u root -p
输入你的MySQL root账户密码后,进入MySQL命令界面。我们新建数据库:
CREATE DATABASE froxlor;
GRANT ALL ON froxlor.* TO ‘froxlor’ IDENTIFIED BY ‘MYSQL_PASSWORD’;
quit;
然后我们将froxlor用户和密码以及root账户和密码填进froxlor安装界面的表单中,填好FQDN, IP等信息,设定管理员用户名和密码,最后点击continue。这样,Froxlor成功地安装在了主机上。
Froxlor的配置
按上述步骤安装好Froxlor后并不能马上使用。如果此时你在后台新建账户、发送邮件、管理FTP等操作时虽然会提示成功,但实际上没有发生任何变化。我们需要配置系统环境使其能够配合Froxlor. 考虑到国内大多数朋友不会用到邮件服务器,因此我们在这里只介绍HTTP, FTP和Cron这三个必须的配置。如果您需要用Froxlor管理您的邮件服务器,请后台登录后在左侧仪表盘中找到Configuration, 选择对应的邮件服务器,按提示进行配置。
首先,配置HTTP服务器。打开SSH, 依次执行:
mkdir -p /etc/apache2/sites-enabled/
chown root:0 /etc/apache2/sites-enabled/
chmod 0600 /etc/apache2/sites-enabled/
mkdir -p /etc/apache2/sites-enabled/
chown root:0 /etc/apache2/sites-enabled/
chmod 0600 /etc/apache2/sites-enabled/
mkdir -p /var/customers/webs/
mkdir -p /var/customers/logs/
mkdir -p /var/customers/tmp
chmod 1777 /var/customers/tmp
a2dismod userdir
/etc/init.d/apache2 restart
接着我们配置FTP服务器。执行:
apt-get install proftpd-basic proftpd-mod-mysql
编辑文件/etc/proftpd/proftpd.conf, 将其内容替换为下面的内容:
Include /etc/proftpd/modules.conf
UseIPv6 off
IdentLookups off
ServerName “FTP Server”
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions “-l”
DenyFilter \*.*/
Port 21
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
AllowOverwrite on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log
QuotaEngine on
Ratios off
DelayEngine on
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
AdminControlsEngine off
Include /etc/proftpd/sql.conf
Include /etc/proftpd/conf.d/
执行:
chmod 0600 “/etc/proftpd/proftpd.conf”
chown root:0 “/etc/proftpd/proftpd.conf”
编辑文件:/etc/proftpd/modules.conf, 将其内容替换为以下内容:
ModulePath /usr/lib/proftpd
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_radius.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
LoadModule mod_quotatab_sql.c
LoadModule mod_quotatab_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
LoadModule mod_load.c
LoadModule mod_ban.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_file.c
LoadModule mod_dynmasq.c
LoadModule mod_exec.c
LoadModule mod_shaper.c
LoadModule mod_ratio.c
LoadModule mod_site_misc.c
LoadModule mod_sftp.c
LoadModule mod_sftp_pam.c
LoadModule mod_facl.c
LoadModule mod_unique_id.c
LoadModule mod_copy.c
LoadModule mod_deflate.c
LoadModule mod_ifversion.c
LoadModule mod_tls_memcache.c
LoadModule mod_ifsession.c
执行:
chmod 0644 “/etc/proftpd/modules.conf”
chown root:0 “/etc/proftpd/modules.conf”
编辑文件:/etc/proftpd/sql.conf, 将内容替换为下面的内容:
DefaultRoot ~
RequireValidShell off
AuthOrder mod_sql.c
SQLBackend mysql
SQLEngine on
SQLAuthenticate on
SQLAuthTypes Crypt
SQLAuthenticate users* groups*
SQLConnectInfo [email protected] froxlor MYSQL_PASSWORD
SQLUserInfo ftp_users username password uid gid homedir shell
SQLGroupInfo ftp_groups groupname gid members
SQLUserWhereClause “login_enabled = ‘y'”
SQLLog PASS login
SQLNamedQuery login UPDATE “last_login=now(), login_count=login_count+1 WHERE username=’%u'” ftp_users
SQLLog RETR download
SQLNamedQuery download UPDATE “down_count=down_count+1, down_bytes=down_bytes+%b WHERE username=’%u'” ftp_users
SQLLog STOR upload
SQLNamedQuery upload UPDATE “up_count=up_count+1, up_bytes=up_bytes+%b WHERE username=’%u'” ftp_users
QuotaEngine on
QuotaShowQuotas on
QuotaDisplayUnits Mb
QuotaLock /var/lock/ftpd.quotatab.lock
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
SQLNamedQuery get-quota-limit SELECT “ftp_users.username AS name, ftp_quotalimits.quota_type, ftp_quotalimits.per_session, ftp_quotalimits.limit_type, panel_customers.diskspace*1024 AS bytes_in_avail, ftp_quotalimits.bytes_out_avail, ftp_quotalimits.bytes_xfer_avail, ftp_quotalimits.files_in_avail, ftp_quotalimits.files_out_avail, ftp_quotalimits.files_xfer_avail FROM ftp_users, ftp_quotalimits, panel_customers WHERE ftp_users.username = ‘%{0}’ AND panel_customers.loginname = SUBSTRING_INDEX(‘%{0}’, ‘ftp’, 1) AND quota_type =’%{1}'”
SQLNamedQuery get-quota-tally SELECT “name, quota_type, bytes_in_used,bytes_out_used, bytes_xfer_used, files_in_used, files_out_used,files_xfer_used FROM ftp_quotatallies WHERE name = ‘%{0}’ AND quota_type = ‘%{1}'”
SQLNamedQuery update-quota-tally UPDATE “bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used= files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name= ‘%{6}’ AND quota_type = ‘%{7}'” ftp_quotatallies
SQLNamedQuery insert-quota-tally INSERT “%{0}, %{1}, %{2}, %{3}, %{4},%{5}, %{6}, %{7}” ftp_quotatallies
注意:请将该文件中的MYSQL_PASSWORD替换为你的Froxlor数据库密码。
执行:
chmod 0600 “/etc/proftpd/sql.conf”
chown root:0 “/etc/proftpd/sql.conf”
/etc/init.d/proftpd restart
这样,我们完成了FTP的配置。
最后,我们配置Cron Job. 编辑文件:/etc/cron.d/froxlor, 内容替换为:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/5 * * * * root /usr/bin/nice -n 5 /usr/bin/php5 -q /var/www/html/froxlor/scripts/froxlor_master_cronjob.php
执行:
chmod 0640 “/etc/cron.d/froxlor”
chown root:0 “/etc/cron.d/froxlor”
/etc/init.d/cron reload
至此,Froxlor配置完毕,可以实现新建账户、分配空间、设置分销等功能了。
需要注意的是,Froxlor的某些操作通过Cron Job实现,因此会有稍许延迟,比如我们新建一个虚拟主机账户,则新建的主机网站需要几分钟后才能访问。