作者

微信:tangy8080

电子邮箱:914661180@qq.com

更新时间:2019-07-10 20:56:10 星期三

欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程中的编写的文章

如您在阅读过程中发现文章错误,可添加我的微信 tangy8080 进行反馈.感谢您的支持。

文章主题

介绍如何在CentOs7上安装 nginx

在这里,我将nginx安装在k8s-180,k8s-181,k8s-182上.

前置条件

您已经准备好了三台Centos7的主机

正文

安装

安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel wget vim
安装 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。

#下载 PCRE 安装包,下载地址: http://ftp.pcre.org/pub/pcre/pcre-8.35.tar.gz
cd /usr/local/src/
wget http://ftp.pcre.org/pub/pcre/pcre-8.35.tar.gz
#解压并删除压缩包
tar zxvf pcre-8.35.tar.gz
rm pcre-8.35.tar.gz
#进入安装包目录
cd pcre-8.35
#编译安装
./configure
make && make install
#查看pcre版本
pcre-config --version
下载vts虚拟主机流量状态模块[按需]

该模块可以采集到更多的Nginx指标参数,侧重流量采集.如有需要,您可以编译安装

github地址:https://github.com/vozlt/nginx-module-vts#compatibility

cd /usr/local/src
git clone git://github.com/vozlt/nginx-module-vts.git
安装Nginx
#下载 Nginx,下载地址:http://nginx.org/download/nginx-1.14.2.tar.gz
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.14.2.tar.gz
#解开安装包
tar zxvf nginx-1.14.2.tar.gz
rm nginx-1.14.2.tar.gz
#进入安装包目录
cd /usr/local/src/nginx-1.14.2
#编译安装,编译参数视使用场景而定,这里需要使用tcp负载均衡 所以编译了stream模块
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-stream --add-module=/usr/local/src/nginx-module-vts
make
make install
#加入环境变量
vim /etc/profile
##在后面导入nginx的安装路径
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
##刷新配置
source /etc/profile
#查看nginx版本
##查看版本:
nginx -v
##查看详细信息:
nginx -V
  • --add-module:添加了vst模块,后期我们会使用该模块提供的数据导出metrics到promethues
  • --with-stream:支持TCP代理和负载均衡-stream模块
添加nginx用户组

说明:如不添加在启动时会提示 getpwnam("nginx") failed 检查配置文件也不会通过

这里创建的用户是你安装Nginx时,预编译时指定的Nginx用户(1.3 第四条的编译参数)

useradd nginx -s /sbin/nologin -M
测试配置文件的正确性
nginx -t

返回如下信息,表示配置文件语法正确

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

配置

编辑服务文件
cd /lib/systemd/system/

