当前位置:   article > 正文

【Nginx】ubuntu16.04环境Nginx的编译、安装、自启动设置和服务配置_ubuntu16.04 编译方式安装nginx1.25

ubuntu16.04 编译方式安装nginx1.25

ubuntu16.04环境Nginx的编译、安装、自启动设置和服务配置

Nginx (engine x) 是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。

支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

常用做:HTTP代理、反向代理;负载均衡;处理web缓存等

其特点是占有内存少,并发能力强。

在国内广泛应用于互联网服务。

一、编译、安装

1、下载

// 目前最新stable版本:nginx-1.14.2
ubuntu@VM-0-12-ubuntu:~/work$ wget http://nginx.org/download/nginx-1.14.2.tar.gz
  • 1
  • 2

2、编译

(1) 更新源(可选)
ubuntu@VM-0-12-ubuntu:~/work$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
ubuntu@VM-0-12-ubuntu:~/work$ sudo vim /etc/apt/source.list
  • 1
  • 2
# 添加如下内容
deb http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe 
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe 
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe 
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe 
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe 
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main multiverse restricted universe 
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main multiverse restricted universe 
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main multiverse restricted universe 
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main multiverse restricted universe 
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main multiverse restricted universe
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get update
  • 1
(2) 安装依赖
// gcc、g++依赖库
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install build-essential
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install libtool

// pcre依赖库(http://www.pcre.org/)
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install libpcre3 libpcre3-dev

// zlib依赖库(http://www.zlib.net)
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install zlib1g-dev

// ssl依赖库
ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get install openssl
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
(3) 解压、编译、安装
ubuntu@VM-0-12-ubuntu:~/work$ sudo tar -zxvf nginx-1.14.2.tar.gz
ubuntu@VM-0-12-ubuntu:~/work$ cd nginx-1.14.2/
ubuntu@VM-0-12-ubuntu:~/work$ sudo ./configure --prefix=/usr/local/nginx
ubuntu@VM-0-12-ubuntu:~/work$ sudo make
ubuntu@VM-0-12-ubuntu:~/work$ sudo make install
  • 1
  • 2
  • 3
  • 4
  • 5

configure 参数:

可以通过 ./configure --help 命令查看;

  • –prefix=path
    设置安装目录,默认为/usr/local/nginx

  • –sbin-path=path
    设置nginx可执行文件的路径和名称,默认–prefix/sbin/nginx,一般采用默认(如:–sbin-path=/home/nginx1)

  • –conf-path
    设置nginx.conf配件文件的路径,类似–sbin-path参数,默认指定–prefix/conf/nginx.conf(/home/nginx/nginx1.conf)。nginx启动时可以通过-c参数指定配件文件。

  • –pid-path=path
    设置存储主进程id的文件名称,默认为–prefix/logs/nginx.pid,安装完成以后,该名称也可以通过pid指令在nginx.conf配件文件中更改。

  • –error-log-path=path
    设置主请求的错误、警告、诊断的日志文件的名称,默认为–prefix/logs/access.log,安装完成后也可以在nginx.conf配件总指定error_log指令来修改。

  • –http-log-path=path
    设置HTTP服务器的主请求的日志文件的名称,默认为–prefix/logs/access.log。该名称也可以在nginx.conf配置文件中通过access_log指令更改。

  • –user=name
    设置工作进程使用的非特权用户的用户名,默认为nobody。安装完成后可以在nginx.conf中通过user指令修改。

  • –group=name
    设置工作进程使用的非特权用户组的名称,默认组名和–user的名称一致。安装完成后可以在nginx.conf配置文件中通过user指令指定。

  • –with-select-module、–without-select-module
    启用或者禁用一个模块

  • –without-http_gzip_module
    禁用构建gzip压缩模块。构建和运行该模块需要zlib库。

  • –without-http_rewrite_module
    禁止构建允许HTTP服务器重定向和变更请求URI的模块。构建和运行该模块需要PCRE库。

  • –without-http_proxy_module
    禁用HTTP服务器代理模块

  • –with-http_ssl_module
    启用添加HTTPS协议支持到HTTP服务器的模块,该模块默认不启用。构建和运行该模块需要OpenSSL库。

  • –with-pcre=path
    设置PCRE库的路径,该库需要从PCRE网站下载。location指令的正则表达支持需要该库。

  • –with-zlib=path

    设置zlib库的路径,ngx_http_gzip_module模块需要该库。

