ITPub博客

首页 > 数据库 > 数据库开发技术 > Ansible自动化部署Nginx攻略

Ansible自动化部署Nginx攻略

原创 数据库开发技术 作者:yj11290301 时间:2024-05-14 19:00:00 0 删除 编辑


点击蓝字,立即关注

Ansible自动化部署Nginx攻略



自动化部署Nginx提升效率必备

前言


在现今日益复杂的IT环境中,自动化部署已成为提高运维效率、减少人为错误的必备技能。Ansible作为一款简单易用、功能强大的自动化运维工具,受到了广大运维人员的青睐。本文将为大家介绍如何使用Ansible自动化部署Nginx及其业务应用,并附上详细的优化代码和注释。


除了精彩的内容,我们还为大家精心准备了一份粉丝福利,记得查看文章末尾哦!



往期回顾

Ansible入门:解锁IT自动化的神器
Ansible入门:掌握Ansible命令,提升自动化运维效率
Ansible模块精通:提高效率必备技能
Ansible模块精通:掌握copy、fetch与file模块
Ansible自动化必备:三模块详解指南
Ansible自动化运维必备“四剑客”
Ansible模块:cron、Firewalld、Selinux模块深度解析
Ansible Playbook:自动化运维的神器教程
Ansible企业实战:深入解析Ansible实战案例


部署思路介绍



(1)ansible本地服务器先源码安装NGINX

(2)再使用playbook实现批量部署NGINX


本地部署nginx思路



1. 准备阶段

  • 安装依赖库:首先,通过yum包管理器安装Nginx编译所需的依赖库,包括pcre-devel、openssl-devel和zlib-devel。这些库是Nginx编译和运行所必需的。


2. 获取Nginx源码

  • 拷贝Nginx源码包:使用copy模块将Nginx源码包从Ansible playbook所在的本地目录复制到目标主机的/tmp目录下。


3. 创建服务组与用户

  • 创建服务组:通过group模块在目标主机上创建一个名为www的系统组,用于管理Nginx服务相关的用户。

  • 创建服务用户:使用user模块在目标主机上创建一个名为www的系统用户,并将其主组设置为www,同时限制其登录权限。


4. 编译和安装Nginx

  • 解压源码包:通过unarchive模块解压Nginx源码包到/usr/src/目录下。

  • 配置Nginx:使用shell模块执行./configure脚本,配置Nginx的安装参数,如指定安装目录、运行用户和组、启用SSL等模块。

  • 编译和安装:再次使用shell模块执行make和make install命令,编译和安装Nginx。


5. 配置Nginx服务

  • 优化服务文件:使用copy模块将Nginx的systemd服务文件复制到目标主机的/usr/lib/systemd/system/目录下,以便通过systemd管理Nginx服务。

  • 启动Nginx服务:通过service模块启动Nginx服务,并设置其为开机自启。


6. 配置防火墙

  • 配置防火墙(临时和永久):使用firewalld模块开放TCP 80端口,允许外部访问Nginx服务。首先进行临时开放,然后将其设置为永久开放,以确保重启后依然有效。



本地编译安装nginx



wget 命令

wget https://nginx.org/download/nginx-1.26.0.tar.gz
  • 使用 wget 工具从 https://nginx.org/download/ 下载 nginx-1.26.0.tar.gz 这个文件。

  • 这个文件是 Nginx 的源代码压缩包。


yum 命令

yum install pcre-devel openssl-devel zlib-devel -y

使用 yum 包管理器来安装 Nginx 编译所依赖的开发库。

groupadd 命令

groupadd -r www
  • 使用 groupadd 命令来创建一个新的系统组 www。

  • -r 参数表示创建一个系统组,这样的组通常用于运行系统服务

useradd 命令

