linux企业运维----2.nginx源码编译安装

前言

在企业中,我们往往需要一些架构中的软件定制功能,这就必须采用源码编辑安装软件。
源码编译安装三部曲:configure----make----make install
安装好软件后还需要熟悉配置文件,使其能与其他软件结合。

一、nginx简介

Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅因为响应静态页面的速度非常快,而且它的模块数量是Apache的2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用做mongrel clusters前端HTTP响应。
nginx和Apache一样用模块化设计,nginx模块包括内置模块和第三方模块,其中内置模块中包含主模块和事件模块。
linux企业运维----2.nginx源码编译安装_第1张图片

1.nginx的优点

高并发。静态小文件
占用资源少。2万并发、10个线程,内存消耗几百M。
功能种类比较多。web,cache,proxy。每一个功能都不是特别强。
支持epoll模型,使得nginx可以支持高并发。
nginx 配合动态服务和Apache有区别。(FASTCGI 接口)
利用nginx可以对IP限速,可以限制连接数。
配置简单,更灵活。

2.nginx应用场合

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

二、nginx源码编译安装及简单使用

在sever1安装压缩包nginx-1.20.1.tar.gz,解压后进入到nginx源码目录;
src/core存放着nginx的主干部分、基础数据结构和基础设施的源码。
conf目录下由nginx的主配置文件nginx.conf

源码编译三部曲:配置(configure)、编译(make)、安装(make install);

 lftp 172.25.254.250    ##可以直接在网上寻找该开源软件
 >ls
 >cd pub/docs/lamp
 >get nginx-1.20.1.tar.gz
 >exit
 ls
 tar zxf  nginx-1.20.1.tar.gz  ##解压

linux企业运维----2.nginx源码编译安装_第2张图片

源码编译之1.configure**

源码编译,但在编译过程中会有依赖性存在,安装依赖性后需要重新编译。

./configure --help  ##查看各模块使用情况
./configure --prefix=/usr/local/nginx 

linux企业运维----2.nginx源码编译安装_第3张图片
设置安装的路径为/usr/local/nginx,加上需要的功能模块
linux企业运维----2.nginx源码编译安装_第4张图片linux企业运维----2.nginx源码编译安装_第5张图片linux企业运维----2.nginx源码编译安装_第6张图片linux企业运维----2.nginx源码编译安装_第7张图片
安装常用功能

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio	  ##源码编译;设定下载目录同时安装服务,但是失败,需要下载依赖

nginx安装依gcc、openssl-devel、pcre-devel、zlib-devel软件库。
Pcre全称(Perl Compatible Regular Expressions),中文perl兼容正则表达式.
开发包以devel结尾(zlib-devel)

yum install -y gcc	
yum install -y pcre-devel
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio	##重新编译configure

在configure执行完后,它会生成一些中间文件,中间文件会放在objs目录下;
Makefile是一种配置文件,定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

源码编译之2.make(静态编译)

linux企业运维----2.nginx源码编译安装_第8张图片

源码编译之3.make install

将编译好的文件安装到指定路径,此时objs目录下可以看到 nginx文件。
linux企业运维----2.nginx源码编译安装_第9张图片在我们指定的路径下也能看到编译好的nginx文件。

cd /usr/local/nginx/sbin
./nginx  开启nginx服务

curl -I 172.25.9.1 访问 或firefox:http://172.25.9.1

linux企业运维----2.nginx源码编译安装_第10张图片

linux企业运维----2.nginx源码编译安装_第11张图片开启nginx之后查看端口:
linux企业运维----2.nginx源码编译安装_第12张图片
关闭nginx服务之后,查看端口:

 ./nginx -s stop	关闭服务
netstat -antlpe #查看端口

linux企业运维----2.nginx源码编译安装_第13张图片开启nginx服务时需要经常进行目录切换,不方便,我们创建软链接到/usr/local/sbin/(这样在开启nginx服务的时候就不需要进到目录下开启,软连接的方式可以方便开启全局nginx)

nginx -t:检查配置脚本是否运行正常
nginx:启动nginx,并查看端口

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #设定软链接

linux企业运维----2.nginx源码编译安装_第14张图片修改配置文件,瘦身nginx,降低被攻击机会。(先停掉nginx服务)

nginx -s stop	
vim ~/nginx-1.20.1/auto/cc/gcc 	##关闭c语言编译debug

linux企业运维----2.nginx源码编译安装_第15张图片
当需要二次编译nginx时,必须先执行make clean(清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件)
最后执行make install(因为文件已经复制过去,不需要再次复制)

make clean				#清空缓存makdfile 在安装目录下执行cd nginx-1.20.1

linux企业运维----2.nginx源码编译安装_第16张图片

  vim ~/nginx-1.20.1/src/core/nginx.h	修改相关配置使其隐藏版本号以及/ ,提高安全性
  //
  #define NGINX_VER     "nginx" 		
 原本是"nginx/" NGINX_VERSION
  //

linux企业运维----2.nginx源码编译安装_第17张图片
开启nginx,查看nginx被缩小。
在这里插入图片描述configure ----> make ----> make install 源码编译三部曲
检测语法,并检验,版本号是否被隐藏。
linux企业运维----2.nginx源码编译安装_第18张图片进一步对nginx进行配置,新建nginx用户,通过该用户进行配置,然后重启服务。

cd /usr/local/nginx/conf
useradd -d /usr/local/nginx -M -s /sbin/nologin nginx
vim nginx.conf
///
user  nginx;
worker_processes  auto;

events {
worker_connections  65535;
 }
///
cd /etc/pam.d
vim /etc/security/limits.conf 
///
ngnix  - nofile 65536			##最后一行加入
///
nginx -s reload

二、nginx开机自启

关闭nginx服务,如果想要使用systemctl来控制nginx,首先需要在服务器上获取nginx.service文件。编辑nginx服务文件,然后刷新服务列表,开启服务。

vim /usr/lib/systemd/system/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	开机启动nginx

在这里插入图片描述
如果不能刷新,则过滤工作端worker,并关闭,然后重新执行。

ps ax | grep nginx
kill -9 worker的id

你可能感兴趣的:(linux企业运维实战,nginx,linux,运维)