使用 systemd 启动程序

使用 systemd 启动程序

我正在尝试将最新版本的 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应该会让你走上正确的道路。

相关内容