我试图将最新版本的ProFTPd(1.3.5)安装到CentOS 7盒子上,最后不得不手动configuration和安装。 原因是EPEL的proftpd版本不包含mod_sftp (尽pipe它包含mod_tls )。 这是EPEL版本安装时proftpd -l的输出:
[root@blah /]# proftpd -l Compiled-in modules: mod_core.c mod_xfer.c mod_rlimit.c mod_auth_unix.c mod_auth_file.c mod_auth.c mod_ls.c mod_log.c mod_site.c mod_delay.c mod_facts.c mod_dso.c mod_ident.c mod_readme.c mod_auth_pam.c mod_tls.c mod_memcache.c mod_cap.c mod_ctrls.c mod_lang.c
使用这个家伙的方法,我认为他使用的是CentOS 6 ,我用下面的configuration来configurationproftpd:
./configure --prefix=/usr --with-includes=/usr/local/ssl/include --with-libraries=/usr/local/ssl/lib --enable-openssl --with-modules=mod_sftp --enable-dso
然后我就可以运行make并成功make install 。
问题是,它看起来不像它创build任何systemd脚本:
[root@localhost]# systemctl start proftpd.service Failed to issue method call: Unit proftpd.service failed to load: No such file or directory.
然而,二进制存在,系统知道它:
[root@localhost]# which proftpd /sbin/proftpd
另外,在/etc/init.d和/usr/etc/init.d似乎没有任何init脚本。
当我单独运行二进制文件的时候,它就可以正常运行了。
但是我希望得到某种工作的init或者systemd脚本,这样它就可以在启动的时候启动(并且我将能够更轻松地pipe理服务)。
任何想法如何做到这一点?
[免责声明:我几天前在Stack Overflow上发布了同样的问题,认为这是一个更加以编程为中心的问题,但是没有看到任何活动,我认为这与系统pipe理相关太]
systemd单元看起来像这样:
$ cat /etc/systemd/system/proftpd.service [Unit] Description=ProFTPd FTP Server After=syslog.target network.target [Service] Type=forking ExecStart=/usr/sbin/proftpd ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
那么你可以这样做:
$ sudo systemctl enable /etc/systemd/system/proftpd.service $ sudo systemctl start proftpd.service
man systemctl应该让你走上正轨。