侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 292 篇文章
  • 累计创建 132 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Linux下JAVA WEB服务器的搭建四(NGINX)

孔子说JAVA
2021-10-12 / 0 评论 / 2 点赞 / 172 阅读 / 13,501 字 / 正在检测是否收录...

要部署普通的java web项目,需要在linux上搭建好web服务器运行环境,包括JDK、tomcat、mysql、redis、nginx等,本文主要介绍nginx的下载安装配置,linux系统采用的是ubuntu。nginx官网地址http://nginx.org/nginx官方文档https://nginx.org/en/docs/。

1、nginx介绍

Nginx (engine x) 是一个是一款轻量级、高性能的WEB和反向代理服务器,同时也提供了IMAP/POP3/SMTP代理服务,在BSD-like 协议下发行。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。2021年5月25日发布的最新稳定版本为1.20.1。

  • Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。 特点是占有内存少,并发能力强,在连接高并发的情况下,Nginx是Apache服务不错的替代品。一般情况下,对于新建站点,建议使用最新稳定版作为生产版本。

nginx优点:

  • 1、轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源。
  • 2、抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 ,而 apache 在 PHP 处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。
  • 3、nginx 处理静态文件好,静态处理性能比 apache 高三倍以上。
  • 4、nginx 的设计高度模块化,编写模块相对简单。
  • 5、nginx 配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃。
  • 6、nginx 作为负载均衡服务器,支持 7 层负载均衡。
  • 7、nginx 本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器。
  • 8、启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,还能够不间断服务的情况下进行软件版本的升级
  • 9、社区活跃,各种高性能模块出品迅速

Apache优点:

  • 1、apache 的 rewrite 比 nginx 强大,在 rewrite 频繁的情况下,用 apache
  • 2、apache 发展到现在,模块超多,基本想到的都可以找到
  • 3、apache 更为成熟,少 bug ,nginx 的 bug 相对较多
  • 4、apache 超稳定
  • 5、apache 对 PHP 支持比较简单,nginx 需要配合其他后端用
  • 6、apache 在处理动态请求有优势,nginx 在这方面是鸡肋,一般动态请求要 apache 去做,nginx 适合静态和反向。

apache 仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区。两者最核心的区别在于 apache 是同步多进程模型,一个连接对应一个进程,而 nginx 是异步的,多个连接(万级别)可以对应一个进程。一般来说,需要性能的 web 服务,用 nginx 。如果不需要性能只求稳定,更考虑 apache 。更为通用的方案是,前端 nginx 抗并发,后端 apache 集群,配合起来会更好。

nginx应用场合:

  • 静态服务器(图片,视频服务),另个lighttpd。并发几万,html,js,css,flv,jpg,gif等。
  • 动态服务,nginx—fastcgi 方式运行PHP,jsp。(PHP并发约500-1500,MySQL 并发约300-1500)。
  • 反向代理,负载均衡。日pv2000W以下,都可直接用nginx做代理。
  • 缓存服务。类似 SQUID,VARNISH。

2、nginx的下载

进入ningx官网下载地址:http://nginx.org/en/download.html,下载最新稳定版本(stable)或者复制下载链接后直接下载到服务器上。

wget http://nginx.org/download/nginx-1.20.1.tar.gz

image-1648804153745

3、nginx的安装

linux的Ubuntu和Center os系统安装方式是不一样的。可以通过 cat /proc/version 命令查看linux系统。在Ubuntu下安装Nginx有2种方法,基于APT源安装和编译源码安装,如果想要安装最新版本的就必须下载源码包编译安装。

image-1648804184367

连接服务器后,获取root权限,执行sudo apt update(如果已经是root权限可以去掉sudo),检查可更新的软件包汇总情况,如果有需要更新的软件包,可以使用以下命令更新:sudo apt upgrade 软件包名

image-1648804206582

3.1 nginx的卸载

使用命令 nginx -v 查看nginx的版本号,若已安装了nginx但版本不符合要求,可以通过以下命令卸载。有输入提示时,输入Y即可。

# 彻底卸载nginx
apt-get --purge autoremove nginx

3.2 基于APT源安装

sudo apt-get install nginx

安装过程会让选一个Y同意占用内存。安装好的文件位置:

  • /usr/sbin/nginx:主程序
  • /etc/nginx:存放配置文件
  • /usr/share/nginx:存放静态文件
  • /var/log/nginx:存放日志
  • /etc/init.d/:创建了启动脚本nginx
  • 默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)