useradd -r -s /sbin/nologin -M -g www www
  • 使用 useradd 命令来创建一个新的系统用户 www。

  • -r 参数表示创建一个系统用户。

  • -s /sbin/nologin 参数表示设置该用户的 shell 为 /sbin/nologin,这样该用户就不能登录系统。

  • -M 参数表示不创建用户的主目录。

  • -g www 参数表示将该用户添加到 www 组。

tar命令

tar zxf nginx-1.26.0.tar.gz

使用 tar 命令来解压 nginx-1.26.0.tar.gz 文件

cd nginx-1.26.0/

./configure 命令

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module

make 和 make install 命令

make && make install
  • make 命令用于编译 Nginx 的源代码。

  • && 是一个 shell 操作符,表示如果前一个命令(make)成功执行,则执行后面的命令(make install)。

  • make install 命令用于将编译好的 Nginx 安装到指定的目录(由 --prefix 参数指定)。



systemd 服务单元文件

[Unit]Description=My web DaemonAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf[Install]WantedBy=multi-user.target
命令解释


[Unit] 部分    Description=My web Daemon    这定义了服务的简短描述。    After=network.target    这表示服务应该在 network.target 启动之后启动。network.target 是一个虚拟目标,它表示网络已经准备好,但具体的网络服务可能还未启动。这通常是一个好的起点,因为它确保了服务在尝试访问网络之前已经有一个可用的网络环境。[Service] 部分    Type=forking    这表示服务在启动时将会创建子进程。对于 Nginx 来说,这通常是正确的,因为 Nginx 主进程会启动一个或多个工作进程来处理连接。    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf    这定义了服务启动时应该执行的命令。在这里,你指定了 Nginx 的可执行文件位置以及配置文件的路径。确保这些路径是正确的,并且 Nginx 的可执行文件有执行权限。[Install] 部分    WantedBy=multi-user.target    这表示服务应该被添加到 multi-user.target 的 "Wanted" 列表中。multi-user.target 是一个在启动过程中晚于 network.target 运行的虚拟目标,通常用于定义多用户服务的启动顺序。这意味着当系统达到多用户模式时,你的服务将会启动。
启动NGINX


systemctl restart nginx


ansible使用playbook进行自动化部署


---  - hosts: 192.168.8.6    tasks:      - name: yum1        yum: name=pcre-devel state=installed      - name: yum2        yum: name=openssl-devel state=installed      - name: yum3        yum: name=zlib-devel state=installed      - name: 拷贝nginx源码包        copy: src=/ansible_palybook/nginx-1.26.0.tar.gz dest=/tmp      - name: 创建服务组        group: name=www system=yes state=present      - name: 创建服务用户        user: name=www system=yes create_home=no shell=/sbin/nologin group=www state=present      - name: 解压源码包        unarchive: src=/tmp/nginx-1.26.0.tar.gz dest=/usr/src/ remote_src=yes      - name: ./configure配置        shell: |             ./configure --prefix=/usr/local/nginx \                         --user=www \                         --group=www \                         --with-http_ssl_module \                         --with-http_sub_module \                         --with-http_dav_module \                         --with-http_flv_module \                         --with-http_mp4_module \                         --with-http_stub_status_module        args:          chdir: /usr/src/nginx-1.26.0/      - name: make nginx        shell: make        args:          chdir: /usr/src/nginx-1.26.0/      - name: make install nginx        shell: make install        args:          chdir: /usr/src/nginx-1.26.0/      - name: 优化nginx服务        copy: src=/usr/lib/systemd/system/nginx.service dest=/usr/lib/systemd/system/      - name: 启动nginx服务        service: name=nginx state=started enabled=yes      - name: 配置防火墙(临时)        firewalld: port=80/tcp state=enabled      - name: 配置防火墙(永久)        firewalld: port=80/tcp state=enabled permanent=yes      - name: 更改业务目录地址          copy:             src: /usr/local/nginx/conf/nginx.conf           dest: /usr/local/nginx/conf/nginx.conf             owner: www             group: www             mode: '0644'


