专栏首页GitHub专栏Nginx系列教程(一)| 手把手教你在Linux环境下搭建Nginx服务

Nginx系列教程(一)| 手把手教你在Linux环境下搭建Nginx服务

一、什么是 Nginx?

Nginx是一个高性能的HTTP和反向代理Web服务器,也提供了IMAP / POP3 / SMTP服务,由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点而开发,第一个公开版本0.1.0发布于2004年10月4日,特点是占有内存少,并发能力强,专为性能优化而开发,稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,可支持单台高达50000个并发连接数。

那么,在事实上Nginx的并发能力在同类型的网页服务器中表现较好,实际环境中,如果我们采用Nginx的话,可能是如下该场景的架构图。其实,在如下这种架构图中,Nginx服务器你可以直接理解为是一台负载均衡服务器或者反向代理服务器,所以当客户端发出请求到Nginx服务器时,Nginx服务器需将它配置好的规则由客户端发来的请求并转发到后端的LAMPTomcatLNMP上。

二、为什么要用 Nginx?

作为 Web 服务器

相比 Apache,Nginx 使用资源更少,支持更多的并发连接数。在高并发的情况下,Nginx 是 Apache 服务器的替代品,Nginx 作为负载均衡服务器,内部是支持RailsPHP程序对外服务,也支持作为HTTP代理服务器对外服务,采用C语言编写,无论在系统资源开销还是CPU使用效率要比Perlbal好很多。

Nginx 配置简单,Apache 复杂

Nginx 启动容易,几乎可以做到7*24小时不间断运行,即便很长时间未重新启动,也能够在不间断服务的情况下对软件版本进行升级,静态处理性能要比 Apache 高 3倍以上,Nginx 需要配合其他后端来进行使用,而 Apache 对 PHP 支持较简单,组件同时也比 Nginx 多。

核心点

Nginx 是异步的,多连接可对应一个进程; Apache 是同步多进程模型,一个连接对应一个进程;

擅长领域

Nginx 适用于前端处理静态请求; Apache 适用于后端处理动态请求;

三、Nginx 安装

安装支持软件

Nginx 的配置及运行需要pcrezlib软件包的支持,需先安装这些软件的开发包供相应的库和头文件,以此来确保 Nginx 的顺利安装。

# yum -y install pcre-devel zlib-devel

创建运行用户、组

Nginx 服务程序默认以noboby身份运行,这里建议大家创建新的用户账号,更准确的控制访问权限、增加灵活性、降低安全风险;

# useradd -M -s /sbin/nologin nginx

下载编译安装

配置 Nginx 的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为nginx;启用http_stub_status_module模块以支持状态统计,便于查看服务器的连接信息。

# wget http://nginx.org/download/nginx-1.17.0.tar.gz
# tar zxf nginx-1.17.0.tar.gz
# cd nginx-1.17.0
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
# make && make install

为主程序 Nginx 创建链接文件

# ln -s /usr/local/sbin/nginx /usr/local/sbin/
# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 21 6月   4 07:31 /usr/local/sbin/nginx -> /usr/local/sbin/nginx

安装好之后,进入默认安装路径到sbin目录下,执行nginx即可启动;

# cd /usr/local/nginx/sbin/
# pwd
/usr/local/nginx/sbin
# ./nginx 
# nginx

监听 Nginx 程序的状态

# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      53816/nginx 

监听到端口后,在浏览器中直接访问Nginx 地址,当浏览器看到如下页面时,说明Nginx已经安装成功了。

使用 Nginx 服务脚本

可编写Nginx服务脚本,使用chkconfigservice工具进行统一管理;

#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Server Control Scripts shell
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
    start)
    if [ -f $PIDF ]; then
        echo "Nginx is running.. Start it is error"
    else
        $PROG
    fi
    ;;
    stop)
    if [ -f $PIDF ]; then
        kill -s QUIT $(cat $PIDF)
        rm -rf $PIDF
    else
        echo "Nginx is stopping .. Stop it is error"
    fi
    ;;
    restart)
        $0 stop
        $0 start
    ;;
    reload)
    if [ -f $PIDF ]; then
        kill -s HUP $(cat $PIDF)
    else
        echo "Nginx is stopping . reload it is error"
    fi
    ;;
    status)
    if [ -f $PIDF ]; then
        echo "Nginx is running"
    else
        echo "Nginx is stopping"
    fi
    ;;
    *)
    echo "Usage: $0 (start|stop|restart|reload|status)"
    exit 1
esac
exit 0
# chmod +x /etc/init.d/nginx
# chkconfig --add nginx

如果修改了Nginx的配置文件,可通过./nginx -s reload命令加载Nginx配置文件。

# ./nginx -s reload

总结

以上我们介绍了Nginx的基本概念、为什么要用Nginx、Nginx 的安装有个初步的认识,待后续的文章继续介绍正向代理反向代理负载均衡以及构建 LNMP 架构等;今天我们就介绍到这里,有问题大家随时留言讨论哦。

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet),作者:JackTian

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡

    当一台服务器的访问量越大时,服务器所承受的压力也就越大,超出自身所指定的访问压力就会崩掉,避免发生此类事情的发生,因此也就有了负载均衡来分担服务器的压力。

    杰哥的IT之旅
  • 利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论?

    我经常会收到读者关于一系列咨询运维方面的事情,比如:杰哥,运维到底是做什么的呀?运维的薪资水平/ 待遇怎么样呢?杰哥帮忙看下这个岗位的招聘需要对于小白来说,能否...

    杰哥的IT之旅
  • 8个接私活的网站,只要你有码,那就有钱!

    以上就是本文的全部内容啦,祝各位大侠(程序员)卖艺(接私活)顺风顺水,琢磨招式(敲代码)时,少走火入魔(BUG),早日名扬天下,登上哪江湖失传已久的秃头榜!!!

    杰哥的IT之旅
  • Nginx重装与平滑升级

    第一步:停止Nginx软件 第二步:删除/usr/local/nginx文件夹 第三步:下载Nginx-1.16重新进行配置、编译以及安装 缺点:在重装升级的过...

    刘銮奕
  • 8个提高电脑使用效率,让你早下班

    给大家分享8个Windows下小软件,掌握这8个小软件,可以提高你的电脑操作效率。

    IT小侠公社
  • C#版 - Leetcode367. 有效的完全平方数 - 题解

    在线提交: https://leetcode.com/problems/valid-perfect-square/

    Enjoy233
  • SVN Error:run ‘cleanup’ if it was interrupted

    异常处理汇总-开发工具 http://www.cnblogs.com/dunitian/p/4522988.html cleanup failed to pr...

    逸鹏
  • 随机算法之水塘抽样算法

    我最近在 LeetCode 上做到两道非常有意思的题目,382 和 398 题,关于水塘抽样算法(Reservoir Sampling),本质上是一种随机概率算...

    lucifer210
  • 3个常用理论:教你如何分析用户行为!

    老马的这个理论都快被用烂了,多数产品分析报告在对用户需求进行分析时都会使用老马的层次需要理论,该理论是由美国心理学家亚伯拉罕•马斯洛在《动机与个性》中提出来的,...

    1480
  • Python提取docx格式Word文档中所有尾注

    1、用Word或WPS打开一个docx格式的文档,在文档中单击要插入尾注的位置,然后依次单击菜单,如下图所示。

    Python小屋屋主

扫码关注云+社区

领取腾讯云代金券