linux中编译安装和配置nginx的教程

最近 @大高个 在折腾nginx,一时性起我就在深夜里写下了这篇博文,以记下了我曾经折腾nginx的那些不悔青春,这里以centos为例:

目录约定
首先约定下一些常用的目录,如:

# 根目录挂载
/home/

    # 安装包目录,存放一些常用的安装包
    ./src/
        ./nginx-1.11.1.tar
        ./node-6.2.2.tar
        ./zlib-1.2.8.tar.gz
        ...

    # 程序目录,存放一些编译后(运行中)的程序,以版本区分
    ./local/
        ./nginx-1.11.1/
        ./nginx-1.0.0/
        ./node-6.2.2/
        ...

    # nginx的配置,先有这个目录,具体作用下面说
    ./nginx-conf/

    # 网站总目录,网站是以域名为文件名存放在该目录下
    ./wwwroot/
        ./www.xuexb.com/
        ./www.a.com/
        ...
编译安装nginx
下载安装包并解压
# 进入约定的安装包目录
cd /home/src/

# 下载nginx安装文件,这里以 nginx-1.11.1 为例,其他的nginx包可以去官网查找
wget http://nginx.org/download/nginx-1.11.1.tar.gz

# 把安装包解压,会自动解压到 /home/src/nginx-1.11.1/ 文件夹里
tar xzf nginx-1.11.1.tar.gz

# 创建对应版本的程序目录,这个目录用来存放编译后的文件
mkdir -p /home/local/nginx-1.11.1/
nginx的配置文件
其实完全可以使用nginx的默认配置文件,默认配置文件编译后的地址在程序目录/conf/nginx.conf,但如果你会频繁的更新nginx版本的话配置文件最后"分离",类似前后端分离一样,这样可以少"吵架"(解耦合),我们单独的把nginx的所有配置,包括所有站点的配置、ssl证书都放在/home/nginx-conf/目录里,如:

/home/nginx-conf/

    # nginx配置文件
    ./nginx.conf

    # nginx的其他配置
    ./mime.types

    # 站点配置
    ./conf/
        # www.xxoo.com网站的配置文件
        ./www.xxoo.com.conf
        ./www.a.com.conf
        ...
/home/nginx-conf/conf/目录里存放以网站为单位的配置文件,文件名以网站域名命名,这样可以配置分离,互不影响,而且好定位问题。nginx的一些配置目录结构我创建了个仓库,可访问:github.com/xuexb/learn-nginx 查看和下载

配置nginx安装参数
# 进入安装包解压后的目录
cd /home/src/nginx-1.11.1/

# 开始配置
./configure --prefix=/home/local/nginx-1.11.1 --conf-path=/home/local/nginx-conf/vhost/nginx.conf --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_dav_module --with-http_gzip_static_module --with-http_v2_module
配置里的一些详情介绍:

--prefix 指向安装目录
--conf-path 指向配置文件(nginx.conf),我们不管后续如何升级nginx,配置文件永远用那一个,这样就分离了
--user= 指定程序运行时的非特权用户
--group= 指定程序运行时的非特权用户组
--with-http_realip_module 启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
--with-http_dav_module 启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启
--with-http_gzip_static_module 启用gzip功能

以下是2个可选的,可以删了
--with-http_v2_module 开始http2功能,nginx 1.9.5之后支持该功能,之前叫http_spdy_module
--with-http_ssl_module 开启ssl功能,也就是https,当然你可以删除该参数,开启她需要openssl的依赖,openssl你先看下本机有没有装,没有就下个,百度一堆方法
其他的安装编译配置可点击:nginx编译参数

编译nginx
# 开始编译并安装,可能需要sudo权限
[sudo] make
[sudo] make install
验证是否安装成功
# 进入nginx执行目录
cd /home/local/nginx-1.11.1/sbin/
运行./nginx -v查看版本,结果如:

nginx version: nginx/1.11.1
如果你有开启http_ssl_module,可运行:./nginx -V查看是否支持,结果如:

nginx version: nginx/1.11.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
...
更新版本
当你想升级nginx版本时,可下载、配置、编译安装即可,配置全用/home/local/nginx-conf的,这样对网站的配置无影响,非常方便~

时间: 2024-08-01 23:39:47

