sudo service nginx reload
在处理/试验/学习配置文件nginx
(以及其他包含的配置文件)时,我总是忘记重新加载 nginx 设置。
有没有办法实现这一点,即在以下任何更改之后,nginx 重新加载配置文件:
- /etc/nginx/nginx.conf
- /etc/nginx/sites-available/(任何文件的更改、删除、创建)
- /etc/nginx/sites-enabled/(任何文件的更改、删除、创建)
您可能认为我忘记重新加载是愚蠢的,但作为新手并且实际学习和实验,确实有足够多的事情需要跟踪。
答案1
使用配置管理系统部署这些更改,并包含一个触发器来自动重新启动配置文件已更改的服务。
在学习期间养成使用 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
将该文本保存到类似 的文件中foo.yml
。您还需要一个清单文件来告诉 ansible 在哪个主机上运行这些命令。创建一个hosts
包含以下内容的文件:
[web]
servername.example.com
将您的剧本、库存文件和 nginx.conf 保存在同一目录中。
然后你就可以应用剧本了:
$ ansible-playbook foo.yml -i hosts -K
发出该命令后,系统会要求你输入 sudo 密码。输入密码后,剧本就会运行。
答案2
显然,您希望拥有一个 CM(配置管理系统),而 Ansible 能够自动化应用程序部署。
我认为 CI(持续集成)或 CD(持续部署)也可以满足您的需求。使用 git+CI/CD+VM 您可以轻松测试您的服务。您可以尝试以下服务:
Shippable、Circle CI、GitLab CI。