news 2026/5/25 8:19:34

Ansible进行Nginx编译安装的详细步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ansible进行Nginx编译安装的详细步骤

一、实验环境

二、实验步骤

  • 安装ansible

    [root@localhost ~]# hostnamectl set-hostname ansible [root@localhost ~]# bash [root@ansible ~]# yum install epel-release -y [root@ansible ~]# yum install ansible -y
  • 添加主机清单

    [root@ansible ~]# cd /etc/ansible/ [root@ansible ansible]# ls ansible.cfg hosts roles [root@ansible ansible]# vim hosts [webservers] ##添加到最后一行 192.168.52.209 192.168.52.197
  • 配置公私钥

    [root@ansible ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:LPYTI56Y4SDp+SC6GkYrMoXCx1PhftoIvs3AM6iwtc4 root@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ | . | | . . | | o | |.o. o . | |=oo=..+.S | |+oBoo*== o | |BB.*+oo.o | |O*o.B . | |BoEo o | +----[SHA256]-----+ [root@ansible ~]# ssh-copy-id root@192.168.52.210 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.52.210 (192.168.52.210)' can't be established. ECDSA key fingerprint is SHA256:nryK+/NCYC3BMKWWs5x2gbYTOXHh1XQfrA1hIak57bQ. ECDSA key fingerprint is MD5:b4:f5:03:a7:f0:2c:48:5e:c8:26:b0:eb:c2:c3:37:45. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.115.109's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.52.210'" and check to make sure that only the key(s) you wanted were added. [root@ansible ~]# ssh-copy-id root@192.168.52.210 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.52.210 (192.168.52.210)' can't be established. ECDSA key fingerprint is SHA256:Nc4WQ6E4MwaQD/67ALzZ36hjNRigxQSUiDa2ZP5ZT+o. ECDSA key fingerprint is MD5:f7:33:08:60:92:d5:99:2c:9e:fe:47:5a:63:c8:e5:a8. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@192.168.52.210's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.168.52.210'" and check to make sure that only the key(s) you wanted were added.
  • 下载Nginx源码

  • 使用get_url模块从Nginx官网下载源码包到目标主机的临时目录(如/tmp)。

    - name: download nginx get_url: url: "http://nginx.org/download/nginx-1.18.0.tar.gz" # 可替换为最新版本URL dest: /tmp/nginx-1.18.0.tar.gz # 指定下载路径

此步骤确保源码包被安全下载

  • 安装编译依赖包

使用yum模块安装必需的工具链,包括编译器(gcc)和库(openssl-devel、pcre-devel)。

- name: install gcc and dependencies yum: name: "{{ packages }}" state: present vars: packages: - openssl-devel - pcre-devel - gcc
  • 解压源码包

使用shell模块解压下载的源码包到临时目录。

- name: extract nginx tarball shell: | cd /tmp tar -xf nginx-1.18.0.tar.gz

解压后源码位于/tmp/nginx-1.18.0

  • 创建Nginx系统用户

为安全运行Nginx,使用user模块创建专用用户(无登录权限)

- name: create nginx user user: name: nginx state: present shell: /sbin/nologin # 禁止登录
  • 编译并安装Nginx

使用shell模块执行configure、make和make install。此处添加常用编译选项(如状态模块)

- name: compile and install nginx shell: | cd /tmp/nginx-1.18.0 ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module # 启用状态监控 make make install

此步骤将Nginx安装到/usr/local/nginx

  • 配置Systemd服务

创建systemd服务文件(确保Nginx开机自启),使用copy模块生成文件

- name: create nginx systemd service copy: dest: /etc/systemd/system/nginx.service # 服务文件路径 content: | [Unit] Description=The nginx HTTP and reverse proxy server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx # 启动命令 ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
  • 启用并启动Nginx服务

重载systemd配置,并启用服务。

- name: reload systemd daemon command: systemctl daemon-reload become: yes # 需要root权限 - name: enable and start nginx service: name: nginx state: started enabled: yes

三、创建playbook

  • 创建剧本

    vim nginx.yaml
  • 添加

    - hosts: webservers # 目标主机组,需在Ansible清单中定义 become: yes # 使用root权限 tasks: - name: download nginx get_url: url: "http://nginx.org/download/nginx-1.18.0.tar.gz" dest: /tmp/nginx-1.18.0.tar.gz - name: install gcc and dependencies yum: name: "{{ packages }}" state: present vars: packages: - openssl-devel - pcre-devel - gcc - name: extract nginx tarball shell: | cd /tmp tar -xf nginx-1.18.0.tar.gz - name: create nginx user user: name: nginx state: present shell: /sbin/nologin - name: compile and install nginx shell: | cd /tmp/nginx-1.18.0 ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module make make install - name: create nginx systemd service copy: dest: /etc/systemd/system/nginx.service content: | [Unit] Description=The nginx HTTP and reverse proxy server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target - name: reload systemd daemon command: systemctl daemon-reload - name: enable and start nginx service: name: nginx state: started enabled: yes

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 3:39:53

把 AI 带进终端:Qoder CLI 如何让命令行变得更智能

大家好,我是晞木,来自 Qoder 团队,主要负责 CLI 产品的技术研发。今天我想和大家分享我们 Qoder 产品家族中的一款智能终端工具 —— Qoder CLI。 我们的核心理念很简单:把 Qoder 的智能能力带到每一个终端里。无论你是在本地开发…

作者头像 李华
网站建设 2026/5/24 21:07:33

Python+Vue的流浪动物猫狗救助系统_ Pycharm django flask

这里写目录标题 项目介绍项目展示详细视频演示感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人技术栈文章下方名片联系我即可~解决的思…

作者头像 李华
网站建设 2026/5/24 10:11:22

Python+Vue的校园自助洗衣服务管理系统 Pycharm django flask

收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 本系统共有管理员,用户2个角色,具体功能如下: 1.管理员角色的功能主要包括管理员登录,用户管理,洗衣机分类管理,洗衣机管理&…

作者头像 李华
网站建设 2026/5/24 18:27:39

LobeChat品牌命名建议生成器搭建

LobeChat品牌命名建议生成器搭建 在企业创新节奏不断加快的今天,一个响亮、独特且富有意义的品牌名称往往成为产品成功的第一步。然而,传统命名过程依赖团队头脑风暴,耗时长、创意易枯竭,且难以系统化迭代。与此同时,尽…

作者头像 李华
网站建设 2026/5/25 0:57:56

Flutter URL唤醒神器:url_launcher 6.3.2 全场景实战,从配置到进阶

【导语】在Flutter开发中,“唤醒外部资源”是高频需求——打开网页、拨打电话、发送邮件、启动地图导航……这些操作若从零实现,需适配多平台原生API,耗时且易出错。官方插件url_launcher 6.3.2完美解决此问题,它封装了全平台URL唤…

作者头像 李华