源码方式安装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模块。

这里写图片描述


性能优势

web服务器,处理静态文件、索引文件以及自动索引效率高。
代理服务器,快速高效反向代理,提升网站性能。
负载均衡器,内部支持Rails和PHP,也可支持HTTP代理服务器,对外进行服务。同时支持简单容错和利用算法进行负载均衡。
性能方面,Nginx专门为性能设计,实现注重效率。采用Poll模型,可以支持更多的并发连接,并在大并发时占用很低内存。
稳定性方面,采用分阶段资源分配技术,使CPU资源占用率低。
高可用性方面,支持热备,启动迅速。


【2】安装nginx及其依赖

① gcc 安装

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

yum install 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来处理。


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

这里写图片描述


第一步:

  • 下载上述源码包;

第二步:

  • 将其统一上传到服务器指定路径下,如/home/softinstall/nginx ;

第三步:

  • 执行脚本

脚本下载地址:点击下载

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


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

① 编写服务脚本如下:

文件名为:nginxd

#!/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/nginxd

这里写图片描述

执行如下命令:

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

③ 使用命令操作nginx

service nginx (start|stop|restart)

这里写图片描述

  • 查看nginx

这里写图片描述

Note: nginx执行文件在/usr/local/nginx/sbin/nginx。

可以在/usr/local/nginx/sbin路径下使用如下命令:


./nginx //启动


./nginx -s stop //快速停止


./nginx -s reload //重新加载配置文件


./nginx -s quit &&./nginx //先停止再启动(建议使用)

【4】浏览器测试

浏览器输入linux ip:

这里写图片描述

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

【Tips】

  • 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

这里写图片描述

版权声明:本文为J080624原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/J080624/article/details/79240685

智能推荐

spring cloud netflix (07) 服务的消费者(feign)

前言 完整知识点:spring cloud netflix 系列技术栈 Feign (同步通信 HTTP通信) feign是基于接口完成服务与服务之间的通信的 搭建Feign服务 项目结构 项目搭建 pom.xml application类 application.yml 使用feign完成服务与服务之间的通信 feign是基于接口完成服务与服务之间的通信的...

AtCoder Beginner Contest 174 E.Logs

AtCoder Beginner Contest 174 E.Logs 题目链接 到最后才发现是二分,菜菜的我/(ㄒoㄒ)/~~ 我们直接二分 [1,max{a[i]}][1,max\lbrace a[i]\rbrace][1,max{a[i]}] 即可,对每一个 midmidmid,每个数 a[i]a[i]a[i] 只需要切 a[i]−1mid\frac{a[i]-1}{mid}mi...

小程序基础与实战案例

小程序开发工具与基础 小程序开发准备: 申请小程序账号( appid ) 下载并安装微信开发者工具 具体步骤如下: 先进入 微信公众平台 ,下拉页面,把鼠标悬浮在小程序图标上 然后点击 小程序开发文档 照着里面给的步骤,就可以申请到小程序账号了。 然后就可以下载 开发者工具 了 下载完打开后的界面就是这个样子 下面让我们来新建一个小程序开发项目: 在AppID输入自己刚刚注册的AppID就可以,或...

VMware centOS7 下通过minikube部署Kubernetes

1、环境准备: VMware CentOS-7-x86_64 CPU:2*2core 内存:8G 宿主机和虚拟机需网络互通,虚拟机外网访问正常 Centos发行版版本查看:cat /etc/centos-release root用户操作 2、禁用swap分区 Kubernetes 1.8开始要求关闭系统的Swap,可暂时关闭或永久禁用, 使用 $ free -m 确认swap是否为开启状态 $ s...

逻辑回归与scikit-learn

欢迎关注本人的微信公众号AI_Engine LogisticRegression 算法原理 一句话概括:逻辑回归假设数据服从伯努利分布,通过极大化似然函数(损失函数)的方法,运用梯度下降或其他优化算法来求解参数,来达到将数据二分类的目的。 定义:逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性(不是概率)。比如某用户...

猜你喜欢

指针OR数组?用他们来表达字符串又有何不同?

cocowy的编程之旅 在学习C语言的过程中我们经常可以看到或者听到这样一句话:数组其实等价于指针,例如: 在这里可以轻松的看出输出后他们的值相等,其实在计算机内存里面,p为本地变量,有着他自己的作用域。而指针变量q保存着这个数组的首地址,通过*号指向这个地址保存的变量值。 然而我们再看一个例子: 这个时候计算机报错,这是为什么呢? 其实原因很简单,指针说指向的这个字符串的地址是位于计算机代码段地...

广度搜索

广度搜索的基本使用方法 广度搜索不同于深度搜索,是一种一步一步进行的过程,每一个点只记录一遍。需要用到队列记录每一步可以走到的位置,找到目标位置输出步数即可。 用到的知识:结构体、队列 如图 首先我们需要定义一个结构体来存储每个遍历到的点和步数 广搜不会用到递归,所以可以直接在主函数里写,这里需要定义一个结构体队列 初始化队列并将起始点入列 遍历 完整代码...

NIO Socket 编程实现tcp通信入门(二)

1、NIO简介 NIO面向通道和缓冲区进行工作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。可以双向传输数据,是同步非阻塞式IO。NIO还引入了选择器机制,从而实现了一个选择器监听多个底层通道,减少了线程并发数。用NIO实现socket的Tcp通信需要掌握下面三个知识点: Buffer 缓冲区 Channel 通道 Selector 选择器   2、java.nio.Buff...

[字节码系列]ObjectWeb ASM构建Method Monitor

      在前面的篇章中,我们看到Java Instrutment的强大能力,本篇,我们将介绍如何使用ObjectWeb ASM的字节码增强能力构建Method Monitor       1.什么是ObjectWeb ASM      ObjectWeb ...

Core Location 电子围栏:入门

原文:Geofencing with Core Location: Getting Started 作者:Andy Pereira 译者:kmyhy 更新说明:Andy Pereira 将本教程升级至 Xcode 9.3 和 Swift 4.1。 Geofencing 会在设备进入/离开指定的电子围栏时通知应用程序。它可以让你写出一些很酷的应用程序,当你从家里出来时触发通知,或者在附近出现最爱的商...