1、编译安装Nginx

1.1 如何选择web服务器

在实际工作中,我们需要根据业务需求来选择合适的业务服务软件,有关web服务,选择建议如下:

  • 静态业务:若是高并发场景,尽量采用nginx或lighttpd,二者首选nginx
  • 动态业务:理论上采用nginx和apache均可,建议选择nginx,避免相同的业务服务软件多样化,增加额外维护成本。动态业务可以由nginx兼职做前端代理,在根据页面元素的类型或目录,转发到后端相应的服务器处理
  • 既有静态业务又有动态业务:采用nginx

1.2 安装nginx所需要的pcre库

安装pcre库是为了使nginx支持具备URI重写功能的rewrite模块,如果不安装pcre库,则nginx无法使用rewrite模块功能,nginx的rewrite模块功能几乎是企业应用必须的。安装pcre库的过程如下。 采用yum安装方式,推荐方法:

# yum install pcre pcre-devel -y

yum安装后检查版本

# rpm -qa pcre pcre-devel
pcre-devel-8.32-15.el7_2.1.x86_64
pcre-8.32-15.el7_2.1.x86_64

1.3 安装openssl-devel

nginx在使用HTTPS服务的时候要用到此模块,如果不安装openssl相关包,安装nginx的过程中会报错。

# yum install -y openssl openssl-devel

1.4 安装nginx

在实际工作中,选择稳定版时,尽量避免使用最新版本,选择比已出来的最新晚6-10个月的版本比较好。编译nginx软件时,可以使用./configure --help查看相关参数帮助。

# useradd nginx -s /sbin/nologin -M
# tar xf nginx-1.12.0.tar.gz
# cd nginx-1.12.0
# ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.12.0 --with-http_stub_status_module --with-http_ssl_module
# make
# make install

# ln -s /application/nginx-1.12.0 /application/nginx

1.5 启动并检查安装结果

启动前检查配置文件语法

# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.12.0/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.12.0/conf/nginx.conf test is successful

在启动前检查语法非常重要,可以防止因配置错误导致网站重启或重新加载配置等对用户的影响 启动nginx服务

# /application/nginx/sbin/nginx

可以通过curl命令检车是否浏览正常

# curl 127.0.0.1

也可以通过netstat -lnt|grep 80、lsof -i:80检查nginx服务器端口(默认80)来判断nginx是否已启动,或者通过ps -ef|grep nginx检查nginx服务进程来判断,当然最稳妥的方法还是通过url地址来检查。 

1.6 查看nginx编译时的参数

# /application/nginx/sbin/nginx -V
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/application/nginx-1.12.0 --with-http_stub_status_module --with-http_ssl_module

1.7 systemctl启动配置

# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/application/nginx/logs/nginx.pid
ExecStartPre=/application/nginx/sbin/nginx -t -c /application/nginx/conf/nginx.conf
ExecStart=/application/nginx/sbin/nginx -c /application/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

管理

# chmod +x /usr/lib/systemd/system/nginx.service
# systemctl enable nginx.service
# systemctl start nginx.service
# systemctl stop nginx.service
# systemctl reload nginx.service

2.1 配置虚拟主机的步骤

  1. 增加一个完整的server标签段到结尾处。注意要放在http的结束大括号前,也就是将server标签段放入http标签。
  2. 更改server_name及对应网页的root根目录,如果需要其他参数,可以增加或修改。
  3. 创建server_name域名对应网页的根目录,并建立测试文件,如果没有index首页,访问会出现403错误。
  4. 检查nginx配置文件语法,平滑重启nginx服务,快速检查启动结果。
  5. 域名做dns解析,并检查(ping域名看返回的IP是否正确)。
  6. 在浏览器中输入地址访问,用wget或curl接地址访问。

2.2 规范优化nginx配置文件

nginx的主配置文件为nginx.conf,主配置文件包含的所有虚拟主机的子配置文件会统一放入到vhosts目录中,虚拟主机的配置文件安装网站的域名或功能取名,例如www.conf、bbs.conf、blog.conf等。

这里使用参数include,把它放置在nginx中的http区块中,用法如下:

