bbatsche.nginx
Ansible Nginx Passenger 角色
该角色将安装 Nginx 服务器以及用于服务 Node、Python 或 Ruby 的 Phusion Passenger 绑定。它还可以为指定的域名设置和配置网站。
要求
该角色利用了 Linux 文件系统 ACL 和一个名为“web-admin”的组来授予访问配置目录的权限。你可以手动配置这些步骤,也可以安装 bbatsche.Base
角色。
角色变量
env_name
— 该服务器是否在“开发”、“生产”或其他类型的环境中。默认值为“dev”http_root
— 网站目录应该创建的位置。默认值为“/srv/http”public_directory
— 网站的公共可见目录,例如“public”或“htdocs”。默认值为“public”max_upload_size
— 最大上传大小,以 MB 计。默认值为“10”domain
— 要创建的网站的域名。默认未定义。content_security_policy
— 要添加到域的内容安全策略,格式为字典的列表或布尔值。适当的值将自动加上单引号('
)。默认值:见 defaults/main.ymlnginx_configs
— 要添加到域的server
块末尾的额外配置文件。这些文件应复制到/etc/nginx/conf.d
。在此处为你的特定应用服务器类型添加配置。默认值为空数组passenger_app
— 当前域是否为 Passenger 应用(即,Node、Ruby、Python)?如果应用在更新配置后需要重新启动,这个选项很有用。默认值为否copy_index
— 将 index.html 文件复制到网站。默认值为否。use_ssl
— 是否通过 SSL(实际上是 TLS)提供内容。默认值为否。use_letsencrypt
— 是否使用 Let's Encrypt 为网站生成证书。否则,将使用全服务器的自签名证书。默认值为否。privatekey_bits
— 生成自签名私钥时使用的位数。默认值为 4096。dhparam_bits
— 生成静态 DH 参数证书时使用的位数。默认值为 2048。使用更高位数可能会耗时很多。cert_valid_days
— 自签名证书的有效天数。默认值为 3650 (~1 年)。email_address
— 用于自签名证书和 Let's Encrypt 的电子邮件地址。默认未定义。country_name
— 生成自签名证书时使用的两字母国家缩写。默认未定义。state_name
— 生成自签名证书时使用的州或省名。默认未定义。locality_name
— 生成自签名证书时使用的城市或地方名。默认未定义。org_name
— 生成自签名证书时使用的组织名称。默认未定义。h5bp_commit
— 用于从 HTML5 Boilerplate Server Configs 拉取文件的 Git 哈希或版本号。默认值为“3.1.0”。setuptools_version
— 通过 Pip 安装的setuptools
版本。默认值为 40.6.2。
SSL 和 Let's Encrypt
Let's Encrypt 要求你的 web 服务器可以外部访问,因此在 Vagrant 或 Docker 中生成开发网站时不应使用它。此外,您必须确保在创建证书之前 DNS 配置正确。完成后,将为您的域颁发一个完全支持的、有签名的证书,并创建一个 cron 作业以确保其在将来继续续订。服务器和证书已经针对最佳安全性进行了优化,自 2017 年 10 月起在 SSL Labs 获得“A+”评级。
示例剧本
- hosts: servers
roles:
- { role: bbatsche.Nginx, domain: my-test-domain.test }
许可证
MIT
测试
该角色中包含一组规格,用于单独或整体测试每个任务。要运行这些测试,您首先需要安装 Vagrant 和 VirtualBox。规格文件是使用 Serverspec 编写的,因此您需要 Ruby 和 Bundler。
要运行完整的规格套件:
$ gem install bundler
$ bundle install
$ rake
规格套件将针对 Ubuntu Trusty Tahr (14.04)、Xenial Xerus (16.04) 和 Bionic Beaver (18.04)。
要查看可用的 rake 任务(和规格):
$ rake -T
这些规格并不旨在测试幂等性。它们旨在检查指定的任务是否执行了预期步骤。幂等性是通过集成测试独立测试的。