了解并安装Nginx
公司使用nginx作为请求分发服务器,发现本人在查看nginx配置上存在些许困难,故仔细阅读了陶辉的《深入理解nginx模块开发与框架》第一部分,并作此记录。
了解
我根据书上的思路来了解nginx的作用及配置,首先回答提出的问题:
什么是Nginx?它有哪些特点?我们选择Nginx的理由是什么?如何编译安装Nginx?这种安装方式背后隐藏的又是什么样的思想呢?
1. 什么是Ngnix?
Nignx是一个跨平台的,支持高效处理大规模并发连接,高性能Web服务器。
2. 它有哪些特点?
1)快:单机响应更快,高并发响应快
2)高扩展性:它由耦合度极低的模块组成,对某一模块进行修复和升级时只需要关注模块自身
3)高可靠性:其核心框架代码的优秀设计、模块设计的简单性;每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。
4)低内存消耗
5)单机10w以上并发
6)热部署:master管理进程与worker工作进程的分离设计,保证在不间断服务的情况下,升级Nginx的可执行文件,更新配置项、更换日志文件等功能。
7)最自由的BSD许可协议:它还允许用户在自己的项目中直接使用或修改Nginx源码
3. 我们选择Nginx的理由是什么?
Nginx先天的事件驱动型设计、全异步的网络I/O处理机制、极少的进程间切换以及许多优化设计,都使得Nginx天生善于处理高并发压力下的互联网请求,同时Nginx降低了资源消耗,可以把服务器硬件资源“压榨”到极致。
编译安装
1. 首先我们需要一个内核为Linux 2.6及以上版本的操作系统,查看linux内核版本
[root@localhost ~]# uname -a
2. 安装GCC、PCRE、zlib、OpenSSL库
3. 磁盘目录
1)Nginx源码存放目录
2)Nginx编译阶段产生的中间文件存放目录(默认情况下,configure命令会将该目录命名为objs,并放在Nginx源代码目录下)
3) 部署目录
该目录存放实际Nginx服务运行期间所需要的二进制文件、配置文件等。默认情况下,该目录为/usr/local/nginx。
4) 日志文件存放目录
4. Linux内核参数的优化(不做了解)
5. 编译安装nginx
安装Nginx最简单的方式是,进入nginx-1.0.14目录后执行以下3行命令:
./configure
make
make install
1)configure命令做了大量的“幕后”工作,包括检测操作系统内核和已经安装的软件,参数的解析,中间目录的生成以及根据各种参数生成一些C源码文件、Makefile文件等。
a. 当configure执行成功时会生成objs目录,并在该目录下产生以下目录和文件:
2)make命令根据configure命令生成的Makefile文件编译Nginx工程,并生成目标文件、最终的二进制文件。
3)make install命令根据configure执行时的参数将Nginx部署到指定的安装目录,包括相关目录的建立和二进制文件、配置文件的复制。
Nginx命令行
1. 默认方式启动(这时会读取默认路径下的配置文件:usr/local/nginx/conf/nginx.conf,实际上,在没有显式指定nginx.conf配置文件路径时,将打开在configure命令执行时使用--conf -path=PATH指定的nginx.conf文件)
2. 在不启动Nginx的情况下,测试配置信息是否有错误
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
3. 显示版本信息
[root@localhost ~]# /usr/local/nginx/sbin/nginx -v
4. 显示编译阶段的参数
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
5. 快速地停止服务
使用-s stop可以强制停止Nginx服务。-s参数其实是告诉Nginx程序向正在运行的Nginx服务发送信号量,Nginx程序通过nginx.pid文件中得到master进程的进程ID,再向运行中的master进程发送TERM信号来快速地关闭Nginx服务。
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s stop
实际上,如果通过kill命令直接向nginx master进程发送TERM或者INT信号,效果是一样的。例如:
kill -s SIGTERM
kill -s SIGINT
6. “优雅”地停止服务
当快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s quit
7. 使运行中的Nginx重读配置项并生效
使Nginx服务重新加载nginx.conf文件。
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -s reload
事实上,Nginx会先检查新的配置项是否有误,如果全部正确就以“优雅”的方式关闭,再重新启动Nginx来实现这个目的。
8. 查看帮助命令
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -h
学到这有个灵感,当进入服务器怎么找到相应的配置文件呢:
1. 查看nginx进程
我们知道,nginx默认启动的是configure命令中 -conf -path=PATH中PATH路径的配置文件
2. 查看configure命令的参数
诺,找到配置文件的位置了,其他的配置也可以同过相同的方法找到
了解并安装Nginx的更多相关文章
- centos直接yum安装nginx
Ubuntu下安装nginx,直接apt-get install nginx就行了,很方便. 但是今天装了CentOS6.2,直接yum install nginx不行,要先处理下源,下面是安装完整流 ...
- 安装Nginx服务
Nginx最大特点: 静态小文件(1M),支持高并发,同时占用系统资源很少.3W并发,10个进程,内存150M. Nginx特点: 1.配置简单,灵活,轻量. 2.高并发(静态小文件),静态几万的并发 ...
- Linux下安装nginx
一直会使用nginx,也学习了好多nginx知识.也在本地安装过nginx,这次是第一次在正式的环境安装nginx,把这些记录下来总结经验. 一.安装环境 操作系统:CentOS release 6. ...
- centos系统编译安装nginx+php环境另加独立mysql教程
以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...
- Mac OS使用brew安装Nginx、MySQL、PHP-FPM的LAMP开发环境
准备工作 新版的 Mac OS 内置了Apache 和 PHP,我的系统版本是OS X 10.9.3,可以通过以下命令查看Apache和PHP的版本号: httpd -v Server version ...
- 手把手教你玩转nginx负载均衡(四)--源码安装nginx
引言: 在上一篇,我们已经装好了虚拟机,并且已经配置好了网络,那么今天我们就要开始安装nginx服务器了. 安装工具以及过程 安装gcc编译套件以及nginx依赖模块 yum -y install g ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- 安装nginx
[yum安装nginx] yum clean all(这步不执行会出现no more mirrors to try错误) cd /etc/yum.repos.d/ vi nginx.repo 填写 [ ...
- unbuntu14.04 安装nginx配置
记录一下linux下安装nginx的所需要的配置. 首先从 nginx官网 下载所需要的版本,复制链接,执行 wget http://nginx.org/download/nginx-1.8.0.ta ...
- linux 安装 nginx 及反向代理配置
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,以下为Linux centos平台下安装nginx并配置反向代理的过程(采用源码安装的方式) 一:安装 ...
随机推荐
- C++中 关于操作符的重载
C++实现了类的定义,也可以对类之间的操作符进行定义,又叫重载. 例如同类之间的 加.减法,赋值等等操作. 具体看http://blog.csdn.net/zhy_cheng/article/deta ...
- rocketmq的windows版客户端的启动步骤
一.下载RocketMQ首先,我们去下载RocketMQ,RocketMQ 是一个开源的东西,可以去github上面下载,地址是:https://github.com/alibaba/RocketMQ ...
- SAS数据挖掘实战篇【三】
SAS数据挖掘实战篇[三] 从数据挖掘概念到SAS EM模块和大概的流程介绍完之后,下面的规划是[SAS关联规则案例][SAS聚类][SAS预测]三个案例的具体操作步骤,[SAS的可视化技术]和[SA ...
- extentreports 测试报告引用extend.js/css失败
测试工程引用extentreports 生成的测试报告,因为报告中的js和css网络不通,所以页面乱码 解决思路: 下载需要的js.css放到测试工程的static目录下 下载extentreport ...
- java读取blob,clob转换为字符串
直接上代码: package com.it.test; import java.io.BufferedReader; import java.io.StringWriter; import java. ...
- 微信小程序动画:高度渐变,left渐变
今天在测试微信小程序动画的时候遇到了坑,需求是这样的点击时子元素从外部滑动回来,父元素的高度跟随子元素的高度改变. 实现子元素left为0并不复杂,但是改变父元素box的高度的时候却遇到了坑,因为是需 ...
- 华为HCNA乱学Round 9:VRRP
- Laravel 里最简单的CURD套路
控制器 namespace App\Http\Controllers; use App\Http\Requests\UserAddressRequest; use App\Models\UserAdd ...
- 2019牛客暑期多校训练营(第一场)-E(DP)
题目链接:https://ac.nowcoder.com/acm/contest/881/E 题意:求可分解成n个AB和m个BA的字符串的个数. 思路: 首先根据贪心思想,前n个A可作为AB的A,后m ...
- hdfs基本文件操作
编程实现下列要求: 1.创建一个自己姓名首字母的文件夹 2.在文件夹下创建一个hdfstext1.txt文件,项文件内输入“班级学号姓名HDFS课堂测试”的文字内容: 3.在文件夹下在创建一个好的fs ...