通过这种方式安装的,会自动创建服务,会自动在/etc/init.d/nginx新建服务脚本,然后就可以使用sudo service nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}的命令启动。创建好的文件由于放在/usr/sbin目录下,所以能直接在终端中使用nginx命令而无需指定路径。

  • 通过nginx -v 命令查看nginx是否安装成功,service nginx start 启动nginx。

3.3 编译源码安装

编译源码安装这种方式可以自定安装指定的模块以及最新的版本。方式更灵活。

3.3.1 安装依赖包

apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev
# Ubuntu20.04的仓库中没有发现openssl-dev,由下面openssl和libssl-dev替代
#apt-get install openssl openssl-dev
sudo apt-get install openssl 
sudo apt-get install libssl-dev

image-1648804406122

image-1648804413332

image-1648804418891

3.3.2 解压nginx tar包

在Ubuntu服务器的/opt目录下新建nginx目录,将下载的nginx-1.20.1.tar.gz安装包复制到该目录下解压。解压命令:tar -zxvf nginx-1.20.1.tar.gz

  • 也可以将nginx安装到/usr/local目录下,即 /usr/local/nginx 目录。
cd /opt
mkdir nginx
cd nginx
wget wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz

image-1648804497068

3.3.3 nginx文件夹改名并进入到该目录

如果使用的是没有权限的非root账户,则在命令的前面加上 sudo。

image-1648804528221

3.3.4 configure脚本自动生成Makefile脚本

nginx源码的编译需要使用configure脚本自动生成Makefile脚本,configure脚本支持许多选项,来控制安装的各种属性。

进入到nginx解压后的目录中,执行命令:./configure --prefix=/nginx   (–prefix=/nginx指明软件安装的路径,/nginx是为安装nginx新建的目录,可以不指定)。

  • 使用./configure --help查看各模块使用情况,用 --without-http_ssi_module 方式关闭不需的模块。可用 --with-http_perl_modules 方式安装需要的模块(如:./configure --prefix=/data/nginx-1.10.1 --user=nginx --group=nginx  --with-http_ssl_module  --with-http_stub_status_module)。
  • 注意:nginx的一些模块需要依赖其他第三方的库,通常有pcre库(支持rewrite模块)、zlib库(支持gzip模块)和openssl库(支持ssl模块)等。
# 进入nginx目录
/opt/nginx/nginx-1.20.1-server1
# 执行命令
./configure

image-1648804630992

3.3.5 编译nginx

执行make命令编译,可以看到屏幕上nginx源代码编译的过程。

image-1648804665557

3.3.6 安装nginx

使用 make install 命令完成安装后,将当前目录定位到 /usr/local/nginx下,就可以查看nginx的全部资源了,主要有4个文件夹组成:conf、html、logs、sbin。

  • conf目录中存放nginx的所有配置文件
  • html目录中存放了nginx服务器在运行过程中调用的一些html网页文件
  • logs用来存放nginx服务器日志的
  • sbin目录存放的是nginx的主程序

image-1648804702490

image-1648804709737

3.4 ubuntu 防火墙开启80端口

如果nginx的80端口不在防火墙启用规则中,需添加进去,sudo ufw allow 80,然后通过sudo ufo status 可以查看到80 端口已开放。

  • 防火墙禁用端口命令:ufw deny 端口
  • 关闭防火墙命令:ufw disable

image-1648804784958

3.5 启动并访问nginx

进入nginx启动目录/usr/local/nginx/sbin,通过 ./nginx 命令启动nginx。可以通过-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,默认配置文件地址为: /usr/local/nginx/conf/nginx.conf。可通过nginx -t 查看配置文件的信息。

cd /usr/local/nginx/sbin

# 无参数启动nginx,nginx会自动加载默认路径的配置文件
./nginx

# 有参数启动nginx - 指定配置文件
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。

#查看进程:
ps -ef | grep nginx
#查看进程:
ps aux | grep nginx

#systemctl命令启动
systemctl start nginx

# 重启Nginx服务
systemctl restart nginx

# 查看端口号
netstat -tlnp

访问nginx

网页输入ip地址,访问成功,到此,nginx安装完毕。

image-1648804866721

3.6 配置软链接任意路径启动nginx

配置软链接在usr/bin/nginx(该路径在系统PATH下),可以在任意路径下直接输入nginx启动(不需要指定执行路径)。

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

image-1648804918139

3.7 停止nginx服务4种方法

1)从容停止服务

