nginx安装与初始配置


一 nginx安装与配置

1 . nginx的源码编译安装

由于其源码包是开源的,源码编译安装相对于其他以及编译好的可执行代码具有较高的自定义性,可以在编译过程在根据自己的需求增加所需的功能模块。

下载nginx安装包,解压缩

nginx-1.20.1.tar.gz   
[root@server1 ~]# tar zxf nginx-1.20.1.tar.gz  ##解压源码包
[root@server1 ~]# cd nginx-1.20.1/   
[root@server1 nginx-1.20.1]# ./configure --help  ## 查看源码编译可带的参数模块

在这里插入图片描述查看帮助文档,自定义自己想要的安装模块

[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
--prefix=/usr/local/nginx    ##指定安装路径
--with-http_stub_status_module     ##监控nginx的整体访问情况
--with-http_ssl_module		##ssl模块,支持https

预编译报错,提示缺少c编译环境,按照提示安装gcc后再次编译
在这里插入图片描述

[root@server1 nginx-1.20.1]# yum install -y gcc
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

再次报错,提示缺少PCRE,根据提示安装pcre-devel后再进行编译。
在这里插入图片描述

[root@server1 nginx-1.20.1]# yum install -y pcre-devel
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

又一次报错,提示缺少openssl,根据报错提示安装openssl-devel
在这里插入图片描述

[root@server1 nginx-1.20.1]# yum install -y openssl-devel
[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

在这里插入图片描述预编译成功!可以看到同时生成了objs下的Makefile文件,里面记录了所有安装参数。
make从Makefile文件中读取指令,对源代码进行正式编译

[root@server1 nginx-1.20.1]# make  ##编译

编译成功后查看obis文件生成了.o等可执行文件,再进行安装
在这里插入图片描述

[root@server1 nginx-1.20.1]# make install
[root@server1 nginx-1.20.1]# cd /usr/local/nginx/sbin/  ##在自定义安装路径下查看,

在这里插入图片描述
安装成功。执行./nginx即可启动二进制程序

[root@server1 sbin]# ./nginx

在浏览器里也可成功访问。
在这里插入图片描述| nginx解压出来的源码安装包下的文件的解释解压出来的源码安装包下的文件的解释

2.ngingx优化

轻量化编译

在这里插入图片描述
安装好的 nginx二进制程序可以在自定义的安装路经下找到,查看程序大小,有5.8M,可以在编译时关闭gcc的debug模式,重新编译,减小编译时的性能开销,使得编译结果更加轻量化。
关掉gcc的debug模式

[root@server1 nginx-1.20.1]# vim  auto/cc/
[root@server1 nginx-1.20.1]# pwd
/root/nginx-1.20.1

在这里插入图片描述

执行make clean清理第一次编译时的文件。

[root@server1 ~]# cd nginx-1.20.1/
[root@server1 nginx-1.20.1]# make clean
rm -rf Makefile objs

再关闭之前已经开启的nginx,否则二次编译后重启时回报错,提示端口已被占用。

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

重新预编译

[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

编译

[root@server1 nginx-1.20.1]# make

此时查看与编译好的二进制应用程序只有944k,将其复制到安装目录下的nginx中,覆盖旧的程序
在这里插入图片描述

[root@server1 objs]# cp nginx /usr/local/nginx/sbin/nginx 

在这里插入图片描述

隐藏版本号

在这里插入图片描述

当应用curl访问时,会直接给用户返回nginx的版本号,在生产环境中,也需要隐藏版本号,以避免安全漏洞的泄漏。我们可以通过修改源码文件安装来实现。

[root@server1 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@server1 ~]# cd nginx-1.20.1/
[root@server1 nginx-1.20.1]# make clean
rm -rf Makefile objs
[root@server1 nginx-1.20.1]# vim src/core/nginx.h 

在这里插入图片描述

重新编译,

[root@server1 nginx-1.20.1]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@server1 nginx-1.20.1]# make

将编译好的nginx直接复制到安装路经下并覆盖,再次访问时版本号已经被隐藏。

[root@server1 nginx-1.20.1]# cp objs/nginx /usr/local/nginx/sbin/nginx 
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server1 nginx-1.20.1]# /usr/local/nginx/sbin/nginx 
[root@server1 nginx-1.20.1]# curl --head  http://172.25.1.1

在这里插入图片描述

nginx的全局命令

将二进制文件链接到系统命令内,可以不使用绝对路径启动nginx.

[root@server1 nginx-1.20.1]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@server1 nginx-1.20.1]# which nginx 
/usr/local/sbin/nginx

链接好后就可以全局使用nginx了,nginx -t 是nginx配置测试命令在这里插入图片描述

使用systemctl命令来控制nginx

先关闭能nginx,在system内添加编写 nginx的控制文件

[root@server1 ~]# cd /usr/lib/systemd/system
[root@server1 system]# vim nginx.service
[root@server1 system]# cat nginx.service 
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

刷新

systemctl daemon-reload

设置开机自启

systemctl enable --now nginx

即可使用systemctl命令来控制nginx
在这里插入图片描述shu

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值