更改后自动重新加载配置文件(nginx.conf等)

Mad*_*ern 5 nginx

sudo service nginx reload在处理/实验/学习配置文件nginx(以及其他包含的配置文件)时,我总是忘记重新加载 nginx 设置。

有没有办法实现此目的,即 nginx 在进行以下任何更改后重新加载配置文件:

  • /etc/nginx/nginx.conf
  • /etc/nginx/sites-available/(任何文件的更改、删除、创建)
  • /etc/nginx/sites-enabled/(任何文件的更改、删除、创建)

你可能会认为我忘记重新加载是愚蠢的/愚蠢的,但虽然是新的并且实际上在学习和实验,但确实有足够的东西可以跟踪。

EEA*_*EAA 4

使用配置管理系统来部署这些更改,并包含一个触发器来自动重新启动配置文件已更改的服务。

在学习过程中养成使用 CM 的习惯是非常值得的,因为在以后的职业生涯中要改掉坏习惯会困难得多。

为了帮助您入门,这里有一个简单的 ansible 剧本,它将部署一个 nginx 配置文件到您的服务器,然后在发生任何更改时重新启动 nginx:

---
- hosts: web
  sudo: yes

  tasks:
    - name: Install packages
      apt: state=installed install_recommends=no name={{ item }}
      with_items:
        - nginx

    - name: Deploy nginx config file
      copy: src=nginx.conf dest=/etc/nginx/nginx.conf
      notify: restart nginx

  handlers:
    - name: restart nginx
      service: name=nginx state=restarted
Run Code Online (Sandbox Code Playgroud)

将该文本保存到一个文件中,例如foo.yml. 您还需要一个清单文件来告诉 ansible 在哪些主机上运行这些命令。创建一个hosts文件,内容如下:

[web]
servername.example.com
Run Code Online (Sandbox Code Playgroud)

将您的 playbook、清单文件和 nginx.conf 保存在同一目录中。

然后你可以应用剧本:

$ ansible-playbook foo.yml -i hosts -K
Run Code Online (Sandbox Code Playgroud)

发出该命令后,系统会要求您输入 sudo 密码。提供它,然后剧本就会运行。