我正在尝试将最新版本的 ProFTPd (1.3.5) 安装到 CentOS 7 机器上,但最终不得不手动配置和安装。原因是 EPEL 版本的 proftpd 不包含mod_sftp
(尽管它确实包含)。这是安装 EPEL 版本时mod_tls
的输出: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,我使用以下命令配置 proftpd:
./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
成功了。
问题是它看起来好像没有创建任何 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 或 systemd 脚本,以便它可以在启动时启动(这样我就可以更轻松地管理服务)。
对于如何做到这一点,您有什么想法吗?
[免责声明:几天前我在 Stack Overflow 上发布了同样的问题,以为这是一个更以编程为中心的问题,但没有任何活动,而且我认为这与系统管理足够相关,因此也与此相关]
答案1
该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
应该会让你走上正确的道路。