如何在CentOS 7上编译PureFTPd
在本教程中,我将介绍在CentOS 7上从源编译PureFTPd的步骤。Pure-ftpd是一个轻量级和稳定的FTP守护程序,支持各种身份验证后端,如Linux系统用户,puredb,MySQL和PostgeSQL。 稍后我将使用纯ftpd进行ISPConfig 3,因此我将使用MySQL / Mariadb来进行编译。
我最初为ISPConfig 3完美的服务器教程写了本指南,因为目前还不清楚EPEL是否会为CentOS 7发布纯ftpd软件包,而且我需要这个软件包来严重地为ISPConfig添加CentOS 7支持。 几天前,EPEL发布了一个现成的纯ftpd .rpm,我将使用它完美的服务器教程,对于大多数用户来说,使用EPEL rpm会更方便,建议使用。 然而,我将在这里记录构建您自己的纯ftpd软件包的步骤,因为这对于定制的构建可能仍然有用。
准备建筑环境
安装CentOS开发工具链。
yum -y groupinstall 'Development Tools'
安装MariaDB开发文件。
yum -y install mariadb-devel
下载纯ftpd源文件并解压缩存档。
cd /usr/local/src
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.bz2
tar xvjpf pure-ftpd-1*.tar.bz2
cd pure-ftpd-1*
运行configure命令来准备构建。 要获取所有编译区域的概述,请运行./configure --help。
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/usr/com --localstatedir=/var --libdir=/usr/lib64 --includedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --with-mysql --with-virtualchroot --with-everything
并编译pure-ftpd二进制文件:
make
make install
创建配置文件和启动脚本
首先我们创建起始脚本。 对于这个构建,我将使用CentOS 6.5中的起始脚本,它仍然适用于CentOS 7。
nano /etc/init.d/pure-ftpd
#!/bin/bash # # Startup script for the pure-ftpd FTP Server $Revision: 1.1 $ # # chkconfig: - 85 15 # description: Pure-FTPd is an FTP server daemon based upon Troll-FTPd # processname: pure-ftpd # pidfile: /var/run/pure-ftpd.pid # config: /etc/pure-ftpd/pure-ftpd.conf # Source function library. . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is configured. # [ ${NETWORKING} = "no" ] && exit 0 RETVAL=0 prog="pure-ftpd" # Path to the pure-ftp binaries. fullpath=/usr/sbin/pure-ftpd pureftpwho=/usr/sbin/pure-ftpwho pure_config=/etc/pure-ftpd/pure-ftpd.conf pure_launch_script=/usr/sbin/pure-config.pl start() { echo -n $"Starting $prog: " daemon "$pure_launch_script $pure_config --daemonize > /dev/null" RETVAL=$? [ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd echo } stop() { echo -n $"Stopping $prog: " killproc pure-ftpd RETVAL=$? [ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; reload) echo -n $"Reloading $prog: " killproc pure-ftpd -HUP RETVAL=$? echo ;; condrestart) if [ -f /var/lock/subsys/pure-ftpd ] ; then stop # avoid race sleep 3 start fi ;; status) status pure-ftpd RETVAL=$? if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then $pureftpwho fi ;; *) echo $"Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}" RETVAL=1 esac exit $RETVAL
chmod +x /etc/init.d/pure-ftpd
mkdir /etc/pure-ftpd/
cp configuration-file/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf
cp configuration-file/pure-config.pl /usr/sbin/pure-config.pl
chmod 744 /etc/pure-ftpd/pure-ftpd.conf
chmod 755 /usr/sbin/pure-config.pl
然后创建系统启动链接并启动PureFTPd:
chkconfig --levels 235 pure-ftpd on
systemctl start pure-ftpd.service
现在我们将PureFTPd配置为允许FTP和TLS会话。 没有TLS的FTP是一个非常不安全的协议,因为所有密码和所有数据都以明文形式传输。 通过使用TLS,可以对整个通信进行加密,从而使FTP更加安全。
TLS需要OpenSSL; 要安装OpenSSL,我们只需运行:
yum -y install openssl
打开/etc/pure-ftpd/pure-ftpd.conf
...
vi /etc/pure-ftpd/pure-ftpd.conf
如果要允许FTP和TLS会话,请将TLS
设置为1
:
[...] # This option can accept three values : # 0 : disable SSL/TLS encryption layer (default). # 1 : accept both traditional and encrypted sessions. # 2 : refuse connections that don't use SSL/TLS security mechanisms, # including anonymous sessions. # Do _not_ uncomment this blindly. Be sure that : # 1) Your server has been compiled with SSL/TLS support (--with-tls), # 2) A valid certificate is in place, # 3) Only compatible clients will log in. TLS 1 [...]
为了使用TLS,我们必须创建SSL证书。 我在/ etc / ssl / private /
中创建它,因此我先创建该目录:
mkdir -p /etc/ssl/private/
之后,我们可以生成SSL证书,如下所示:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
国家名称(2个字母代码)[XX]:
< - 输入您的国家名称(例如,“DE”)。 州或省名(全名)[]:
< - 输入您的州或省名称。 地点名称(例如,城市)[默认城市]:
< - 输入您的城市。 组织名称(如公司)[默认公司有限公司]:
< - 输入您的组织名称(例如您公司的名称)。 组织单位名称(如部分)[]:
< - 输入您的组织单位名称(例如“IT部门”)。 通用名称(例如,您的姓名或服务器的主机名)[]:
< - 输入系统的完全限定域名(例如“server1.example.com”)。 电子邮件地址[]:
< - 输入您的电子邮件地址。
更改SSL证书的权限:
chmod 600 /etc/ssl/private/pure-ftpd.pem
最后重新启动PureFTPd:
systemctl stop pure-ftpd.service
systemctl start pure-ftpd.service
而已。 您现在可以尝试使用FTP客户端连接; 但是,您应该将FTP客户端配置为使用TLS。