ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux实战笔记-----lamp架构之nginx源码编译

2021-09-11 09:58:27  阅读:175  来源: 互联网

标签:sbin -- module nginx lamp 源码 usr local


一、源码编译安装nginx

安装gcc pcre依赖性 openssl依赖性

yum install -y gcc pcre-devel openssl-devel

解压nginx安装包,定制安装

tar zxf nginx-1.20.1.tar.gz
cd nginx-1.20.1

查看编译帮助

./configure --help

安装常用功能

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module	

在这里插入图片描述

make一下

make

make install 一下

make install

在这里插入图片描述

查看端口,发现nginx未开启

netstat -antlp

在这里插入图片描述

开启nginx,再次查看端口,发现开启

cd /usr/local/nginx/sbin
./nginx

在这里插入图片描述
关闭服务,创建软链接,方便全局开启

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

在这里插入图片描述
为了确保安全,关闭c语言编译debug

nginx -s stop	
vim ~/nginx-1.20.1/auto/cc/gcc

在这里插入图片描述

安装目录下清空缓存

 make clean

在这里插入图片描述
修改相关配置使其不显示版本

vim ~/nginx-1.20.1/src/core/nginx.h	

在这里插入图片描述
查看

curl -I localhost

在这里插入图片描述

查看修改后运行的nginx大小

du -h /usr/local/nginx/sbin/nginx	

在这里插入图片描述
设置nginx开机启动

vim /usr/lib/systemd/system/nginx.service

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用户

useradd -M  -d /usr/loacl/nginx -s /sbin/nologin nginx

在这里插入图片描述

修改nginx安装目录的nginx.conf

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
查看

ps ax | grep nginx

在这里插入图片描述

三、并发优化

修改配置文件

vim /usr/local/nginx/conf/nginx.conf

修改工作进程数为自动,模块会自动检测

在这里插入图片描述
添加控制多核cpu的线程模块worker_cpu_affinity

在这里插入图片描述
查看内核支持的最大文件打开数

sysctl -a |grep file

在这里插入图片描述
查看系统支持的最大文件打开数

ulimit -a

在这里插入图片描述
修改进程能并发处理的最大连接数

最大连接数按优先级排序

内核支持最大文件打开数 > 系统支持最大文件打开数 > Worker支持最大文件打开数

在这里插入图片描述

修改系统的最大文件打开数

vim /etc/security/limits.conf

在这里插入图片描述

四、nginx平滑升级

准备nginx-1.21.1的安装包,解压

tar zxf nginx-1.21.1.tar.gz
cd nginx-1.21.1

修改相关配置,瘦身nginx

vim auto/cc/gcc

在这里插入图片描述
配置安装

./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx
make

不要make install,保存备份老版本nginx,覆盖安装目录下的老的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-old

\cp -f objs/nginx /usr/local/nginx/sbin/nginx

获取当前nginx主进程pid

ps ax|grep nginx

在这里插入图片描述
干掉master进程

kill -USR2 pid

关闭原worker进程但保留主进程,目的是有机会可以回退

kill -WINCH 老的master的id

五、nginx负载均衡

需要三台虚拟机来进行实验, 将安装好的nginx目录使用scp命令通过ssh传输,使用systemctl来控制nginx,告诉 Systemd 怎么启动这个 Unit

其余两台执行
scp -r /usr/local/nginx/ server2:/usr/local/nginx/
scp /usr/lib/systemd/system/nginx.service server2:/usr/lib/systemd/system/

配置nginx步骤参上

修改默认发布页为本机server号

echo serverx  > /usr/local/nginx/html/index.html

回到server1,使用nginx的http upstream 模块实现客户端访问后端的负载均衡,在http加入upstream模块,模块命名为westos

vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

在这里插入图片描述
刷新服务,加入地址解析
在这里插入图片描述
测试访问

for i in {1..10}; do curl www.westos.org; done

在这里插入图片描述

装修改权重,再次测试,发现172.25.34.2的权重为2,有三分之二的几率被访问
在这里插入图片描述
测试
在这里插入图片描述

加入backup,只要在希望成为后备的服务器ip后面多添加一个backup参数,这台服务器就会成为备份服务器。
在这里插入图片描述
使用nginx sticky实现基于cookie的负载均衡
关闭nginx服务,装一个插件nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

下载unzip压缩工具,并且解压文件

yum install unzip -y
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

进入到nginx的源码编译目录,带上模块–add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42

./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42

执行make,不install,可以看到nginx从928到936 说明插件安装完成
在这里插入图片描述
新的nginx覆盖旧的nginx,重启nginx

cp -f objs/nginx /usr/local/nginx/sbin/nginx

浏览器访问server1
在这里插入图片描述
在浏览器中删掉cookie,重新访问
在这里插入图片描述

标签:sbin,--,module,nginx,lamp,源码,usr,local
来源: https://blog.csdn.net/weixin_47401638/article/details/120098589

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有