vim nginx.service
[Unit]
Description=nginx service
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
常用命令
systemctl start nginx.service          启动nginx服务
systemctl stop nginx.service  停止服务
systemctl restart nginx.service  重新启动服务
systemctl list-units --type=service 查看所有已启动的服务
systemctl status nginx.service 查看服务当前状态
systemctl enable nginx.service 设置开机自启动
systemctl disable nginx.service 停止开机自启动
配置文件路径
/usr/local/nginx/conf/nginx.conf
VTS配置文件样例(为方便编辑,可用xftp下载下来配置好后传上去)
user  nginx;
worker_processes 8; error_log /usr/local/nginx/logs/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /usr/local/nginx/conf/mime.types;
default_type application/octet-stream;
client_header_buffer_size 100k;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k; #VTS的配置
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_host on; #开启此功能,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个上。 #开启header的下划线支持
underscores_in_headers on;
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 /usr/local/nginx/logs/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on;
#VST server
server {
location /status {
allow 192.168.161.0/24;
allow 10.254.0.0/16;
allow 172.30.0.0/16;
deny all;
vhost_traffic_status off;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
include /etc/nginx/conf.d/*.conf;
}
  • 上述配置描述了基本的VTS配置,如您没有VTS模块.可以删除
  • 当您启用VTS server时,如果处于公网环境,请注意安全.应该避免指标参数被公网任意访问

    这这里,配置了仅内网,k8s Pod网段,k8s svc网段可访问

测试您的安装

访问:http://192.168.161.180/,您应当看到Nginx欢迎页

访问:http://192.168.161.180/status,您应当看到Nginx Vhost Traffic Status页

访问:http://192.168.161.180//status/format/prometheus,您应当看到很多prothues的metrics指标

其中有些指标,在后期做监控时我们会用的到.比如我们可以统计某个server 在一定时间内是否返回了 5xx的代码.从而触发报警

常见问题

1.1 查看已经安装的模块
nginx -V
1.2 执行 nginx -t 是OK的,然而在执行 nginx -s reload 的时候报错

nginx: [error] invalid PID number "" in "/run/nginx.pid"

解决办法

nginx -c /usr/local/nginx/conf/nginx.conf
nginx -s reload
1.3 重新编译nginx
#重新编译时,需确认原始版本和现在的版本一致
cd /usr/local/src/nginx-1.14.2
#配置新的编译参数
./configure 新的参数
#开始重新编译
make
#覆盖原始文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp -rfp /usr/local/src/nginx-1.14.2/objs/nginx /usr/local/nginx/sbin/nginx
#查看是否是预期的编译参数
nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-stream --add-module=/usr/local/src/nginx-module-vts

引用链接

https://github.com/vozlt/nginx-module-vts

1.nginx安装和基本配置的更多相关文章

  1. Nginx安装负载均衡配置 fair check扩展

    前言 本文主要是针对Nginx安装.负载均衡配置,以及fair智能选举.check后端节点检查扩展功能如何扩展,进行讲解说明. fair模块: upstream-fair,“公平的”Nginx 负载均 ...

  2. Nginx安装与运行配置总结

    Nginx安装与运行配置总结 1. 去官网下载对应的nginx包,推荐使用稳定版本 2. 上传nginx到linux系统 3. 安装依赖环境 (1)安装gcc环境 yun install gcc-c+ ...

  3. nginx安装升级及配置详解

    1.简介 2.安装配置 3.配置文件介绍 4.启动.停止.平滑重启.升级 一.Nginx简介 Nginx(engine x)是俄罗斯人Igor Sysoev编写的一款高性能的http和反向代理服务器. ...

  4. nginx安装及基础配置(含jdk安装及配置)

    0.jdk安装配置 #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz m ...

  5. linux centos7 nginx 安装部署和配置

    1/什么是NginxNginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,在高连接并发的情况下Nginx是Apac ...

  6. nginx安装与fastdfs配置--阿里云

    上一篇文章:fastDFS 一二事 - 简易服务器搭建之--阿里云 做了fastDFS的服务安装和配置,接下来我们来看nginx的安装 第一步:安装nginx需要安装的一些环境: 1.例如: yum ...

  7. nginx安装&负载均衡配置&nginx反爬虫&nginx命令

    Nginx安装 wget https://nginx.org/download/nginx-1.14.0.tar.gz tar -zxvf nginx-1.14.0.tar.gz cd nginx-1 ...

  8. Nginx安装及核心配置解析

    安装 使用yum进行安装 yum install -y nginx 查看nginx的安装位置 whereis nginx 启动测试 nginx 核心配置文件结构 读取Nginx自带的Nginx配置文件 ...

  9. Nginx安装及基本配置

    本文内容: 90%来自以下网址:http://www.nginx.cn/install ,修改了一些版本信息 10%来自以下网址:http://nginx.org/en/docs/beginners_ ...

随机推荐

  1. pod管理调度约束、与健康状态检查

    pod的管理 [root@k8s-master ~]# vim pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: ...

  2. windows下如何安装Python、pandas

    windows下如何安装Python.pandas 本篇主要涵盖以下三部分内容: Python.Pycharm的安装 使用Pycharm创建.运行Python程序 安装pandas 1.Python. ...

  3. Azure Terraform(六)Common Module

    一,引言 之前我们在使用 Terraform 构筑一下 Azure 云资源的时候,直接将所以需要创建的资源全面写在 main.tf 这个文件中,这样写主要是为了演示使用,但是在实际的 Terrafor ...

  4. 牛逼!MySQL 8.0 中的索引可以隐藏了…

    MySQL 8.0 虽然发布很久了,但可能大家都停留在 5.7.x,甚至更老,其实 MySQL 8.0 新增了许多重磅新特性,比如栈长今天要介绍的 "隐藏索引" 或者 " ...

  5. 手把手做一个基于vue-cli的组件库(下篇)

    基于vue-cli4的ui组件库,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.接上篇,开工. GitHub源码地址:https://github.com/sq-github/sq-ui ...

  6. 列出HBASE所有表的相关信息,如表名、创建时间等。

    import java.io.IOException; import java.util.Collection; import java.util.Iterator; import org.apach ...

  7. Jenkins部署web项目到Tomcat(shell脚本)

    一.首先配置Publish Over SSH插件 配置地址:系统管理-->系统设置-->Publish over SSH(需要安装Publish over SSH插件) 二.jenkins ...

  8. 关于notepad++不能设置中文的解决方法

    好久没用notepad++了,最近遇到一个base64的音频文件,想起来notepad++挺好用的 于是安装好 然后发现 最新的notepad++竟然不能显示中文界面 这怎么可以呢! 上网搜 果然 作 ...

  9. day133:2RenMJ:TypeScript的变量&函数&类&接口

    目录 1.变量 2.函数 3.类 4.接口 1.变量 1.变量的声明 // 1.即指定数据类型 也指定值 var 变量名:类型 = 值; eg:var username:string = " ...

  10. 日志框架(Log4J、SLF4J、Logback)--日志规范与实践

    文章目录 一.Log4j 1.1新建一个Java工程,导入Log4j包,pom文件中对应的配置代码如下: 1.2resources目录下创建log4j.properties文件. 1.3输出日志 1. ...