web服务之NGinx安装
Posted LK丶旋律
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web服务之NGinx安装相关的知识,希望对你有一定的参考价值。
系统和EPEL源的中nignx版本较旧,可以安装官方源的最新版本
官方包链接:
http://nginx.org/en/linux_packages.html
官方 yum 源链接
http://nginx.org/en/linux_packages.html#RHEL-CentOS
范例: 通过官方 yum 源安装nginx
[root@centos8 ~]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
范例:
#带有自动日志切割功能
[root@centos8 ~]# cat /etc/logrotate.d/nginx /var/log/nginx/*log {
create 0664 nginx root
daily
rotate 10
missingok
notifempty
compress
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
使用安装完成的二进制文件nginx
[root@centos8 ~]# nginx -h
nginx version: nginx/1.18.0
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit #显示版本和编译参数
-t : test configuration and exit #测试配置文件是否异
常
-T : test configuration, dump it and exit #测试并打印
-q : suppress non-error messages during configuration testing #静默模
式
-s signal : send signal to a master process: stop, quit, reopen, reload #发
送信号,reload信号 会生成新的worker,但master不会重新生成
-p prefix : set prefix path (default: /etc/nginx/)
#指定Nginx 目录
-c filename : set configuration file (default: /etc/nginx/nginx.conf)
#配置文件路径
-g directives : set global directives out of configuration file#设置全局指令,注意
和配置文件不要同时配置,否则冲突
验证 Nginx
[root@centos8 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@centos8 ~]# nginx -V
nginx version: nginx/1.18.0
built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)
built with OpenSSL 1.1.1c FIPS 28 May 2019
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modulespath=/
usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-logpath=/
var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pidpath=/
var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temppath=/
var/cache/nginx/client_temp --http-proxy-temppath=/
var/cache/nginx/proxy_temp --http-fastcgi-temppath=/
var/cache/nginx/fastcgi_temp --http-uwsgi-temppath=/
var/cache/nginx/uwsgi_temp --http-scgi-temppath=/
var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --withfile-
aio --with-threads --with-http_addition_module --withhttp_
auth_request_module --with-http_dav_module --with-http_flv_module --withhttp_
gunzip_module --with-http_gzip_static_module --with-http_mp4_module --withhttp_
random_index_module --with-http_realip_module --withhttp_
secure_link_module --with-http_slice_module --with-http_ssl_module --withhttp_
stub_status_module --with-http_sub_module --with-http_v2_module --with-mail
--with-mail_ssl_module --with-stream --with-stream_realip_module --withstream_
ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -
Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -
fexceptions -fstack-protector-strong -grecord-gcc-switches -
specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhatannobin-
cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clashprotection
-fcf-protection -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
范例:Nginx 启动文件
[root@centos8 ~]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
Nginx 编译安装
编译器介绍
源码安装需要提前准备标准的编译器,GCC的全称是(GNU Compiler collection),其有GNU开发,并以
GPL即LGPL许可,是自由的类UNIX即苹果电脑Mac OS X操作系统的标准编译器,因为GCC原本只能处理C语
言,所以原名为GNU C语言编译器,后来得到快速发展,可以处理C++,Fortran,pascal,objective-
C,java以及Ada等其他语言,此外还需要Automake工具,以完成自动创建Makefile的工作,Nginx的一些
模块需要依赖第三方库,比如: pcre(支持rewrite),zlib(支持gzip模块)和openssl(支持ssl模
块)等。
官方源码包下载地址:
https://nginx.org/en/download.html
范例: 编译安装
[root@centos8 ~]# yum -y install gcc pcre-devel openssl-devel zlib-devel
[root@centos8 ~]# useradd -s /sbin/nologin nginx
[root@centos8 ~]# cd /usr/local/src/
[root@centos8 src]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
[root@centos8 src]# tar xf nginx-1.18.0.tar.gz
[root@centos8 src]# cd nginx-1.18.0/
[root@centos8 nginx-1.18.0]#./configure --prefix=/apps/nginx \\
--user=nginx \\
--group=nginx \\
--with-http_ssl_module \\
--with-http_v2_module \\
--with-http_realip_module \\
--with-http_stub_status_module \\
--with-http_gzip_static_module \\
--with-pcre \\
--with-stream \\
--with-stream_ssl_module \\
--with-stream_realip_module
[root@centos8 nginx-1.18.0]# make && make install
#修改权限
[root@centos8 nginx-1.18.0]# chown -R nginx.nginx /apps/nginx
#生成目录如下:
[root@centos8 nginx-1.18.0]#ll /apps/nginx/
total 0
drwxr-xr-x 2 root root 333 Sep 22 18:49 conf
drwxr-xr-x 2 root root 40 Sep 22 18:49 html
drwxr-xr-x 2 root root 6 Sep 22 18:49 logs
drwxr-xr-x 2 root root 19 Sep 22 18:49 sbin
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他
的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和
fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其
复制为并将default去掉即可。
html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web
文件是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比
如/var/logs/nginx里面。
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。
范例:创建 Nginx 自启动文件
#复制同一版本的nginx的yum安装生成的service文件
[root@centos8 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
#创建目录
[root@centos8 ~]# mkdir /apps/nginx/run/
#修改配置文件
[root@centos8 ~]# vim /apps/nginx/conf/nginx.conf
pid /apps/nginx/run/nginx.pid;
验证 Nginx 自启动文件
[root@centos8 ~]# systemctl daemon-reload
[root@centos8 ~]# systemctl enable --now nginx
案例:一键安装nginx脚本
[root@sz-kx-centos8 ~]# cat install_nginx.sh
#!/bin/bash
#
#********************************************************************
#Author: xuanlv
#Date: 2021-06-09
#FileName: install_nginx.sh
#Description: The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
NGINX_URL=http://nginx.org/download/
NGINX_FILE=nginx-1.18.0
TAR=.tar.gz
SRC_DIR=/usr/local/src/
NGINX_INSTALL_DIR=/apps/nginx
CPUS=`lscpu | awk '/^CPU\\(s\\)/{print $2}'`
GREEND="echo -e \\E[1;32m"
RED="echo -e \\E[1;31m"
END="\\E[0m"
os_type(){
awk -F'[ "]' '/^NAME/{print $2}' /etc/os-release
}
os_version(){
awk -F'"' '/^VERSION_ID/{print $2}' /etc/os-release
}
check(){
[ -e ${NGINX_INSTALL_DIR} ] && { ${GREEND} "nginx 已安装,请卸载后再安装"${END}; exit; }
cd ${SRC_DIR}
if [ -e ${NGINX_FILE}${TAR} ];then
${GREEND}"相关文件已准备好"${END}
else
${GREEND}"开始下载nginx源码包"${END}
if rpm -q wget &> /dev/null || yum install -y wget &> /dev/null
then
wget ${NGINX_URL}${NGINX_FILE}${TAR} &> /dev/null
[ -f ${SRC_DIR}${NGINX_FILE}${TAR} ] && ${GREEND}"nginx源码包下载成功!"${END} || { ${RED}"下载 ${NGINX_FILE}${TAR}文件失败"${END}; exit; }
else
dpkg -s wget &> /dev/null || apt install -y wget
wget ${NGINX_URL}${NGINX_FILE}${TAR} &> /dev/null
[ -f ${SRC_DIR}${NGINX_FILE}${TAR} ] && ${GREEND}"nginx源码包下载成功!"${END} || { ${RED}"下载 ${NGINX_FILE}${TAR}文件失败"${END}; exit; }
fi
[ $? -ne 0 ] && { ${RED}"下载 ${NGINX_FILE}${TAR}文件失败"${END}; exit; }
fi
}
install_nginx(){
${GREEND}"开始安装nginx"${END}
if id nginx &> /dev/null;then
${GREEND}"nginx用户已存在"${END}
else
useradd -s /sbin/nologin -r nginx
${GREEND}"创建nginx用户"${END}
fi
${GREEND}"开始安装nginx依赖包"${END}
if [ `os_type` == "CentOS" -a `os_version` == '8' ];then
yum -q install -y make gcc-c++ libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed
elif [ `os_type` == "CentOS" -a `os_version` == '7' ];then
yum -q install -y make gcc pcre-devel openssl-devel zlib-devel perl-ExtUtils-Embed
else
apt update &> /dev/null
apt -y install make gcc libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev &> /dev/null
fi
cd $SRC_DIR
tar xf ${NGINX_FILE}${TAR}
NGINX_DIR=`echo ${NGINX_FILE}${TAR}| sed -nr 's/^(.*[0-9]).*/\\1/p'`
cd ${NGINX_DIR}
./configure --prefix=${NGINX_INSTALL_DIR} \\
--user=nginx \\
--group=nginx \\
--with-http_ssl_module \\
--with-http_v2_module \\
--with-http_realip_module \\
--with-http_stub_status_module \\
--with-http_gzip_static_module \\
--with-pcre --with-stream \\
--with-stream_ssl_module \\
--with-stream_realip_module
make -j ${CPUS} && make install
[ $? -eq 0 ] && ${GREEND}"nginx编译安装成功"${END} || { ${RED}"nginx编译安装失败,退出"${END}; exit; }
cat > /etc/profile.d/nginx.sh <<EOF
#!/bin/bash
PATH=${NGINX_INSTALL_DIR}/sbin:${PATH}
EOF
[ $? -eq 0 ] && source /etc/profile.d/nginx.sh
cat > /lib/systemd/system/nginx.service <<-EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=${NGINX_INSTALL_DIR}/logs/nginx.pid
ExecStartPre=/bin/rm -f ${NGINX_INSTALL_DIR}/logs/nginx.pid
ExecStartPre=${NGINX_INSTALL_DIR}/sbin/nginx -t
ExecStart=${NGINX_INSTALL_DIR}/sbin/nginx
ExecReload=/bin/kill -s HUP \\$MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now nginx &> /dev/null
systemctl is-active nginx &> /dev/null || { ${RED}"nginx启动失败,退出"${END}; exit; }
${GREEND}"nginx安装完成!!!"${END}
}
main(){
check
install_nginx
}
main
利用 ansible 的roles 实现 nginx 编译安装
注意:如果需要安装第三方包最好换个路径,不然ansible执行会报错,自己挖的坑,自己承受吧。(编译添加第三方包这里不演示了,因为全部的路径都要改) 这个roles需要有基础的,零基础不建议看
在编译NGINX时需要第三方包的加入下面两条命令:
--add-module=/xxx/ansible/roles/nginx/meta/echo-nginx-module \\
--add-module=/xxx/ansible/roles/nginx/meta/ngx_cache_purge \\
# 下载第三包
[root@sz-kx-centos8 ~]# yum install git -y
[root@sz-kx-centos8 ~]# git clone https://github.com/openresty/echo-nginx-module.git
[root@sz-kx-centos8 ~]# git clone https://github.com/FRiCKLE/ngx_cache_purge.git
# 本次roles整个结构如下:
[root@sz-kx-centos8 /etc/ansible/roles]# tree nginx/ -L 2
nginx/
├── files
│ ├── GeoIP-1.6.12.tar.gz
│ ├── nginx-1.18.0.tar.gz
│ ├── openssl-1.1.1k.tar.gz
│ ├── pcre-8.44.tar.gz
│ └── zlib-1.2.11.tar.gz
├── handlers
│ └── main.yml
├── meta
│ ├── echo-nginx-module
│ └── ngx_cache_purge
├── tasks
│ ├── config.yml
│ ├── group.yml
│ ├── install_package.yml
│ ├── install.yml
│ ├── main.yml
│ ├── service.yml
│ ├── start.yml
│ ├── unarchive.yml
│ └── user.yml
├── templates
│ ├── nginx.conf.j2
│ └── nginx.service.j2
└── vars
└── main.yml
8 directories, 18 files
定义变量
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/vars/main.yml
app_dir: /apps/nginx
src_dir: /usr/local/src
nginx_version: nginx-1.18.0
openssl_version: openssl-1.1.1k
pcre_version: pcre-8.44
zlib_version: zlib-1.2.11
geoip_version: GeoIP-1.6.12
tar_type: .tar.gz
group_name: nginx
user_name: nginx
uid: 80
gid: 80
centos7_packages: [ make,gcc-c++,pcre-devel,openssl-devel,zlib-devel,perl-ExtUtils-Embed ]
centos8_packages: [ make,gcc-c++,libtool,pcre,pcre-devel,zlib,zlib-devel,openssl,openssl-devel,perl-ExtUtils-Embed ]
ubuntu_packages: [ make,gcc,libpcre3,libpcre3-dev,openssl,libssl-dev,zlib1g-dev,libapr1-dev,libaprutil1-dev,libgeoip-dev,build-essential,gzip,bzip2,libtool ]
定义模板配置文件
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/templates/nginx.conf.j2
user {{ user_name }};
worker_processes {{ ansible_processor_vcpus }};
error_log {{ app_dir }}/logs/error.log;
pid {{ app_dir }}/run/nginx.pid;
include {{ app_dir }}/conf.d/*.conf;
events {
worker_connections 65535;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log {{ app_dir }}/logs/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include mime.types;
default_type application/octet-stream;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
定义启动文件
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/templates/nginx.service.j2
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile={{ app_dir }}/run/nginx.pid
ExecStartPre=/bin/rm -f {{ app_dir }}/run/nginx.pid
ExecStartPre={{ app_dir }}/sbin/nginx -t
ExecStart={{ app_dir }}/sbin/nginx
ExecReload=/bin/kill -s HUP {{ app_dir }}/run/nginx.pid
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
编写 handler 文件
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/handlers/main.yml
---
- name: restart Nginx
service: name=nginx state=restarted
- debug: msg="nginx start successfull"
定义任务的执行顺序
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/main.yml
- include: install_package.yml
- include: group.yml
- include: user.yml
- include: unarchive.yml
- include: install.yml
- include: config.yml
- include: service.yml
- include: start.yml
按系统安装依赖包
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/install_package.yml
- name: yum nginx packages to centos7
yum: name={{ centos7_packages }}
when: ansible_distribution_major_version == "7"
- name: yum nginx packages to centos8
yum: name={{ centos8_packages }}
when: ansible_distribution_major_version == "8"
- name: apt nginx packages to ubuntu
apt: name={{ ubuntu_packages }}
when: ansible_os_family == "Debian"
创建组
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/group.yml
---
- name: delete {{ app_dir }}
file: path={{ app_dir }} state=absent
ignore_errors: True
- name: create {{ app_dir }}
file: path={{ app_dir }} state=directory owner=root group=root mode=755
- name: create group
group: name={{ group_name }} gid={{ gid }} system=yes
ignore_errors: True
创建用户
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/user.yml
---
- name: create user
user: name={{ user_name }} uid={{ uid }} group={{ group_name }} shell=/sbin/nologin system=yes create_home=no home={{ app_dir }}/conf/nginx
ignore_errors: True
解包
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/unarchive.yml
---
- name: delete {{ src_dir }}
file: path={{ src_dir }} state=absent
ignore_errors: True
- name: create {{ src_dir }}
file: path={{ src_dir }} state=directory owner=root group=root mode=755
- name: unarchive geoip file
unarchive: src="files/{{ geoip_version }}{{ tar_type }}" dest={{ src_dir }} owner=root remote_src=no
- name: unarchive pcre file
unarchive: src="files/{{ pcre_version }}{{ tar_type }}" dest={{ src_dir }} owner=root remote_src=no
- name: unarchive zlib file
unarchive: src="files/{{ zlib_version }}{{ tar_type }}" dest={{ src_dir }} owner=root remote_src=no
- name: unarchive openssl file
unarchive: src="files/{{ openssl_version }}{{ tar_type }}" dest={{ src_dir }} owner=root remote_src=no
- name: unarchive nginx file
unarchive: src="files/{{ nginx_version }}{{ tar_type }}" dest={{ src_dir }} owner=root remote_src=no
- name: build geoip
shell: chdir={{ src_dir }}/{{ geoip_version }} ./configure && make -j {{ ansible_processor_vcpus }} && make install
编译安装NGINX
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/install.yml
- name: configure nginx
shell:
chdir={{ src_dir }}/{{ nginx_version }} \\
./configure \\
--prefix={{ app_dir }} \\
--user={{ user_name }} \\
--group={{ group_name }} \\
--sbin-path={{ app_dir }}/sbin/nginx \\
--conf-path={{ app_dir }}/conf/nginx.conf \\
--pid-path={{ app_dir }}/run/nginx.pid \\
--with-http_auth_request_module \\
--with-http_realip_module \\
--with-http_v2_module \\
--with-debug \\
--with-http_random_index_module \\
--with-http_sub_module \\
--with-http_addition_module \\
--with-http_secure_link_module \\
--with-http_geoip_module \\
--with-http_ssl_module \\
--with-stream_ssl_module \\
--with-stream_realip_module \\
--with-stream_ssl_preread_module \\
--with-stream \\
--with-http_slice_module \\
--with-threads \\
--with-http_gzip_static_module \\
--with-http_gunzip_module \\
--with-http_stub_status_module \\
--with-file-aio \\
--with-pcre={{ src_dir }}/{{ pcre_version }} \\
--with-zlib={{ src_dir }}/{{ zlib_version }} \\
--with-openssl={{ src_dir }}/{{ openssl_version }}
- name: install nginx
shell:
chdir={{ src_dir }}/{{ nginx_version }} make -j {{ ansible_processor_vcpus }} && make install
- debug: msg="nginx install successfull"
copy配置文件
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/config.yml
- name: template config to remote hosts
template: src=nginx.conf.j2 dest={{ app_dir }}/conf/nginx.conf
notify:
- restart Nginx
copy启动文件
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/service.yml
---
- name: set lib
shell: echo "/usr/local/lib" >> /etc/ld.so.conf && ldconfig
- name: set nginx to profile PATH
shell: echo PATH={{ app_dir }}/sbin:$PATH > /etc/profile.d/nginx.sh
- name: copy nginx.service to centos
template: src=nginx.service.j2 dest=/usr/lib/systemd/system/nginx.service
notify: restart Nginx
when: ansible_os_family == "RedHat"
- name: copy nginx.service to ubuntu
template: src=nginx.service.j2 dest=/lib/systemd/system/nginx.service
notify: restart Nginx
when: ansible_os_family == "Debian"
- name: reload systemd manager configuration
shell: systemctl daemon-reload
启动NGINX
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/nginx/tasks/start.yml
- name: start nginx.service
service: name=nginx state=started enabled=yes
- debug: msg="nginx start succesfull"
启用某个主机组作为roles角色
[root@sz-kx-centos8 ~]# cat /etc/ansible/roles/install_nginx.yml
---
- hosts: webser
remote_user: root
roles:
- nginx
切换到roles目录下
[root@sz-kx-centos8 ~]# cd /etc/ansible/roles/
[root@sz-kx-centos8 /etc/ansible/roles]# ls
install_nginx.yml nginx
[root@sz-kx-centos8 /etc/ansible/roles]# pwd
/etc/ansible/roles
检查配置(这里检查不会解包,执行过程会报错)
[root@sz-kx-centos8 /etc/ansible/roles]# ansible-playbook -C install_nginx.yml
执行
[root@sz-kx-centos8 /etc/ansible/roles]# ansible-playbook install_nginx.yml
这步可以使用ansible的shell模块远程检查端口80是否已经打开
[root@sz-kx-centos8 /etc/ansible/roles]# ansible webser -m shell -a "ss -tnlp | grep 80"
172.31.0.28 | CHANGED | rc=0 >>
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=7474,fd=8),("nginx",pid=7473,fd=8),("nginx",pid=7472,fd=8))
LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=7474,fd=9),("nginx",pid=7473,fd=9),("nginx",pid=7472,fd=9))
172.31.0.29 | CHANGED | rc=0 >>
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=109659,fd=6),("nginx",pid=109658,fd=6),("nginx",pid=109657,fd=6))
LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=109659,fd=7),("nginx",pid=109658,fd=7),("nginx",pid=109657,fd=7))
172.31.0.17 | CHANGED | rc=0 >>
LISTEN 0 128 *:80 *:* users:(("nginx",pid=57124,fd=6),("nginx",pid=57123,fd=6),("nginx",pid=57122,fd=6))
LISTEN 0 128 :::80 :::* users:(("nginx",pid=57124,fd=7),("nginx",pid=57123,fd=7),("nginx",pid=57122,fd=7))
报错:
编译时报错:"./configure: error: no /etc/ansible/roles/nginx/meta/echo-nginx-module/config was found"]},,原因是找不到这个包???
解决方法:1)编译安装NGINX时不要加这两个进去编译:
--add-module=/xxx/ansible/roles/nginx/meta/echo-nginx-module \\
--add-module=/xxx/ansible/roles/nginx/meta/ngx_cache_purge \\
2)如果真需要这第三方包的,目前不确定原因,据说是因为/etc/ansible报错,重新做一个roles角色路径吧。。。
以上是关于web服务之NGinx安装的主要内容,如果未能解决你的问题,请参考以下文章