源码方式安装nginx及其依赖并设置服务开机启动

简介: 源码方式安装nginx及其依赖并设置服务开机启动

【1】Nginx简介

Nginx是一款开源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务。

① 工作原理


Nginx由内核和模块组成,完成工作是通过查找配置文件将客户端请求映射到一个location block(location是用于URL匹配的命令),location配置的命令会启动不同模块完成工作。


Nginx模块分为核心模块,基础模块和第三方模块。


核心模块:HTTP模块、EVENT模块(事件)、MAIL模块。

基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块、HTTP Rewrite模块。

第三方模块:HTTP Upstream Request Hash模块、Notice模块、HTTP Access Key模块。


aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMjA1MTU0NzU0MjIz.png


② 性能优势


web服务器,处理静态文件、索引文件以及自动索引效率高。

代理服务器,快速高效反向代理,提升网站性能。

负载均衡器,内部支持Rails和PHP,也可支持HTTP代理服务器,对外进行服务。同时支持简单容错和利用算法进行负载均衡。

性能方面,Nginx专门为性能设计,实现注重效率。采用Poll模型,可以支持更多的并发连接,并在大并发时占用很低内存。

稳定性方面,采用分阶段资源分配技术,使CPU资源占用率低。

高可用性方面,支持热备,启动迅速。


【2】安装nginx及其依赖

① gcc 安装


安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install -y gcc gcc-c++

② PCRE pcre-devel 安装


PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。


yum命令如下:

yum install -y pcre pcre-devel


③ zlib 安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。


yum命令如下:

yum install -y zlib zlib-devel

④ OpenSSL 安装


OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。


yum命令如下:

yum install -y openssl openssl-devel

⑤ nginx_upstream_jvm_route


nginx_upstream_jvm_route 是一个nginx的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。


简单来说,它是基于cookie中的JSESSIONID来决定将请求发送给后端的哪个server,nginx_upstream_jvm_route会在用户第一次请求后端server时,将响应的server标识绑定到cookie中的JSESSIONID中,从而当用户发起下一次请求时,nginx会根据JSESSIONID来决定由哪个后端server来处理。


可以直接使用yum命令组合安装依赖:

yum install -y pcre-devel zlib-devel openssl-devel


⑥ 这里采用源码方式安装nginx与依赖模块,如下图:

  • 下载上述源码包;
  • 将其统一上传到服务器指定路径下,如/home/softinstall/nginx ;
  • 执行脚本,如果提示无权限则执行如下命令chmod 755 ./nginx-install.sh


默认安装后的nginx路径:/usr/local/nginx .


【3】配置服务并设置开机启动

① 编写服务脚本

文件名为:nginx

#!/bin/sh
#
# chkconfig: 35 80 20
# description: nginx Servlet Container
#
#
# match these values to your environment:
# Source function library.
. /etc/rc.d/init.d/functions
RETVAL=0
prog="nginx"
NGINX=/usr/local/nginx
start() {
     $NGINX/sbin/nginx
     echo $"Starting $prog: "
     return $RETVAL
  }
stop() {
     $NGINX/sbin/nginx -s stop
     echo $"Stopping $prog: "
  }
# See how we were called.
case "$1" in
    start)
       start
       ;;
     stop)
      stop
       ;;
     status)
       status $prog
       RETVAL=$?
       ;;
     restart)
       stop
       start
       ;;
      *)
echo "nginx service is;Usage: $0 {start|stop|restart}"
       ;;
esac
exit $RETVAL

② 放在指定路径并添加开机启动

路径:/etc/rc.d/init.d/nginx

执行如下命令:

chmod 755 /etc/rc.d/init.d/nginx
chkconfig nginx on
chkconfig --list 
//查看服务列表

③ 使用命令操作nginx

// Centos7 以前
service nginx (start|stop|restart)
//Centos7
systemctl  (start|stop|restart) nginx


④ 查看nginx


⑤ 进入目录操作nginx

nginx执行文件在/usr/local/nginx/sbin/nginx。可以在/usr/local/nginx/sbin路径下使用如下命令:

//进入到sbin目录
cd /usr/local/nginx/sbin/
./nginx //启动
./nginx -s stop //快速停止
./nginx -s reload //重新加载配置文件
./nginx -s quit &&./nginx //先停止再启动(建议使用)


快速退出:

/nginx -s stop

立即退出nginx,不管当前请求是否处理完。

平稳退出

nginx -s quit

该命令可以使当前的worker processes处理完当前请求再退出。


【4】浏览器测试

浏览器输入linux ip:

如上图所示,则表示成功!

Note


  • nginx默认监听80端口,所以浏览器测试直接输入ip即可。
  • 本机环境已经关闭Centos7的默认防火墙–firewall,并安装且配置了iptables。
  • 默认虚拟主机root根目录为nginx安装路径:/usr/local/nginx/html


在没有修改默认配置情况下,可以访问该路径下的页面!

http:192.168.88.220:8080/index.html;
http:192.168.88.220:8080/50x.html。


【5】修改默认端口

命令如下:

vim /usr/local/nginx/conf/nginx.conf

将 80 端口修改为8080

再次访问浏览器(这里服务器ip改为了192.168.88.222):



【6】相关问题

安装过程可能不成功,一般和系统环境有关系,根据具体问题进行解决,下面列出可能遇到的问题。

① You need a C++ compiler for C++ support


解决:

yum install -y gcc gcc-c++

② 查看NGINX版本

[user@host-10-1-236-212 sbin]$ ./nginx -v
nginx version: nginx/1.10.3

③ nginx简单安装

本文安装的依赖比较多,过程相对也麻烦点。如果宿主机环境很友好且你不需要很多功能的话,可以如下简单安装:

#yum方式安装依赖
yum  -y  install gcc zlib  zlib-devel  pcre-devel  openssl   openssl-devel
//进入源码目录
cd nginx-1.16.1/
//配置
./configure --prefix=nginx安装路径 --with-http_ssl_module
//安装
make && make install
目录
相关文章
|
1月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
51 5
|
30天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
134 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
16天前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
27天前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
63 0
Mac os 安装 nginx 教程(success)
|
1月前
|
存储 应用服务中间件 PHP
设置nginx中文件上传的大小限制度
设置nginx中文件上传的大小限制度
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx安装及配置详解
Nginx安装及配置详解
|
1月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
67 0
|
应用服务中间件 PHP nginx
nginx 和php设置上传大小及可以提交的内容限制
1. 以下代码加入 /etc/nginx/nginx.conf 文件中的 http{ ... } 块中 client_max_body_size 8M; 2. PHP 设置上传大小 打开 /etc/php5/fpm/php.
1056 0
|
17天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
24天前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
216 0