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

[经验分享] 安装nginx并为nginx添加sysguard模块

[复制链接]

尚未签到

发表于 2018-11-13 12:22:24 | 显示全部楼层 |阅读模式
  如果nginx被***或者访问量突然变大,nginx会因为负载变高或者内存不够用导致服务器宕机,最终导致站点无法访问。解决方法是利用淘宝开发的模块nginx-http-sysguard,主要用于当负载和内存达到一定的阀值之时,会执行相应的动作,比如直接返回503,504或者其他的.一直等到内存或者负载回到阀值的范围内,站点恢复可用。简单的说,这个模块是让nginx有个缓冲时间。
  我使用的操作系统是Ubuntu12.0.4,下面的操作都以该系统为基础。
  首先到官网上下载nginx1.12.1.tar.gz稳定版,我们使用源码包安装方式
  http://nginx.org/en/download.html
  在虚拟机的/opt目录下新建一个文件夹nginx1.12.1,将下载的源码包放到该文件夹内,在该文件夹中解压源码包,进入解压后的文件夹,进行配置
cd /opt/nginx-1.12.1/  
tar -zxvf nginx1.12.1.tar.gz
  
cd nginx-1.12.1/
  
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_perl_module=dynamic --with-threads --with-stream --with-stream_ssl_module --with-stream_geoip_module=dynamic --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_v2_module --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed'
  配置的参数是直接从另一台机器上copy过来的,这台虚拟机第一次装nginx,配置的时候报很多错,缺少很多库
  报错:adding module in debian/extra/njs-0.1.0/nginx
  ./configure: error: no debian/extra/njs-0.1.0/nginx/config was found
  解决:将配置参数中的“--add-dynamic-module=debian/extra/njs-0.1.0/nginx”删掉
  报错:./configure: error: SSL modules require the OpenSSL library.
  解决:apt-get install openssl libssl-dev
  报错:./configure: error: the HTTP XSLT module requires the libxml2/libxslt libraries.
  解决:apt-get install libxml2-dev libxslt-dev
  报错:/configure: error: the HTTP image filter module requires the GD library.
  解决:apt-get install libgd2-xpm libgd2-xpm-dev
  报错:./configure: error: the GeoIP module requires the GeoIP library.
  解决:apt-get install libgeoip-dev
  我遇到的问题就这些,然后这些库都安装完后,重新配置,然后编译make
  编译过程中遇到的问题
  报错:/usr/bin/ld: cannot find -lperl
  解决:apt-get install libperl-dev
  然后编译通过,然后安装make install,nginx1.12.1安装完了
  接下来添加nginx-http-sysguard模块,从官网上下载这个模块
  https://github.com/alibaba/nginx-http-sysguard/archive/master.zip
  解压到/opt/nginx-1.12.1/中,然后打补丁
cd /opt/nginx-1.12.1  
patch -p1 < ../nginx-http-sysguard-master/nginx_sysguard_1.3.9.patch
  用nginx -V查看安装命令,然后再次配置一次,在之前的配置命令后面加上 --add-module=/opt/nginx-1.12.1/nginx-http-sysguard-master
  然后安装编译make && make install
  nginx安装好后测试一下
  在nginx.conf中server段中添加
sysguard on;  
sysguard_load load=0.01 action=/loadlimit;
  
sysguard_mem swapratio=20% action=/swaplimit;
  
location /loadlimit {
  
return 404;
  
}
  
location /swaplimit {
  
return 503;
  
}
  并在server中配置服务器的网站根目录路径root /Disk/image;
  定义默认请求的路径
  启动/usr/sbin/nginx -c /etc/nginx/nginx.conf
  启动时报错:[emerg] getpwnam("nginx") failed
  解决:useradd nginx 新建一个nginx用户
  启动成功,在/Disk/image下放一个图片,在浏览器上访问这个图片可以访问到
  uptime查看cpu负载情况
  当load average最左边的值高于0.01时,图片就访问不到了。并且页面上会给出提示。 DSC0000.png
  当cpu平均负载降下来的时候就又可以访问到了



运维网声明 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.iyunv.com/thread-634581-1-1.html 上篇帖子: nginx-1.9.1平滑升级到nginx-1.9.7 下篇帖子: Nginx基础入门之nginx基础配置项介绍(1)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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