RH358配置Web服务器--自动化执行 Web 服务器配置

本文涉及的产品
云防火墙,500元 1000GB
简介: RH358配置Web服务器--自动化执行 Web 服务器配置

RH358配置Web服务器–自动化执行 Web 服务器配置

使用Ansible部署httpd和nginx并配置https。比实用的章节。

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

1. 自动化Web服务器配置

  • 确保在web服务器上安装了httpd或nginx包和任何其他需要的支持包。如果你的剧本可能会更新正在运行的系统上的软件,通知处理器重新启动web服务器软件。

  • 将每个虚拟主机的web内容部署到web服务器上。确保它具有正确的权限和SELinux上下文。

  • 确保您的web服务器的配置文件是正确的配置和安装。如果配置发生变化,请使用处理程序重新加载web服务器。

  • 确保您的TLS配置是正确的,并且服务器证书和匹配的私钥是安全配置和安装的。如果配置改变,使用一个处理程序来重新加载web服务器。

  • 使用Ansible service模块启用和启动服务。

  • 使用Ansible firewalld模块配置防火墙规则。

2. 安装Web服务软件包

使用yum Ansible模块安装web服务包httpd或nginx。

- name: Web server software is installed
  yum:
    name: httpd
    state: present

3. 部署Web内容

  • 可通过多种方式使用 Ansible 部署网站的内容

  • 可使用 copy 或 template 模块来部署单个文件和目录

  • 可使用 synchronize 模块将目录同步到 web 服务器。比如copy模块更高效且更具可扩展性

  • 可使用 git 模块克隆站点

- name: Make sure web site content is present
  git:
    repo: 'https://git.example.com/website/webcontent.git'
    dest: /srv/website
    version: production

在前面的例子中,版本指令可以是一个分支名称或标记名称,以及其他选项。

配置 DocumentRoot 目录的权限

  • 许多你用来部署网页内容的模块也可以同时设置文件所有权和权限。例如可以使用file模块来确保web内容的权限是正确的。

  • 需要确保SELinux标签是正确的。最好确保web服务器上的SELinux策略已经更新,以便文档根目录中的文件的默认类型是httpd_sys_content_t或运行在httpd_t域中的web服务器进程可以读取的其他类型

- name: SELinux policy is correct for web site location
  sefcontext:
    target: '/srv/website(/.*)?'
    setype: httpd_sys_content_t
    state: present

当SELinux默认策略正确时,可以使用file模块setype设置为_default并递归运行,与 restorecon -R 等效的操作:

- name: Correct file permissions and SELinux context on web content
  file:
    path: /srv/website
    state: directory
    recurse: yes
    follow: no
    owner: root
    group: root
    mode: 'a=rX'
    setype: _default

4. 部署服务器证书和密钥

可使用Ansible 生成证书和私钥,并使用 copy 模块将它们部署到正确的位置。

记得在TLS证书更改时通知处理程序重新启动web服务器,以便更改生效。对于Nginx,重新加载就足够了,但是Apache HTTP Server需要完全重启。

- name: Server and CA certificates are in place
  copy:
    src: "{
    { item }}"
    dest: /etc/pki/tls/certs
  loop:
    - website.crt
    - example-ca.crt
  notify: restart server

- name: Server TLS private key is in place
  copy:
    src: website.key
    dest: /etc/pki/tls/private
    mode: '0600'
  notify: restart server

5. 部署配置文件

如果需要在每个主机上定制配置文件,那么部署配置文件的最佳方法是使用jinj2模板。这很强大,因为可以通过使用具有不同变量值的相同模板为不同的虚拟主机部署多个文件。

如果这个任务改变了web服务器上的配置文件,记得通知处理程序重新加载服务。

- name: Deploy Apache virtual host configuration
  template:
    src: "website.conf.j2"
    dest: "/etc/httpd/conf.d/website.conf"
    notify: reload server

6. 配置防火墙规则

通过firewalld模块打开http和https服务的防火墙端口。

