如何在 Linux 中启动时自动启动服务?

服务器启动时自动配置服务的重要性

对于系统管理员来说,掌握如何在服务器启动时自动配置服务是一项至关重要的技能。这样,当服务器因各种原因重启后,这些服务可以无需人工干预地自动启动。

服务器重启可能由多种因素引发,包括:

  • 计划性的定期维护,例如每周或每月的重启。
  • 由于硬件故障或内核问题导致的意外重启。

通过正确配置服务,您可以避免每次重启后都手动启动它们的繁琐操作,从而实现一定程度的自动化,提高工作效率。

以下示例针对两个常用的服务器发行版进行了测试,即DigitalOcean服务器。

CentOS 或 RHEL 6.x 系统中的服务配置

下面的示例以 Apache HTTP 服务器为例进行说明,但该过程适用于任何需要在 Red Hat Enterprise Linux (RHEL) 或 CentOS 6 版本中启动的服务。您可以自定义脚本名称,这里我们沿用默认的 httpd。

  • 首先,您需要以 root 用户身份登录 Linux 服务器。
  • 接下来,在 /etc/init.d/ 目录下创建或复制您的服务脚本。

[[email protected] init.d]# ls -ltr httpd
-rwxr-xr-x. 1 root root 3371 Jan 6 08:56 httpd
[[email protected] init.d]#

我们将使用系统默认自带的 chkconfig 工具进行配置。

  • 使用 chkconfig --add 命令将脚本添加到启动项中。

[[email protected] init.d]# chkconfig --add httpd
[[email protected] init.d]# chkconfig httpd on

  • 使用 chkconfig --list 命令验证脚本是否已成功添加。

[[email protected] init.d]# chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[[email protected] init.d]#

至此,httpd 脚本将在 Linux 系统启动时自动执行,从而启动相应的服务。

如果您需要取消服务的自动启动,可以使用以下命令:


chkconfig httpd off
chkconfig --del httpd

RHEL 或 CentOS 7.x/8.x 系统中的服务配置

在 RHEL 7 及更高版本中,配置启动时自动启动服务的过程与 RHEL 6 有所不同。它采用 systemd 来管理服务。

大多数软件,如 Apache、PHP、MySQL 和 Nginx,在安装过程中通常会自动添加到服务列表中。

让我们以 PHP-FPM 为例进行说明。

首先,查看 php-fpm 的当前状态(假设您已经将脚本放置在 /usr/lib/systemd/system/ 目录下)。


[[email protected] ~]# systemctl status php-fpm
php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[[email protected] ~]#

如您所见,该服务当前处于禁用状态,这意味着它不会在系统启动时自动运行。

使用 systemctl enable 命令启用 php-fpm 的自动启动:


[[email protected] ~]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[[email protected] ~]#

现在,再次检查状态:


[[email protected] ~]# systemctl status php-fpm
php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
[[email protected] ~]#

现在,php-fpm 已被设置为在开机时自动启动。您可以重启服务器进行验证。

如果您需要禁用自动启动服务,则可以使用以下命令:


systemctl disable php-fpm

您可能还想参考一篇关于 systemd 和自动启动服务的文章,以便更深入地了解。

Ubuntu 系统中的服务配置

在 Ubuntu 系统中配置自动启动服务略有不同。 假设服务脚本的名称为 Nginx。

  • 首先,以 root 用户身份登录 Ubuntu 服务器。
  • 然后,将脚本复制到 /etc/init.d/ 文件夹中。
  • 最后,执行以下命令:

update-rc.d nginx defaults

  • 重启服务器以确保服务已成功启动。

希望以上内容对您有所帮助!

系统管理既有趣又充满挑战。如果您希望在该领域提升职业发展,可以考虑学习这个 Udemy 课程

另外,您也可以进一步了解如何排查 Linux 系统意外重启的原因。
如果您需要在 CentOS 6.x 系统上安装或升级 PHP-FPM 5.6,可以点击此处查看相关教程。

如果您喜欢这篇文章,请分享给更多人!