linux中编译安装和配置nginx的教程的相关文章

linux中编译安装Varnish3.03及配置

这是关于Varnish3.03编译安装配置的笔记 安装  代码如下 复制代码 yum -y install gcc gcc-c++ file bison patch unzip mlocate flex wget diffutils automake autoconf kernel-devel gd cpp readline-devel openssl openssl-devel vim-minimal nano libjpeg libjpeg       -devel libpng libpn

linux中编译安装openresty

nginx tengine openresty之间是什么关系? tengine相当于是nginx的二次开发,做了一些改动,增加了独有的一些功能 openresty是nginx的增强版,扩展了很多模块,特色是引入了lua支持模块,当然还有非常多个其他的模块,nginx核心使用的是原版nginx,并且使用的较新的mainline版本,比如1.9.3.2中包含的nginx版本为nginx-1.9.3 mainline 编译安装openresty wget https://openresty.org/d

Linux中编译安装MemcacheQ的步骤详解

队列(Queue)是一种常用的数据结构.在队列这种数据结构中,最先插入的元素将会最先被取出:反之最后插入的元素将会最后被取出,因此队列又称为"先进先出"(FIFO:First In First Out)的线性表. 加入元素的一端叫"队尾",取出元素的一端叫"队头".利用消息队列可以很好地异步处理数据的传送和存储,当遇到频繁且密集地向后端数据库中插入数据时,就可采用消息队列来异步处理这些数据写入. MemcacheQ是一款基于Memcache协议的

linux中编译安装PHP7并安装Redis扩展Swoole扩展

编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php 使用的, 如果是apache那么编译参数应该为 --with-apxs2=/usr/local/apache/bin/apxs 编译安装php7 wget -c http://www.php.net/distributions/php-7.0.0.tar.gz tar zxvf php-7.0.0.tar.gz cd php-7.

Linux中ClusterShell安装与配置教程

ClusterShell的安装与配置 ClusterShell的安装很Easy,如果使用APT或YUM包管理方式的话,基本就是一条命令的事儿,我就不说了,这里说一下如何从源代码安装,需要在源代码目录执行如下命令:  代码如下 复制代码 shell> python setup.py install 为了使用的方便,还需要拷贝配置文件到指定目录:  代码如下 复制代码 shell> mkdir /etc/clustershell shell> cp conf/* /etc/clustersh

linux中samba安装与配置方法

一.安装及配置samba  代码如下 复制代码 yum –y install samba* –skip-broken vim /etc/samba/smb.conf [web] path=/usr/local/apache2/htdocs/ browseable=yes writable=yes 二.创建用户并且acl权限配置  代码如下 复制代码 1.useradd apache 2.setfacl -m u:apache:rwx -R /usr/local/apache2/htdocs 3.

linux中编译安装php的参数

php-5.2.14版本  代码如下 复制代码 ./configure –prefix=/usr/local/php-5.2.14 –with-config-file-path=/usr/local/php-5.2.14/etc –with-gd –with-iconv –with-zlib –enable-xml –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curlwrappers

linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程_php技巧

本文实例讲述了linux平台编译安装PHP7并安装Redis扩展与Swoole扩展的方法.分享给大家供大家参考,具体如下: 前面<PHP7安装Redis扩展教程[Linux与Windows平台]>一文告诉读者简单的安装Redis的方法,下面我们来实现在linux中编译安装PHP7并安装Redis扩展与Swoole扩展的方法. 编译安装PHP7并安装Redis扩展Swoole扩展: 在编译php7的机器上已经有编译安装过php5.3以上的版本,从而依赖库都有了 本php7是编译成fpm-php

Linux 有问必答:如何在Ubuntu或者Debian中编译安装ixgbe驱动

Linux 有问必答:如何在Ubuntu或者Debian中编译安装ixgbe驱动 提问: 我想为我的Intel 10G网卡下载安装最新的ixgbe驱动.我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? Intel的10G网卡(比如,82598. 82599. x540)由ixgbe驱动支持.现代的Linux发行版已经带有了ixgbe驱动,通过可加载模块的方式使用.然而,有些情况你希望在你机器上的自己编译安装ixgbe驱动,比如,你想要体验ixbge驱动的最新特性时.同样,内核默认