irpas技术客

ubuntu服务器部署nginx(优化实践,linux修改文件最大打开数)_手撕源码,脚踏框架

未知 3525

安装nginx

这里我们直接使用apt安装吧,使用二进制源码进行make编译安装也可,但是,安装nginx所需的依赖库太繁琐,稍有不慎就会导致前功尽弃,我们直接使用nginx

#更新源 sudo apt update #安装nginx sudo apt install nginx

了解通过源安装的nginx的目录结构

所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下程序文件在/usr/sbin/nginx日志放在了/var/log/nginx中并已经在/etc/init.d/下创建了启动脚本nginx默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)

启动nginx

#启动nginx sudo systemctl start nginx #查看是否成功 sudo systemctl status nginx #本地访问测试是否成功,成功的话则会返回nginx的首页的html代码 sudo curl localhost

外部访问测试

? 首先你必须开放对应端口,查看防火墙设置,云服务器的可以去控制台直接打开即可。然后再外部浏览器访问IP即可,成功的话就会显示这个

nginx的使用,这里就不细说了,资料很多,大多就是配置文件

(最佳实践) 这里的也就是配置nginx的全局参数,通过与自己服务器的配置相配合,达到nginx性能最优

这种情况个人使用,应该很少会遇到,也就是nginx在高并发下,可能会报错“Too many open files”,导致服务器崩溃,那这是什么原因?大家可以百度一下linux文件最大打开数。对应nginx的配置项,也就是这个配置项

user nobody nobody; worker_processes 2; error_log logs/error.log notice; pid logs/nginx.pid; #这个,相信大家很少看见到这个配置 worker_rlimit_nofile 65535; events{ use epoll; worker_connections 65536; }

首先要说明,这个参数是要被限制于你linux系统的限制,所以说这个配置项需要结合最大文件打开数来配置

最大文件打开数:这个限制说明,一个用户在能够在一个单独会话中所能打开的最大文件数。 #通过ulimit命令查看 ulimit -n #结果:(服务器初始情况下,一般都是1024)

最大文件打开数为1024,如果nginx在多并发情况下,是远远不够的,经常会报错,我们这里需要修改,修改为符合自己的限制,我的服务器是腾讯云2核4G的,客服建议我设置成65535即可

修改最大文件打开数

每用户上限

sudo vim /etc/security/limits.conf

在末尾添加

* hard nofile 65535 * soft nofile 65535 root hard nofile 65535 root soft nofile 65535

修改后,需要logout并重新登录

对于Daemon进程需要其他步骤,修改PAM-LIMITS

sudo /etc/pam.d/common-session

添加以下内容

session required pam_limits.so

修改nginx配置文件

user www; worker_processes 4; #默认进程数为1,为提高性能官方的建议是修改成cpu的内核数或为内核数的2倍,可以减少机器io带来的影响 error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_rlimit_nofile 65535; #配置要和系统的单进程打开文件数一致,可通过 ulimit -n 命令查询 events { #根据系统的最大打开文件数来调整,worker_connections进程连接数量要小于等于系统的最大打开文件数 #worker_connections进程连接数量真实数量 = worker_connections*worker_process worker_connections 16383; # 根据本例,理论上单个进程允许的客户端最大连接数(65535/4) } http { include /etc/nginx/mime.types; default_type application/octet-stream; client_max_body_size 25m; client_header_buffer_size 4k; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; server_tokens off; #隐藏nginx版本号 access_log off; #关闭请求日志优化性能 #access_log /var/log/nginx/access.log main; open_file_cache max=65535 inactive=20s; sendfile on; #tcp_nopush on; keepalive_timeout 60; #gzip on; include /etc/nginx/conf.d/*.conf; }

6.重启nginx

sudo systemctl restart nginx


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #linux修改文件最大打开数 #apt #update #安装nginxsudo #install