香菇肥牛的博客

欢迎您来到我的博客https://qing.su 且听我慢慢倾诉……

香菇肥牛的博客

Debian 8系统环境下Froxlor主机控制面板的安装和使用 | 香菇肥牛的博客

02/01/2016

VPS教程>

Debian 8系统环境下Froxlor主机控制面板的安装和使用

Froxlor是知名的主机控制面板。它完全开源,因此所有人都可以免费使用。同时,它拥有不弱于cPanel, DirectAdmin等收费面板的功能、安全性和实用性(包括子账户、邮箱、FTP、分销、工单系统等功能),以及美观大气的使用界面。其唯一缺点,在我看来是安装过程繁琐冗长。本次我将详细介绍Debian 8操作系统下安装Froxlor和配置的方法。本文作者为香菇肥牛https://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, 这没有关系,后续部分无需任何更改。

LAMP环境的搭建

首先,我们更新源。执行:

1
2
apt-get update
apt-get upgrade

接下来,依次安装Apache, MySQL与PHP. 执行:

1
2
3
4
5
apt-get install apache2
apt-get install mysql-server
mysql_install_db
mysql_secure_installation
apt-get install php5 php5-mysql libapache2-mod-php5 php5-mcrypt

然后我们需要配置一下Apache. Apache从版本2.4开始,在配置文件中多了几条语句,如果不对其进行更改,则访问所有新建的虚拟主机网站时都会遇到403错误。因此,这个更改非常关键。编辑/etc/apache2/apache2.conf 找到下面这行:

1
Require all denied

将其改成

1
Require all granted

这样,我们完成了LAMP的搭建。此处我们虽然更改了Apache配置文件,但无需reload, 因为接下来安装好Froxlor之后还需要更改。

 

Froxlor的安装

在Debian系统中我们可以通过包管理器安装Froxlor. 依次执行:

1
2
3
4
5
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的默认网页文件夹都不知道在哪儿吗…),我们需要将其复制到可以访问的目录下:

1
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, 执行:

1
mysql -u root -p

输入你的MySQL root账户密码后,进入MySQL命令界面。我们新建数据库:

1
2
3
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, 依次执行:

1
2
3
4
5
6
7
8
9
10
11
12
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服务器。执行:

1
apt-get install proftpd-basic proftpd-mod-mysql

 

编辑文件/etc/proftpd/proftpd.conf, 将其内容替换为下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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/

执行:

1
2
chmod 0600 "/etc/proftpd/proftpd.conf"
chown root:0 "/etc/proftpd/proftpd.conf"

编辑文件:/etc/proftpd/modules.conf, 将其内容替换为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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

执行:

1
2
chmod 0644 "/etc/proftpd/modules.conf"
chown root:0 "/etc/proftpd/modules.conf"

编辑文件:/etc/proftpd/sql.conf, 将内容替换为下面的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
DefaultRoot ~
RequireValidShell off
AuthOrder mod_sql.c
SQLBackend     mysql
SQLEngine on
SQLAuthenticate on
SQLAuthTypes Crypt
SQLAuthenticate users* groups*
SQLConnectInfo froxlor@127.0.0.1 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数据库密码。

执行:

1
2
3
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, 内容替换为:

1
2
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

执行:

1
2
3
chmod 0640 "/etc/cron.d/froxlor"
chown root:0 "/etc/cron.d/froxlor"
/etc/init.d/cron reload

至此,Froxlor配置完毕,可以实现新建账户、分配空间、设置分销等功能了。

Froxlor

需要注意的是,Froxlor的某些操作通过Cron Job实现,因此会有稍许延迟,比如我们新建一个虚拟主机账户,则新建的主机网站需要几分钟后才能访问。

如果大家有什么问题或者在安装过程中报错,欢迎留言一起探讨。

本文为香菇肥牛(https://qing.su)原创,未经本人允许,禁止转载,谢谢。

来一发吐槽