nginx安装部署

nginx的官网:nginx.org

nginx简介

  • nginx是利用C语言编写的一款免费且开源的轻量级的web服务器/反向代理服务器以及电子邮件(IMPA/POP3)代理服务器

  • nginx是一款专门为性能而生的,特点是占用内存少,并发能力强,与同类的web软件来说表现较好。

  • nginx的工作模型是epoll模型(异步非阻塞模型)I/O多路复用技术,可以利用等待的时间去接收更多的请求。

什么是异步非阻塞模型:

在讲异步非阻塞模型之前先搞清楚什么是同步、异步、阻塞、非阻塞。

  • 同步:就是当用户去访问一个网站的时候,这时候服务器就会启动一个进程,服务器将你想要的数据返回给你之后。这个进程才会结束,在数据给用户之前这个进程会一直处于运行状态且一直去找数据不会做其他什么事。简单来说就是一对一的提供服务。

  • 异步:异步和同步相对,就是在处理用户请求的过程中,服务器可以去做其他的事,等用户想要的数据处理好之后服务器将用户想要的数据给用户。简单来说就是服务器在提供服务的时候能去服务下一个用户。当上一个用户想要的数据得到之后便会将数据给用户

  • 阻塞:阻塞与同步类似,但是不等同于同步,阻塞就是用户发出请求,在用户请求没有得到解决之前线程会被挂起(线程处于挂起状态)一直等到用户得到数据后才会做其他事。

  • 非阻塞:阻塞与非阻塞事相对的,就是说用户请求的数据,服务器会给用户提供想要的数据,在给用户提供数据的期间可以做其他事。

I/O多路复用

  • I/O就是我们网络的I/O,多路是指多个TCP连接,复用是指复用一个或少量的线程。就是多个网络I/O去复用一个或少量的线程或者说进程

部署nginx

下载nginx的源码包

[root@localhost ~]# wget http://nginx.org/download/nginx-1.20.1.tar.gz

解决nginx的依赖

[root@localhost ~]# yum -y install pcre-devel gcc openssl-devel zlib make
因为nginx使用C语言编写的所以需要安装gcc
pcre支持正则表达式、zlib支持头压缩、openssl支持HTTPS协议
因为后面编译时需要用到make命令

解压nginx的rpm包

[root@localhost ~]# tar -xzf nginx-1.20.1.tar.gz 

nginx的源码存放的目录:


image.png
image.png

这个nginx.c的文件里面就是nginx的源代码

安装nginx

在编译安装nginx时如果你不指定,系统会帮你自动安装一些功能。但有的模块不会安装就是以--with开头的模块。会自动安装的模块是以--without开头的模块
解压完成之后会自动生成一个nginx目录,然后我们进到这个目录里面去。

[root@localhost ~]# cd nginx-1.20.1/
[root@localhost nginx-1.20.1]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
不指定会默认按装到/usr/local/nginx目录下,如果想指定安装路径可以使用下面的命令
[root@localhost nginx-1.18.0]# ./configure --prefix= //路径名
[root@localhost nginx-1.20.1]# ./configure --with-http_ssl_module
这个--with-http_ssl_module模块时用来做加密网站的。因为加密网站是遵守的https的协议
将https这个协议添加 到 HTTP 服务器
这只是其中一种模块,更多模块请访问官方网站:http://nginx.org/en/docs/configure.html

还有一个模块也算是常用模块就是--sbin-path=path,这模块用来修改nginx可执行文件的名称。默认是prefix/sbin/nginx

在configure命令配置编译时需要用到的选项可以去官方文档里面去找:http://nginx.org/en/docs/configure.html

也可以使用./configure --help命令

进行编译安装

[root@localhost nginx]# make
[root@localhost nginx]# make install

nginx主目录下各个目录的作用

/usr/local/nginx/         #为服务安装目录
/usr/local/nginx/sbin  #为服务主程序目录
/usr/local/nginx/sbin/nginx  #为服务程序文件
/usr/local/nginx/modules/  #为模块目录
/usr/local/nginx/conf/  #为服务的配置文件目录
/usr/local/nginx/html/  # 为服务网页根目录
/usr/local/nginx/conf/nginx.conf  #为服务配置文件
/usr/local/nginx/logs/  #为服务日志文件目录
/usr/local/nginx/logs/nginx.pid  #服务pid文件
/usr/local/nginx/logs/error.log  #服务错误日志文件
/usr/local/nginx/logs/access.log  #服务访问日志文件

nginx服务相关的命令

/usr/local/nginx/sbin/nginx 启动nginx
/usr/local/nginx/sbin/nginx -v  #查看nginx版本
/usr/local/nginx/sbin/nginx -V  #显示除版本信息意外的其他配置参数信息
/usr/local/nginx/sbin/nginx -t  #检查nginx配置文件是否正确
/usr/local/nginx/sbin/nginx -s reload  #重新加载nginx
/usr/local/nginx/sbin/nginx -s quit #正常关闭nginx,建议使用这种方式关闭nginx
/usr/local/nginx/sbin/nginx -s stop  #快速关闭nginx