自动化安装nginx思路



  1. 安装依赖库:

  • 使用 yum 模块安装 pcre-devel、openssl-devel 和 zlib-devel 这三个依赖库,这些都是 Nginx 编译过程中需要用到的。


  • 拷贝 Nginx 源码包:

    • 使用 copy 模块从 Ansible 控制机的 /ansible_palybook/ 目录拷贝 nginx-1.26.0.tar.gz 源码包到目标主机的 /tmp 目录。


  • 创建服务组和用户:

    • 使用 group 模块创建名为 www 的系统组。

    • 使用 user 模块创建名为 www 的系统用户,并将其归属于 www 组,且没有家目录和登录 shell。


  • 解压源码包并编译安装:

    • 使用 unarchive 模块解压源码包到 /usr/src/ 目录。

    • 使用 shell 模块执行 ./configure 命令进行 Nginx 的配置,指定了安装目录、用户和组,以及启用了多个模块。

    • 接着使用 shell 模块执行 make 和 make install 命令来编译和安装 Nginx。


  • 优化 Nginx 服务:

    • 这一步的copy模块看起来有些冗余,因为它只是将 Nginx的服务文件从同一个位置复制到同一个位置,并且没有改变文件的内容或属性。但可能是为了保持 Ansible Playbook 的结构一致性或用于后续更改服务文件时的占位符。


  • 启动 Nginx 服务:

    • 使用 service 模块启动 Nginx 服务,并将其设置为开机启动。


  • 配置防火墙:

    • 使用 firewalld 模块开放 TCP 80 端口(HTTP 服务默认端口)首先设置为临时生效,然后设置为永久生效。


  • 更改业务目录地址:

    • 注意:这一步其实并没有更改 Nginx 的配置文件位置或内容,它只是将/usr/local/nginx/conf/nginx.conf 文件复制到同一个位置,并更改了文件的所有者和权限。可能是为了设置文件属性或作为后续更改配置文件的占位符。

    总结


      通过Ansible进行自动化部署,我们可以大大减少人工操作的错误,提高我们的工作效率。而且,一旦我们的playbook编写完成,我们就可以反复使用它来部署我们的业务应用,无论是在测试环境还是在生产环境。 

      

      希望我的分享能对您有所帮助,如果您有任何问题或者想要了解更多关于Ansible的知识,欢迎随时向我提问。让我们一起提升效率,享受自动化部署带来的便捷吧!



    END



    扫码关注我们




    敬请关注博主,我们将持续为您带来云计算行业及更多前沿技术的最新信息,助您把握技术动态,领先一步!”


    若您渴望深入了解云计算知识,或希望与云计算、运维、网络等领域的精英们共同交流学习,欢迎您私信博主,引荐您加入专业交流群。在这里,您可以与各路大咖切磋技艺,共享行业前沿资讯,一同成长进步。期待您的参与,让我们共同开启云计算领域的探索之旅!



    微信号 | a2459155652
    商务合作|学术交流|简历指导


    扫码关注
    云计算运维学习交流群



    独家粉丝福利大放送!


    🌟亲爱的朋友们,你是否对云计算充满好奇,想要深入了解这一前沿科技?那么,现在就有一个绝佳的机会摆在你面前!🌟

    💡**只要简单两步,你就能轻松获取珍贵的云计算资料一份!**💡

    1️⃣ 立即关注博主:不错过任何一次与前沿科技近距离接触的机会!

    2️⃣ 回复关键词“云计算资料”:打开通往云计算知识宝库的大门!

    🎁这份资料包含了云计算的精华内容,无论是初学者还是专业人士,都能从中获得宝贵的启示和收获。🎁

    点个「在看」再走吧!





    原文作者:网络豆云计算学堂;如有侵权,请联系管理员删除。

    请登录后发表评论 登录
    全部评论

    注册时间:2023-09-15

    • 博文量
      76
    • 访问量
      33957