命令:nginx -s quit ,这种方法较stop相比就比较温和一些了,需要进程完成当前工作后再停止。

2)立即停止服务

命令:nginx -s stop,这种方法比较强硬,无论进程是否在工作,都直接停止进程。

3)systemctl 停止

命令:systemctl stop nginx.service,systemctl属于Linux命令。

4)killall 方法杀死进程

命令:killall nginx,直接杀死进程,在上面无效的情况下使用,态度强硬,简单粗暴!

3.8 nginx其他命令

1)重新载入配置文件

当有系统配置文件有修改,使用命令nginx -s reload重新载入配置文件,建议不要停止再重启,以防报错!

**2)测试nginx配置文件是否正常命令 nginx -t **

root@xnzysq20210118001:/usr/local# nginx -t 
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
root@xnzysq20210118001:/usr/local# 

image-1648805028271

3)检查进程是否正常

通过命令 netstat -lntup |grep nginxps -ef | grep nginx 检查进程是否正常。

image-1648805040930

4)查看html是否正常

通过http命令行工具curl访问http://localhost是否正常。curl -I http://localhost 或 curl http://localhost

image-1648805106026

5)nginx -V 查看已经编译的参数,nginx -v 查看版本

image-1648805135269

6)使用kill命令操作nginx。格式:kill -信号 PID

信号名称:

  • TERM,INT 快速关闭
  • QUIT 优雅的关闭,保持吸纳有的客户端连接
  • HUP 重启应用新的配置文件
  • USR1 重新打开日志文件
  • USR2 升级程序
  • WINCH 优雅的关闭工作进程

例子:

  • kill -QUIT  cat /data/nginx/nginx.pid
  • kill -HUP cat /data/nginx/nginx.pid

7)nginx其他命令

nginx -s signal

signal:

  • stop — fast shutdown
  • quit — graceful shutdown
  • reload — reloading the configuration file
  • reopen — reopening the log files 用来打开日志文件,这样nginx会把新日志信息写入这个新的文件中

nginx -h 或 nginx -? 显示帮助信息

image-1648805265306

4、nginx开机自启动

Systemctl是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器。

  • 通过Systemctl –help可以看到该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务、环境、快照相关命令,systemd服务的配置重载,系统开机关机相关的命令。

4.1 创建nginx.service

cd到 /usr/lib/systemd/system目录下,创建nginx服务启动文件,vim nginx.service(或用绝对路径创建vim /usr/lib/systemd/system/nginx.service),vim表示编辑一个文件,若文件不存在则创建。

4.2 编辑nginx.service服务启动文件

[Unit]

Description=nginx -high performance web server

After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

WorkingDirectory=/usr/local/nginx

ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

4.3 使服务启动文件生效

systemctl daemon-reload

4.4 启动nginx

systemctl start nginx

4.5 关闭nginx

systemctl stop nginx

4.6 重启nginx

systemctl restart nginx

4.7 开机启动

systemctl enable nginx

image-1648805385206

4.8 测试

通过http命令行工具curl访问http://localhost是否正常。使用 ps aux|grep nginx 命令查看进程。使用 netstat -ntlp 命令查看网络端口情况。

image-1648805411412

5、nginx的配置

5.1 nginx文件结构

  1. 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  2. events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  3. http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  4. server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  5. location块:配置请求的路由,以及各种页面的处理情况。