- name: Firewall ports are open
  firewalld:
    service: "{
    { item }}"
    permanent: yes
    immediate: yes
    state: enabled
  loop:
    - https
    - http

7. 确保Web服务器正在运行

service模块用于启用和启动web服务。

- name: Web server is enabled and started
  service:
    name: httpd
    state: started
    enabled: yes

8. 准备处理程序

不要忘记在play中包含一个handlers部分,以便根据任务的需要重新加载或重启服务器。

9. 课本练习

[student@workstation ~]$ lab web-automation start

1. 熟悉项目情况。

[student@workstation ~]$ cd /home/student/web-automation
[student@workstation web-automation]$ tree
.
├── ansible.cfg
├── deploy_content.yml
├── files
│   ├── cacert.pem
│   ├── example-ca.crt
│   ├── servera.lab.example.com.crt
│   ├── servera.lab.example.com.key
│   ├── serverb.lab.example.com.crt
│   └── serverb.lab.example.com.key
├── group_vars
│   ├── all
│   │   └── default.yml
│   ├── httpd
│   │   └── vars.yml
│   └── nginx
│       └── vars.yml
├── httpd.yml
├── inventory
├── nginx.yml
├── site.yml
├── solutions
│   ├── disable_all_webservers.yml
│   ├── httpd.yml
│   └── nginx.yml
└── templates
    ├── httpd.conf.j2
    ├── index.html.j2
    └── nginx.conf.j2

7 directories, 21 files
[student@workstation web-automation]$ cat inventory
[webservers]
servera.lab.example.com
serverb.lab.example.com

[httpd]
servera.lab.example.com

[nginx]
serverb.lab.example.com

[student@workstation web-automation]$ cat group_vars/all/default.yml 
---
httpd_packages:
  - httpd
  - mod_ssl
nginx_packages:
  - '@nginx:1.16'
cacert_file: "example-ca.crt"
[student@workstation web-automation]$ cat group_vars/httpd/vars.yml 
web_hosts:
  - "servera.lab.example.com"
[student@workstation web-automation]$ cat group_vars/nginx/vars.yml 
web_hosts:
  - "serverb.lab.example.com"
[student@workstation web-automation]$ cat site.yml 
- import_playbook: httpd.yml
- import_playbook: nginx.yml

[student@workstation web-automation]$ cat deploy_content.yml 
- name: Document root exists for web sites
# 通过遍历从group_vars加载的服务器,使用file模块创建每个根目录。
  file:
    path: "/srv/www/{
    { item }}"
    state: directory
    owner: root
    mode: '0755'
  loop: "{
    { web_hosts }}"

- name: Index test pages are correct
# 使用模板模块复制index.html.j2文件。
  template:
    src: "index.html.j2"
    dest: "/srv/www/{
    { item }}/index.html"
  loop: "{
    { web_hosts }}"

- name: SELinux policy is correct for web site location
# 使用sefcontext模块设置SELinux策略,用httpd_sys_content_t类型标记文档根目录,这样web服务器就可以读取这些文件。
  sefcontext:
    target: '/srv/www(/.*)?'
    setype: httpd_sys_content_t
    state: present

- name: Correct SELinux file context is on web content
# 使用file模块重新标记文件。当setype设置为_default时,将使用策略的默认上下文(前一个任务确保是正确的)。
  file:
    path: /srv/www
    state: directory
    recurse: yes
    follow: no
    setype: _default

- name: Virtual host TLS certs in place
# 使用copy模块将证书和私钥复制到受管理的主机。
  copy:
    src: "{
    { item }}.crt"
    dest: "/etc/pki/tls/certs"
  loop: "{
    { web_hosts }}"

- name: Virtual host TLS private keys in place
  copy:
    src: "{
    { item }}.key"
    dest: "/etc/pki/tls/private"
    mode: '0600'
    owner: root
    group: root
  loop: "{
    { web_hosts }}"