在nginx的配置文件里面可以修改字符集使他支持的html的页面支持中文

[root@localhost conf]# pwd
/usr/local/nginx/conf
将第39行的注释取消把koi8-r换成UTF-8
[root@localhost conf]# vim nginx.conf
 35     server {
 36         listen       80;
 37         server_name  localhost;
 38 
 39         #charset koi8-r;
当修改配置文件之后要时配置文件立即生效就可以使用下面这条命令,且不会停止服务
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload

查看nginx进程表

[root@localhost ~]# ps anx | grep nginx
  98920 ?        Ss     0:00 nginx: master process sbin/nginx   #这个是nginx的主进程负责检查服务的配置信息,启动、终止、控制并维护worker进程
  98922 ?        S      0:00 nginx: worker process  #这个时nginx的工作进程用来接收和处理用户的连接
 184634 pts/1    S+     0:00 grep --color=auto nginx

nginx配置文件的解释

[root@localhost conf]# vim nginx.conf
[root@localhost conf]# pwd
/usr/local/nginx/conf
配置文件存放路径

2 #user  nobody;  //指定以哪个用户的身份去运行
3 worker_processes  1;  //nginx默认启动进程的数量,1个进程占用10-20M的内存,这里的进程数建议和本机的cpu核数保持一致即可,若在生产环境中就改为 auto,就时让其自动增长

5 #error_log  logs/error.log;  //全局的错误日志文件
6 #error_log  logs/error.log  notice;  //日志通知
7 #error_log  logs/error.log  info;  //日志信息
9 #pid        logs/nginx.pid;  //nginx Pid存放位置

12 events {
 13     worker_connections  1024;
 14 }
一个进程可以并发接收1024个用户访问,也就是同时打开1024个网页让用户去访问
在生产环境中建议改为65535

17 http {
18     include       mime.types;   //调用其他的配置文件
19     default_type  application/octet-stream;  //默认文件类型,默认的时二进制类型

21     #log_format  main  '$remote_addr - $remote_user [$time_local] "$reque    st" '  //日志文件的输出格式
22     #                  '$status $body_bytes_sent "$http_referer" '  
23     #                  '"$http_user_agent"  "$http_x_forwarded_for"';  //nginx需要使用的模块

25     #access_log  logs/access.log  main;  //访问日志的路径,main就是输出格式

27     sendfile        on;  //高效文件传输模式,提高数据的传输速度
28     #tcp_nopush     on;  //防止网络阻塞的功能
30     #keepalive_timeout  0;  
31     keepalive_timeout  65;  
保持客户端和服务端连接的时间,默认时间为65s,当用户在服务端65秒内没有进行操作那么就自动断开连接。

33     #gzip  on;  //压缩文件的格式,可以指定什么类型的文件进行压缩。

35     server {  //虚拟主机的配置
36         listen       80;  //nginx默认监听80端口
37         server_name  localhost;  //指定网站域名
39         #charset koi8-r;  //可以用来修改字符集
41         #access_log  logs/host.access.log  main;  //访问日志的位置,格式为main输出格式

43         location / {  //匹配用户的地址栏
44             root   html;  //指向nginx网页文件的根目录,root在这里是一个指令。
45             index  index.html index.htm;  //nginx的默认首页
46         }
48         #error_page  404              /404.html;  //当用户访问一个不存在的网页时返回的页面

 50         # redirect server error pages to the static page /50x.html
 51         #
 52         error_page   500 502 503 504  /50x.html;
 53         location = /50x.html {
 54             root   html;
 55         }
这里时报错50x的优化页面的地方

 57         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 58         #
下面三行是用来做反向代理的
 59         #location ~ \.php$ {
 60         #    proxy_pass   http://127.0.0.1;
 61         #}
这里是构建lnmp架构时,用来修改php页面的

96     # HTTPS server  //这个地方是用来做加密网站的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • 第一、首先,需要知道的nginx的六个基础知识; 1.nginx的来源、作用和特点是什么? 答:nginx的来源:...
    RealLuo阅读 1,087评论 0 0
  • nginx的配置和简单使用 前端项目经常需要部署在公网服务器上,大部分人都是用 nginx 作为 web 服务器,...
    LightiSnow阅读 281评论 0 0
  • nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务,也是一个IMAP/...
    zhane_hao阅读 198评论 0 0
  • yum安装 1、 安装依赖包 2、 创建nginx仓库 /etc/yum.repo.d/nginx.repo 3、...
    互联网中的一个咸鱼阅读 116评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,518评论 28 53