参考博客:https://www.cnblogs.com/zhang-shijie/p/5294162.html jack.zhang
一、环境说明
系统环境:centos6.5
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
软件包:
mysql5.7
nginx1.15
php5.6
配置阿里云镜像仓库:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum makecache
二、nginx编译安装
1、安装依赖包
yum -y install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel
2.下载nginx
wget http://nginx.org/download/nginx-1.15.10.tar.gz
3.解压
1 [root@localhost ~]# tar -zxf nginx-1.15.10.tar.gz 2 [root@localhost ~]# cd nginx-1.15.10 3 [root@localhost nginx-1.15.10]# ls 4 auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
4.编译安装
[root@localhost nginx-1.15.10]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
[root@localhost nginx-1.15.10]# make && make install
5.创建用户和组及相关文件夹及文件夹权限的修改
groupadd nginx useradd -M -s /sbin/nologin -g nginx nginx chown -R nginx:nginx /usr/local/nginx chown -R nginx:nginx /var/log/nginx chown -R nginx:nginx /var/run/nginx chown -R nginx:nginx /var/lock/nginx chown -R nginx:nginx /var/lock/nginx.lock mkdir -p /var/tmp/nginx/client chown -R nginx:nginx /var/tmp/nginx
6.运行nginx
[root@localhost nginx]# /usr/local/nginx/sbin/nginx [root@localhost nginx]# /usr/local/nginx/sbin/nginx -s reload [root@localhost nginx]# /usr/local/nginx/sbin/nginx -s stop
修改监听端口位8090
vim /usr/local/nginx/conf/nginx.conf
修改:listen 8090;
运行检查: [root@localhost nginx]# ps -ef | grep nginx root 4529 1 0 07:06 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx 4530 4529 0 07:06 ? 00:00:00 nginx: worker process root 4534 1721 0 07:06 pts/0 00:00:00 grep nginx [root@localhost nginx]# lsof -i:8090 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nginx 4529 root 6u IPv4 28718 0t0 TCP *:8090 (LISTEN) nginx 4530 nginx 6u IPv4 28718 0t0 TCP *:8090 (LISTEN)
7.查看nginx主进程或者ps
[root@localhost nginx]# cat /var/run/nginx/nginx.pid 4529
8.nginx主配置文件
[root@Server1 conf]# grep -v "#" nginx.conf | grep -v "^$" #全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,Nginx的PID路径,日志路径等。 worker_processes 1; #默认启动一个工作进程 events { #events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。 worker_connections 1024; #设置nginx可以接受的最大并发,多个进程只和 } http { #http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,http块可以包含多个server块,而一个server块中又可以包含多个location块,server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。 include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型 sendfile on; #是否调用 sendfile 函数(zero copy -->零copy方式)来输出文件,普通应用打开,可以大幅提升nginx的读文件性能,如果服务器是下载的就需要关闭, keepalive_timeout 65; #长连接超时时间,单位是秒 server { #设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个locating模块。比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用8090端口提供web服务、 listen 8090; #server的全局配置,配置监听的端口 server_name localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配。 location / { #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,都是在location中提现的,主要是基于nginx接受到的请求字符串,对用户请求的UIL进行匹配,并对特定的指令进行处理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三方模块的配置也是在location模块中配置。 root html; #相当于默认页面的目录名称,默认是相对路径,可以使用绝对路径配置。 index index.html index.htm; } error_page 500 502 503 504 /50x.html; #错误页面的文件名称 location = /50x.html { #location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。 root html; #定义默认页面所在的目录 } } }
8.2:配置nginx 主进程的启动用户和工作进程数:
user xxxx; #每一条指令都要以分号结尾 worker_processes 1; #可以指定启动的固定nginx进程数,或使用auto,auto是启动与当前CPU 线程相同的进程数,如CPU是四核八线程的就启动八个进程的Nginx工作进程。
8.3绑定Nginx 工作进程到不同的CPU上:
默认Nginx是不进行保定的,绑定并不能是当前nginx进程独占以一核心CPU,但是可以保证此进程不会运行在其他核心上,这就极大减少了nginx 工作进程在不同cpu上的跳转,减少了CPU对进程的资源分配与回收,因此可以有效的提升nginx服务器的性能,配置如下:
[root@Server1 nginx]# grep process /proc/cpuinfo | wc -l #确认CPU的核心数量 4 四个线程CPU的配置: worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; 八个线程CPU的配置: worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
8.4PID和错误日志文件路径:
#pid logs/nginx.pid; #可以指定绝对路径 #error_log logs/error.log; #指定错误日志路径 #error_log logs/error.log notice; #指定一个日志记录级别 #error_log logs/error.log info; 支持的日志级别: 语法: error_log file [ debug | info | notice | warn | error | crit ] | [{ debug_core | debug_alloc | debug_mutex | debug_event | debug_http | debug_mail | debug_mysql } ] 日志级别 = 错误日志级别 | 调试日志级别; 或者 日志级别 = 错误日志级别; 错误日志的级别: emerg, alert, crit, error, warn, notic, info, debug, 调试日志的级别: debug_core, debug_alloc, debug_mutex, debug_event, debug_http, debug_mail, debug_mysql error_log 指令的日志级别配置分为错误日志级别和调试日志级别,错误日志只能设置一个级别,而且错误日志必须书写在调试日志级别的前面,另外调试日志可以设置多个级别,其他配置方法可能无法满足需求。
8.5 配置文件的引入:include
include file; #file是要导入的文件,支持相对路径,一般在html目录里面 导入一个conf文件,并配置不同主机名的页面,编辑nginx.conf主配置文件: include /usr/local/nginx/conf.d/samsung.conf; #在最后一个大括号里面加入一项,*是导入任何以conf结尾的配置文件 在/usr/local/nginx/conf.d/创建一个samsung.conf,内容如下: [root@Server1 nginx]# grep -v "#" conf.d/samsung.conf | grep -v "^$" server { listen 8090; server_name samsung.chinacloudapp.cn; location / { root html; index index1.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }