设为首页 收藏本站
查看: 1041|回复: 0

[经验分享] linux学习笔记——搭建基于nginx的web服务器、多核配置、nginx配置参数

[复制链接]

尚未签到

发表于 2018-11-16 09:37:01 | 显示全部楼层 |阅读模式
  ############ 认识nginx #############
  Nginx:(发音同 engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。  其优点是轻量级(占有内存少),高并发(并发能力强),事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx
  ######## 搭建基于nginx的web服务器 ############
  1.通常情况下nginx只处理静态的网页请求,即html.如果是来自动态的网页请求,如*.php,则nginx就要根据正则表达式查询路径,然后把*.PHP交给PHP去处理
  2.
  1)安装make、gcc、源码安装nginx
  yum install -y make gcc
  tar zxf nginx-1.10.1.tar.gz    ##解压包
  cd nginx-1.10.1        ##进入目录
  /configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module    ##安装配置
  yum install -y pcre-devel    ##在安装配置时,安装缺少的函数库(缺少什么安装什么)pcre是nginx支持具备URI重写功能的rewrite模块
  yum install -y openssl-devel    ##在使用HTTPS服务时候必须装openssl-devel
  make;make install    ##make进行编译 make install生成文件到系统
  ln -s /usr/local/nginx/sbin/nginx /usr/sbin    ##建立软链接,方便之后管理
  2)
  vim auto/cc/gcc
  # debug
  #CFLAGS="$CFLAGS -g"    ##注释debug功能,可减少编译占用资源
  vim src/core/nginx.h
  #define NGINX_VERSION "1.10.1”
  #define NGINX_VER "nginx" ##修改此行,去掉后面的“NGINX_VERSION”,为了安全,这样编译后外界无法获取程序的版本号
  3)检查错误:
  [root@localhost nginx-1.10.1]# nginx -t    ##检查nginx配置文件是否有语法错误
  nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  4)开启nginx并查看nginx服务状态
  nginx    ##开启nginx
  netstat -anlpt|grep 80    ##查看状态
  5)浏览器访问:http://172.25.8.1
  【注意防火墙:/etc/init.d/iptables stop】
  6)

  nginx -s>  kill -s HUP nginx    ##重新加载配置文件,相当于“killall -1 nginx”(之前使用的)
  kill -s QUIT nginx    ##安全退出,相当于“kill -3 nginx”
  kill -s TERM nginx    ##快速退出,不等待处理完当前连接
  ############ nginx的多核配置、进程限制 ############
  1.多核配置
  cd /usr/local/nginx/conf    ##进入目录
  useradd -u 900 -d /usr/local/nginx nginx ##-u指定uid,-d指定目录(如果有就不用建立了)
  vim nginx.conf    ##编辑文件
  user  nginx nginx;    ##添加该内容,定义nginx的用户和用户组
  nginx -t    ##查看nginx服务是否配置成功

  nginx -s>  ps aux| grep nginx ##查看nginx进程个数
  关闭server1虚拟机,打开虚拟机管理器,将CPU个数添加为两个,点击processor,cpu添加为2个,重新打开server1
  lscpu        ##查看CPU个数
  vim nginx.conf    ##编辑文件
  user  nginx;
  worker_processes  2;    ##将work_processes 后接参数改为2
  worker_cpu_affinity 01 10; ##利用多核cpu配置,01 10表示开启两个进程,第一个进程对应第一个CPU内核,第二个进程对应第二个CPU内核
  【8核cpu,开启两个进程,举例:: 10101010 01010101; 两组数表示开启了2个进程,位数可对应着cpu个数,10101010表示开启了2,4,6,8内核,01010101表示开启了1,3,5,7内核】
  nginx -t    ##查看nginx服务是否配置成功
  nginx        ##开启nginx

  nginx -s>  【如果出现nginx: [error] open() "/usr/local/lnmp/nginx/logs/nginx.pid" failed (2: No such file or directory) 则说明nginx没开,使用nginx命令开启】
  ps aux| grep nginx ##查看nginx进程个数
  返回内容:
  root  2567  0.0  0.1  45220  1776 ? Ss 19:51  0:00 nginx: master process nginx
  nginx 5261  0.0  0.1  45636  2004 ? S  20:51  0:00 nginx: worker process
  nginx 5262  0.0  0.1  45636  1836 ? S  20:51  0:00 nginx: worker process
  2.进程限制
  1)
  su nginx
  ulimit  -a    ##查看当前用户进程限制
  返回:open files  (-n) 1024
  max user processes    (-u) 1024
  2)
  su root
  vim /etc/security/limits. conf
  在最后添加:
  nginx    -  nofile  200  ##该用户文件限制为200
  nginx    -  nproc   200  ##该用户进程限制为200
  3)
  su - nginx  切换到该用户
  ulimint  -a  来查看
  返回内容:
  open files  (-n) 200
  max user processes    (-u) 200
  4)
  cd /usr/local/nginx/conf/
  vim nginx.conf  ##编辑文件修改参数
  events {
  use epoll;
  worker_connections  1024; ##这里为root的总进程数
  }
  ##在server位置编添加下列参数
  location /status  {    ##/status为状态文件目录
  stub_status on;    ##开启查看nginx状态信息
  access_log off;
  }
  5)检查、重新加载
  nginx -t    ##查看nginx服务是否配置成功

  nginx -s>  6)测试
  curl 172.25.8.1/status   ##命令行测试查看进程数
  返回内容:
  Active connections: 1
  server accepts handled requests
  3 3 4
  Reading: 0 Writing: 1 Waiting: 0
  ab -n 1000 -c 500 http://172.25.8.1/index.html    ##压力测试,确保已经启动nginx
  (-n表示请求次数,1000个进程   -c表示一次请求并发次数,500个)】
  curl 172.25.8.1/status   ##再次查看进程数
  返回内容:
  Active connections: 1         ##表示活跃的连接数
  server accepts handled requests
  1112 1112 1113         ##总共处理了1112个连接,1112次握手,总共处理了1113个请求
  Reading: 0 Writing: 1 Waiting: 0 ##Reading读取客户连接数,Writing响应数据到客户端的数量,Waiting正在等候下一次请求指令的驻留连接
  ############## nginx加密协议https的访问 ##############
  1)
  vim nginx.conf    ##打开文件去掉下列参数并修改
  server {
  listen       443 ssl;
  server_name  server1.example.com;    ##修改为服务器名
  ssl_certificate      cert.pem;
  ssl_certificate_key  cert.pem;    ##修改为cert.pem
  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;
  location / {
  root   html;
  index  index.html index.htm;
  }
  }
  2)
  cd /etc/pki/tls/certs/
  make cert.pem    ##生成这个文件 参数为下
  Country Name (2 letter code) [XX]:CN
  State or Province Name (full name) []:Shaanxi
  Locality Name (eg, city) [Default City]:xi'an
  Organization Name (eg, company) [Default Company Ltd]:redhat
  Organizational Unit Name (eg, section) []:linux
  Common Name (eg, your name or your server's hostname) []:server1.example.com
  Email Address []:root@server1.example.com
  mv cert.pem   /usr/local/nginx/conf    ##cert.pem放置在/usr/local/nginx/conf下
  3)
  nginx -t    ##查看nginx服务是否配置成功

  nginx -s>  4)
  浏览器访问https://172.25.8.1(选择 I Unserstand The Risks,添加认证)
  ########### nginx配置参数的解释 ###########
  --prefix=path    定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
  --sbin-path=path 设置nginx的可执行文件的路径,默认为  prefix/sbin/nginx.
  --conf-path=path  设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
  --pid-path=path  设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
  --error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
  --http-log-path=path  设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log.
  --user=name  设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
  --group=name  设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
  --with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
  --with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
  --without-http_gzip_module 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
  --without-http_rewrite_module  不编译重写模块。编译并运行此模块需要PCRE库支持。
  --without-http_proxy_module 不编译http_proxy模块。
  --with-http_ssl_module 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
  --with-pcre=path 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
  --with-pcre-jit 编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
  --with-zlib=path 设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
  --with-cc-opt=parameters 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
  --with-ld-opt=parameters 设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib".


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635646-1-1.html 上篇帖子: NGINX由入门到精通:Nginx介绍 下篇帖子: nginx_lua_waf安装测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表