- name: example.com CA cert in place
  copy:
    src: "{
    { cacert_file }}"
    dest: "/etc/pki/tls/certs/{
    { cacert_file }}"

2. 创建httpd.yml剧本。

[student@workstation web-automation]$ cat httpd.yml 
---
- name: Apache HTTP Server web server deployment
  hosts: httpd
  become: true

  tasks:
    - name: Latest software installed for Apache HTTPD
      yum:
        name: "{
    { httpd_packages }}"
        state: present

    - name: Web content is in place
      import_tasks: deploy_content.yml

    - name: Virtual hosts are configured
      template:
        src: "httpd.conf.j2"
        dest: "/etc/httpd/conf.d/{
    { item }}.conf"
      loop: "{
    { web_hosts }}"

    - name: Firewall ports are open
      firewalld:
        service: "{
    { item }}"
        permanent: yes
        immediate: yes
        state: enabled
      loop:
        - https
        - http

    - name: Web server is started and enabled
      service:
        name: httpd
        state: started
        enabled: yes

3. 创建nginx.yml剧本。

[student@workstation web-automation]$ cat nginx.yml 
---
- name: Nginx web server deployment
  hosts: nginx
  become: true

  tasks:
    - name: Latest software installed for nginx
      yum:
        name: "{
    { nginx_packages }}"
        state: present

    - name: Web content is in place
      import_tasks: deploy_content.yml

    - name: Set up nginx serverblock
      template:
        src: "nginx.conf.j2"
        dest: "/etc/nginx/conf.d/{
    { item }}.conf"
      loop: "{
    { web_hosts }}"

    - name: Firewall ports are open
      firewalld:
        service: "{
    { item }}"
        permanent: yes
        immediate: yes
        state: enabled
      loop:
        - https
        - http

    - name: Nginx is enabled and started
      service:
        name: nginx
        state: started
        enabled: yes

4. 语法检查并运行剧本。

[student@workstation web-automation]$ ansible-playbook site.yml

5. 测试访问

完成实验

[student@workstation ~]$ lab web-automation finish

总结

  • 介绍如何使用Ansible部署httpd和nginx。
  • 演示如何配置主页目录并设置HTTPS。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

目录
相关文章
|
15天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
14天前
|
存储 人工智能 缓存
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
|
14天前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
7天前
|
存储 安全 网络安全
阿里云国际站:阿里云服务器端口配置
悟空云@CloudWuKong阿里云是全球领先的云计算服务提供商,为用户提供弹性计算、数据库、存储、网络安全等一系列云计算服务。在使用阿里云服务器时,合理配置端口非常重要,可以提高服务器安全性和稳定性。
|
14天前
|
存储 人工智能 监控
新手小白购买阿里云服务器省钱策略、配置选型与注意事项
针对初次使用阿里云服务器的用户,本文提供系统化的指导方案以优化成本并满足业务需求。首先介绍配置选型,包括实例类型(通用型、计算型、内存型)与基础配置建议;其次阐述省钱策略,如企业认证、合理选择计费模式及批量购买;最后提醒注意事项,涵盖带宽存储规划、地域网络优化及安全管理。新手可通过明确需求、选择配置、优化购买和持续监控四步快速上手,实现高效稳定的云端部署。 注:推荐配置基于2025年阿里云产品体系,具体信息请参考官网。
|
16天前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
2月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
331 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
2月前
|
存储 弹性计算 安全
阿里云服务器配置选择策略参考及后期使用注意事项
对于初次购买阿里云服务器的一些新手用户来说,在云服务器配置选择和后期使用过程中有一些不清楚的地方,小编分享几点阿里云服务器配置选择策略,以及后期使用注意事项,购买过程中注意好下面这些事项,能让我们选对选好阿里云服务器,购买之后,在使用过程中,注意下面这些事项,能够让我们更好、更安全的使用阿里云服务器。下面是小编分享的一份详尽的阿里云服务器配置与使用指南,以供参考和借鉴。
|
2月前
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
4月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
285 3

热门文章

最新文章