当前位置: 首页 > news >正文

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

http://www.rkmt.cn/news/112909.html

相关文章:

  • 9个AI论文工具,继续教育学员轻松写毕业论文!
  • 超细整理,性能测试如何做?怎么做?常见面试题(汇总六)
  • 从开题到定稿都有人带,8 款论文写作工具真实体验:效率提升不止 3 倍
  • [PM]十种项目管理方法详细介绍
  • 【读不懂外文文献?先别急着放弃】这 7 个工具 + 1 个写作方法,让你的论文越写越顺
  • Python+Vue的校园失物招领系统 Pycharm django flask
  • Python+Vue的校园招聘网站的设计与实现_ Pycharm django flask
  • GPT-5.2评分第一却遭全网差评:AI模型为何陷入‘高分低能’困境?
  • MCU 锁步(Lockstep)
  • CentOS 编译安装 Redis 6.2.1 并部署多实例(单服务器)
  • PY可拓展计算机(自用)
  • 图像生成的新拐点:谷歌Nano Banana Pro的四大革命性突破与战略价值
  • 论文翻译:Understanding Oversquashing in GNNs through the Lens of Effective Resistance
  • 实验作业5
  • Docker容器化实践:从开发到生产的完整流程
  • 模型推理 单多轮推理,gpu推理,lora推理和vllm(附代码示例)
  • 为什么Anthropic说:AI的未来是Skills不是Agent?
  • AXI-A7.4.10 Support for Atomic transactions(1)
  • 介观交通流仿真软件:Aimsun Next_(15).AimsunNext的插件开发
  • 栈:表达式求值,逆波兰表达式,后缀表达式
  • Dify 1.7.0音频功能瓶颈突破(音频时长限制终极应对策略)
  • Dify工作流上线前必做的7项依赖检查,少一步都可能引发生产故障
  • ▲16QAM调制软解调+扩频解扩+VV相位同步系统matlab误码率仿真
  • 如何通过vivado对一个FPGA工程进行性能评估
  • 计算机毕业设计springboot民宿管理系统 基于Spring Boot的民宿管理平台设计与实现 Spring Boot框架下的民宿信息管理系统开发
  • 计算机毕业设计springboot面向煤矿井下人员的不安全行为管理系统 基于 Spring Boot 的煤矿井下人员安全行为监管系统设计与实现 Spring Boot 框架下煤矿井下人员不安全行为监测
  • SPFA算法
  • 构建ros2的节点工程,并创建python的ros2的包的方法过程(推荐)
  • 2、云、虚拟化与数据存储网络:从挑战到机遇
  • 痛击面试官!CURD系统也能做出技术含量