http{
    ...
    include  vhosts/*.conf;  #包含vhosts下所有以conf结尾的文件
}

实施步骤如下:

# cd /application/nginx/conf/
# mkdir vhosts
# vim nginx.conf
...
http{
    ...
    include vhosts/*.conf;
}

# cd vhosts
# vim www.heboan.conf
server {
    listen  80;
    server_name  www.heboan.com;
    location / {
        root  html/www;
        index index.html index.htm;
    }
}

server {
    listen  80;
    server_name  bbs.heboan.com;
    location / {
        root  html/bbs;
        index index.html index.htm;
    }
}

2.3 虚拟主机的别名配置

虚拟主机别名,就是为了虚拟主机设置 除了主域名以外的一个或多个域名名字,这样就能实现用户访问的多个域名对应同一个虚拟主机网站的功能。以www.heboan.com域名的虚拟主机为例,为其增加一个别名heboan.com,使得访问heboan.com时,在该域名出现的网站内容和访问www.heboan.com得到的结果是一样的,这是企业场景中活生生的基本需求配置:

server {
    listen  80;
    server_name  www.heboan.com heboan.com;
    location / {
        root  html/www;
        index index.html index.htm;
    }
}

3.1 添加模块(非覆盖安装)

nginx已经安装好了,现在需要添加一个未被编译安装的模块,需要重新编译,这里以nginx-module-vts模块为例

nginx-module-vts可查询配置的虚拟主机通讯状态模块,类似stub_status_module模块,并且比这个统计的粒度更细,默认未包含在nginx的发布包中,需要单独下载:

# git clone git://github.com/vozlt/nginx-module-vts.git

查看原来编译时都带了那些参数

# /application/nginx/sbin/nginx -V
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx
--prefix=/application/nginx-1.12.0
--with-http_stub_status_module
--with-http_ssl_module

添加模块nginx-module-vts

# cd nginx-1.12.0
# ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.12.0 --with-http_stub_status_module --with-http_ssl_module --add-module=/root/tools/nginx-module-vts

# make
# 不要make install,否则会覆盖安装

关闭nginx

# systemctl stop nginx.service

替换二进制文件

# cp /application/nginx/sbin/nginx /application/nginx/sbin/nginx.bak
# cp ./objs/nginx /application/nginx/sbin/

启动nginx,查看模块

# systemctl start nginx.service
# /application/nginx/sbin/nginx -V
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx
--prefix=/application/nginx-1.12.0
--with-http_stub_status_module
--with-http_ssl_module
--add-module=/root/tools/nginx-module-vts

模块添加成功

配置nginx-module-vts

# vim /application/nginx/conf/nginx.conf
http {
    ...
    vhost_traffic_status_zone;
}

# vim /application/nginx/conf/vhosts/status.heboan.conf
server {
    listen 80;
    server_name  status.heboan.com;

    location /{
        vhost_traffic_status_display;
        vhost_traffic_status_display_format html;
        access_log off;
    }
}

检查配置是否正确,重载配置

# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.12.0/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.12.0/conf/nginx.conf test is successful

# /application/nginx/sbin/nginx -s reload

浏览器访问http://status.heboan.com

如果我们只是想使用官方的status,只需要改下status.heboan.conf

server {
    listen 80;
    server_name  status.heboan.com;

    location /{
        stub_status on;
        access_log off;
    }
}

  

时间: 2024-10-19 03:54:30

1、编译安装Nginx的相关文章

RedHat7编译安装Nginx

下载Nginx源码包# wget http://nginx.org/download/nginx-1.8.0.tar.gz 解压Nginx源码包# tar -zxvf nginx-1.8.0.tar.gz && cd nginx-1.8.0 安装依赖软件# yum -y install gcc pcre-devel openssl-devel zlib-devel 编译安装Nginx# ./configure \  --sbin-path=/usr/local/nginx/nginx \ 

编译安装nginx并修改版本头信息—参考实例

今天做实验的时候,想起我那台yum安装的nginx+php-fpm+mysql服务器上的nginx版本有点低了,并且还要加两个第3方模块,就去nginx官网下载了最新稳定版nginx-1.0.6,好了,废话不多说看教程吧.  系统版本: centos 5.6  ip: 192.168.1.200  需要的软件包:nginx-1.0.6.tar.gz Nginx-accesskey-2.0.3.tar.gz ngx_cache_purge-1.3.tar.gz(这3个包可以自己去下载,我就不提供了

centos 7编译安装nginx

禁用防火墙 systemctl disable firewalld systemctl stop firewalld setenforce 0 安装pcre库 yum install pcre* 安装zlib库 yum install zlib* 增加nginx用户:useradd nginx -G nginx 编译安装nginx: ./configure --prefix=/usr/local/nginx --error-log-path=/var/log/nginx/error.log --

<深入剖析Nginx> 编译安装nginx 以及使用eclipse编译开发nginx

明年就要找工作了,看看经典的开源项目-nginx,图书馆借了本<深入剖析Nginx>,开始研读,边读边做笔记. 第一篇是nginx的环境配置相关 参考帖子:Nginx模块开发---Linux使用eclipse编译,调试Nginx 文章5:Linux下使用Eclipse进行Nginx 模块开发 具体是参考上面的帖子和书,下面大概讲下步骤: 1. 经典的三个步骤,来编译安装nginx: 先下载源码: 官网下载链接 ./configure --with-debug --prefix=/home/zy

linux编译安装nginx

linux下编译安装nginx,从nginx官网下载nginx原代码,解压到某个目录,执行如下命令 # ./configure --prefix=/usr/local/nginx 配置nginx编译生成的目录,nginx的shell脚本将存储在/user/local/nginx/sbin目录,配置文件将存储在/user/local/nginx/conf目录下 nginx支持正则匹配路径,依赖pcre包,编译之前请先安装此包.如果要使用https,还需要openssl.如果要使用gzip,需要zl

编译安装Nginx+Mariadb+Memcache+php实现Nginx与Memcache结合

前端Nginx配置: 1.安装nginx 创建Nginx用户.创建/var/tmp/nginx目录并编译安装 useradd -r nginx mkdir /var/tmp/nginx tar xf nginx-1.4.7.tar.gz ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log -

centos7下编译安装nginx并实现日志轮替

centos7编译安装nginx: 首先确保系统上存在编译安装使用的必要工具运行:  # yum groupinstall "development tools" "server platform development" 1 下载PCRE version 4.4 - 8.40 (ngx_http_rewrite_module模块需要)    # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/p

开发人员学Linux(5):CentOS7编译安装Nginx并搭建Tomcat负载均衡环境

1.前言在上一篇讲述了JMeter的使用,在本篇就可以应用得上了.本篇将讲述如何编译安装Nginx并利用前面的介绍搭建一个负载均衡测试环境.2.软件准备Nginx-1.12.0,下载地址:https://nginx.org/download/nginx-1.12.0.tar.gzTomcat8(本系列已介绍过如何下载和安装)JMeter(本系列已介绍过如何下载和使用)注:VirtualBox宿主机IP为"192.168.60.16,虚拟机IP为:192.168.60.198,虚拟机通过桥接方式接

Centos7 编译安装 Nginx、MariaDB、PHP

前言 本文主要大致介绍CentOS 7下编译安装Nginx.MariaDB.PHP.面向有Linux基础且爱好钻研的朋友.技艺不精,疏漏再所难免,还望指正. 环境简介: 系统: CentOS 7,最小化安装 IP: 192.168.170.128 Nginx: 1.6.1 MariaDB: 5.5.39 PHP: 5.5.16 1.准备工作 1.1.系统硬件准备 尽管Linux能最大化发挥硬件资源,但RHEL/CentOS随着版本增加对最低硬件的配置也越来越高[1].RHEL7/CentOS最低

linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版本非常多,相关的编译器,解释器也有很多,很多还有最小系统,嵌入式系统等等.同一功能的软件如果只有编译好的软件包,在其它linux的平台上,可能并不能正常安装运行,在此情况下,源码包编译安装出现了.所以本文的重点是以nginx为例,给出源码包编译安装的详细过程,同时带你手工编写自动化运行脚本. 准备工