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

我一直忘记重新加载nginx设置, sudo service nginx reload ,而在/实验/学习configuration文件, nginx (和其他包括的configuration文件)。

有没有一种方法来实现这一点,Nginx重新加载configuration文件,下面的任何更改后:

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

你可能会认为我忘记重新加载是愚蠢/愚蠢的,但在新的实际学习和实验中,确实有足够的logging。

使用configurationpipe理系统部署这些更改,并包含触发器以自动重新启动其configuration文件已更改的服务。

在学习的过程中,现在习惯使用CM是非常值得的,因为在以后的职业生涯中学习不好的习惯会变得更加困难。

为了让你开始,下面是一个简单的,可靠的剧本,将部署一个nginxconfiguration文件到你的服务器,然后重新启动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 

将该文本保存到像foo.yml这样的文件中。 你还需要一个库存文件来告诉谁能够运行这些命令的主机。 创build一个包含如下内容的hosts文件:

 [web] servername.example.com 

将你的剧本,库存文件和你的nginx.conf保存在同一个目录下。

那么你可以应用剧本:

 $ ansible-playbook foo.yml -i hosts -K 

发出该命令后,您将被要求input您的sudo密码。 提供它,然后剧本将运行。

很明显,你想拥有一个CM(configurationpipe理系统),而Ansible是自动化应用部署的头号人物。

我认为CI(持续集成)或CD(连续部署)也可以满足您的需求。使用git + CI / CD + VM您可以轻松testing您的服务。您可以尝试一些服务:

Shippable,Circle CI,GitLab CI。