二、添加为系统服务

1、创建服务文件

ubuntu@VM-0-12-ubuntu:~/work$ sudo vim /lib/systemd/system/nginx.service
  • 1

2、文件内容及说明

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
// 说明
[Unit]		// 服务的说明
Description	// 描述服务
After		// 依赖,当依赖的服务启动之后再启动自定义的服务
 
[Service]		// 服务运行参数的设置
Type=forking	// 后台运行的形式
ExecStart		// 服务的具体运行命令(需要根据路径适配)
ExecReload		// 重启命令(需要根据路径适配)
ExecStop		// 停止命令(需要根据路径适配)
PrivateTmp=True	// 表示给服务分配独立的临时空间
// 注意:启动、重启、停止命令全部要求使用绝对路径
 
[Install]	// 服务安装的相关设置,可设置为多用户


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

Type:

  • Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

  • Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

  • Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes使得systemd在服务进程退出之后仍然认为服务处于激活状态

  • Type=notify:与 Type=simple相同,但约定服务会在就绪后向systemd发送一个信号。这一通知的实现由 libsystemd-daemon.so提供。

  • Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

3、设置开机自启动

// 设置开机启动
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl enable nginx.service

// 停止开机启动
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl disable nginx.service
  • 1
  • 2
  • 3
  • 4
  • 5

4、服务命令

// 开启 nginx 服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl start nginx.service

// 查看状态
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl status nginx.service

// 重启服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl restart nginx.service

// 查看所有服务
ubuntu@VM-0-12-ubuntu:~/work$ sudo systemctl list-units --type=service

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三、配置文件

官方配置说明文档:https://www.nginx.com/resources/wiki/start/

1、配置文件结构

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

// 1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

// 2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

// 3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

// 4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

// 5、location块:配置请求的路由,以及各种页面的处理情况。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

2、我的配置

worker_processes  1;

error_log  logs/error.log  info;

pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

	gzip  			on;
    sendfile        on;
    keepalive_timeout  65;

    server {
		client_max_body_size 4G;

        listen       1024;
        server_name  localhost;

		root /home/ubuntu/nginx/files;

        location / {
	    	autoindex on; 					##显示索引
            autoindex_localtime on;  		##显示时间
	    	server_tokens off;				##隐藏版本号
	    	autoindex_exact_size off;		##显示文件大概大小(K、M、G为单位)
	    	if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$) {	##防止相关文件直接打开预览
            	add_header 'Content-Disposition' 'attachment;';                  
            }       
        }
	}       
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

四、彻底卸载

1、sudo apt-get install 方式安装

  • 停止 nginx 服务

    ubuntu@VM-0-12-ubuntu:~/work$ sudo service nginx stop
    
    • 1
  • 删除nginx,–purge包括配置文件

    ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx
    ubuntu@VM-0-12-ubuntu:~/work$ 
    
    • 1
    • 2
  • 自动移除全部不使用的软件包

    ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get autoremove
    
    • 1
  • 列出与nginx相关的软件 并删除显示的软件

    ubuntu@VM-0-12-ubuntu:~/work$ dpkg --get-selections|grep nginx
    ubuntu@VM-0-12-ubuntu:~/work$ 
    ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx
    ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx-common
    ubuntu@VM-0-12-ubuntu:~/work$ sudo apt-get --purge remove nginx-core
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 验证

    ubuntu@VM-0-12-ubuntu:~/work$ dpkg --get-selections|grep nginx	# 不在显示 nginx 相关内容
    ubuntu@VM-0-12-ubuntu:~/work$ which nginx	# 不在显示 nginx 相关内容
    
    • 1
    • 2

2、源码编译方式安装

// 删除 源码
ubuntu@VM-0-12-ubuntu:~/work$ sudo rm nginx-1.14.2.tar.gz nginx-1.14.2 -rf

// 删除 安装目录
ubuntu@VM-0-12-ubuntu:~/work$ sudo rm /usr/local/nginx -rf

// 删除 服务文件
ubuntu@VM-0-12-ubuntu:~/work$ sudo rm /lib/systemd/system/nginx.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

——2018-12-24——

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/601218
推荐阅读
相关标签
  

闽ICP备14008679号