...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    { 
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

5.2 基础配置文件

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

5.3 配置文件详解

#nginx进程,一般设置为和cpu核数一样
worker_processes 4;                        
#错误日志存放目录 
error_log  /data1/logs/error.log  crit;  
#运行用户,默认即是nginx,可不设置
user nginx       
#进程pid存放位置
pid        /application/nginx/nginx.pid;        

#Specifies the value for maximum file descriptors that can be opened by this process. 
#最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果
worker_rlimit_nofile 51200;

cpu亲和力配置,让不同的进程使用不同的cpu

worker_cpu_affinity 0001 0010 0100 1000 0001 00100100 1000;

#工作模式及连接数上限
events 
{
  use epoll;       #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
  worker_connections 1024;  #;单个后台worker process进程的最大并发链接数
}
###################################################
http 
{

include mime.types; #文件扩展名与类型映射表
default_type application/octet-stream; #默认文件类型

  #隐藏响应header和错误通知中的版本号
  server_tokens off;
  #开启高效传输模式   
  sendfile on;

-------------------------------------------------------------------------------------------------
  #激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,
  积极的作用是减少网络报文段的数量
  tcp_nopush     on;
  #激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
  tcp_nodelay on;
#连接超时时间,单位是秒
  keepalive_timeout 60;

  #开启gzip压缩功能
    gzip on;
 #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大。
  gzip_min_length  1k;

#压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
  gzip_buffers     4 16k;

#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
  gzip_http_version 1.0;

#压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
  gzip_comp_level 9;

#用来指定压缩的类型,“text/html”类型总是会被压缩
  gzip_types       text/plain application/x-javascript text/css application/xml;
  #vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用

Squid缓存经过Nginx压缩的数据。

gzip_vary off;
#开启ssi支持,默认是off
  ssi on;
  ssi_silent_errors on;
#设置日志模式
    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" $http_x_forwarded_for';

#反向代理负载均衡设定部分

#upstream表示负载服务器池,定义名字为backend_server的服务器池
upstream backend_server {
    server   10.254.244.20:81 weight=1 max_fails=2 fail_timeout=30s;
    server   10.254.242.40:81 weight=1 max_fails=2 fail_timeout=30s;
    server   10.254.245.19:81 weight=1 max_fails=2 fail_timeout=30s;
    server   10.254.243.39:81 weight=1 max_fails=2 fail_timeout=30s;
  #设置由 fail_timeout 定义的时间段内连接该主机的失败次数,以此来断定 fail_timeout 定义的时间段内该主机是否可用。默认情况下这个数值设置为 1。零值的话禁用这个数量的尝试。

设置在指定时间内连接到主机的失败次数,超过该次数该主机被认为不可用。

#这里是在30s内尝试2次失败即认为主机不可用!
  }
###################

#基于域名的虚拟主机
  server
  {

#监听端口
    listen       80;
    server_name  www.abc.com abc.com;    
    index index.html index.htm index.php;    #首页排序
    root  /data0/abc;                            #站点根目录,即网站程序存放目录 
    error_page 500 502 404 /templates/kumi/phpcms/404.html;   #错误页面
#伪静态   将www.abc.com/list....html的文件转发到index.php。。。
#rewrite ^/list-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&types=$2&country=$3&language=$4&age=$5&startDate=$6&typeLetter=$7&type=$8&page=$9 last;
#location 标签,根目录下的.svn目录禁止访问
    location ~ /.svn/ {
     deny all;
    }
            location ~ \.php$   
             {  #符合php扩展名的请求调度到fcgi server  
              fastcgi_pass  127.0.0.1:9000;  #抛给本机的9000端口
              fastcgi_index index.php;    #设定动态首页
              include fastcgi.conf;
             }

5.4 配置文件实例

########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1,一般设置为和cpu核数一样
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}
http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页
    server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       4545;   #监听端口
        server_name  127.0.0.1;   #监听地址       
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
           #root path;  #根目录
           #index vv.txt;  #设置默认页
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
    }
}

需要注意的有以下几点:

  • 1.remoteaddrremote_addr 与http_x_forwarded_for 用以记录客户端的ip地址;
  • 2.$remote_user :用来记录客户端用户名称;
  • 3.$time_local : 用来记录访问时间与时区;
  • 4.$request : 用来记录请求的url与http协议;
  • 5.$status : 用来记录请求状态;成功是200;
  • 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
  • 7.$http_referer :用来记录从那个页面链接访问过来的;
  • 8.$http_user_agent :记录客户端浏览器的相关信息;
  • 9.惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能;
  • 10.每个指令必须有分号结束;

6、nginx安装常见问题

1)nginx 安装报错:make: No rule to make target build, needed by default. Stop.

出现此种情况,是linux系统没有安装先决条件

1、GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)

  • RedHat中安装GCC:yum install gcc
  • Ubuntu中安装GCC:apt-get install gcc

2、PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由。)

  • RedHat中安装PCRE:yum install pcre pcre-devel
  • Ubuntu中安装PCRE:apt-get install libpcre3 libpcre3-dev

3、zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)

  • RedHat中安装zlib:yum install zlib zlib-devel
  • Ubuntu中安装zlib:apt-get install zlib1g zlib1g-dev

4、OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)

  • RedHat中安装OpenSSL:yum install openssl openssl-devel
  • Ubuntu中安装OpenSSL:apt-get install openssl openssl-dev
# Ubuntu20.04的仓库中没有发现openssl-dev,由下面openssl和libssl-dev替代
#apt-get install openssl openssl-dev
sudo apt-get install openssl 
sudo apt-get install libssl-dev
2

评论区