主机名 | ip | 服务 |
---|---|---|
server1 | 172.25.1.1 | nginx |
步骤一:在官网上下载nginx安装包并解压
下载地址:nginx官网安装包下载
步骤二:认识nginx目录中的文件
1)auto目录:里面有4个子目录,cc是编译使用的,os是判断操作系统类型的,其他都是辅助configure编译的,也就是操作系统有什么特性供nginx使用
2)CHANGES:各版本的改变,bug修复等信息
CHANGES.ru:nginx作者是俄罗斯人,这是俄罗斯版本
3)conf: 为了方便运维配置,conf目录里有示例文件,安装好后会拷贝到安装目录
4)configure:编译
5)contrib:提供nginx语法检测字体
cp -r contrib/vim/* ~/.vim #家目录下如果没有.vim目录,手动新建
6)html:默认发布目录,50x.html是报500错误时的页面
7) src:源码目录
8) 编译完成后会生成一个中间目录objs,里面有个ngx_modules.c,表示编译进nginx的模块,可以打开看一下
9)make完成后再看objs目录,又有新文件
步骤三:修改配置文件 /nginx-1.17.8/src/core/nginx.h
vim nginx-1.17.8/src/core/nginx.h
#define NGINX_VER "nginx/" NGINX_VERSION
改为:
#define NGINX_VER "nginx/"
在此Debug模式模式会插入许多追踪和ASSERT之类的信息,在正常编译过程中结束,会产生几兆大小的包,我们可以在编译之前关闭debug模式,这样在编译结束,只会产生几百K左右的包大小。
vim auto/cc/gcc
# debug
#CFLAGS="$CFLAGS -g" ##本行注释掉,关闭debug日志模式
yum install gcc openssl-devel -y
步骤六:编译
./configure \
###自定义配置:
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
--prefix=PATH
## 指定nginx的安装目录。默认 /usr/local/nginx
--with-http_realip_module
##通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For)
##意义在于能够使得后台服务器记录原始客户端的IP地址
--with-http_ssl_module
##使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装
--without-http_rewrite_module
##perl正则表达式使用在location指令和ngx_http_rewrite_module模块中。
步骤七:编译安装
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
步骤九:修改配置文件,设置nginx为所有人所有组,并进行语法检测
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
nginx -t
此是报如下错误:
nginx: [emerg] getpwnam(“nginx”) failed in /usr/local/nginx/conf/nginx.conf:2
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
是因为没有建立用户nginx
解决:
useradd nginx #建立用户
nginx -t #语法检测
此时报错:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] mkdir() “/var/temp/nginx/client” failed (2: No such file or directory)
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
提示没有找到目录/var/temp/nginx/client
解决:
mkdir -p /var/temp/nginx/client
nginx -t
nginx
ps aux
升级nginx的配置,调整开启的work进程数是由cpu的总核心数决定的(有几核就有几个work进程)
步骤一:关闭虚拟机,修改虚拟机cpu核心数,增加为最大核数4核
步骤二:开启虚拟机,查看逻辑CPU的个数
cat /proc/cpuinfo | grep "processor" | wc -l
步骤三:在nginx配置文件中修改nginx开启的worker进程数
vim /usr/local/nginx/conf/nginx.conf
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
步骤四:重启nginx
重启虚拟机后,再次重启nginx会报错:
nginx: [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
解决办法:
1)进入 cd /usr/local/nginx/conf/ 目录,编辑配置文件nginx.conf ;
2)在配置文件中有个注释的地方: #pid logs/nginx.pid;
3)将注释放开,并修改为:pid /usr/local/nginx/logs/nginx.pid;
4)在 /usr/local/nginx 目录下创建 logs 目录:mkdir /usr/local/nginx/logs
步骤五:nginx重启后,查看进程数
ps ax
步骤六:修改系统最大打开文件数为65536
进程的最大连接数受 Linux 系统进程的最大打开文件数限制,只有执行了 “ulimit -HSn 65535” 之后,worker_connections 才能生效
ulimit -a #查看最大打开文件数,发现只有1024
ulimit -HSn 65536 #修改系统最大打开文件数为65536
步骤七:修改并发连接数为系统最大打开文件数,并且重启nginx
vim /usr/local/nginx/conf/nginx.conf
13 events {
14 worker_connections 65536;
15 use epoll;
16 }
nginx -s reload