知行合一

SecureCRT无法通过密钥ssh登录远程服务器的解决方案

嘟嘟鱼阅读(26)

从MAC换回windows,装了SecureCRT的最新版,发现能直接登录服务器,但是通过这台服务器ssh登录其他服务器提示Permission denied (publickey,gssapi-with-mic).

我换回之前同事给的5.0的那个版本就可以正常用,但是分辨率有点低,不是很清楚,换了个7.0的版本发现还是提示上面的报错,由此确认是 SecureCRT 设置问题,后来问了同事,找到了解决方案:点选项,全局选项,SSH2,勾选“启用OpenSSH代理程序转发(E)”点击确定,重新启动 SecureCRT 即可,我之前自己也勾选过这个,但是没有重启 SecureCRT ,导致无效。

全局选项设置图

网上搜了很多,都没有这种问题的解决方案,分享给大家。

umount 卸载挂载点 卸载存储报错 device is busy

嘟嘟鱼阅读(25)

卸载存储的时候报错

device is busy

解决办法

例:/www 为存储挂载点

fuser -m -v /www

fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息。
-m 参数表明指定的路径是一个挂载点,-v 参数给出详细的输出,可以看出,原来是 ftp进程还在,fuser 还给出了程序的进程号,知道了进程号,你就可以随便怎么处置这个程序了。
另外你也可以添加一个 -k 参数:这招自动把霸占着 /www/ 的程序杀死。

然后重新卸载存储

umount /www

 

rm: cannot remove `xxx’: Operation not permitted问题的处理

嘟嘟鱼阅读(50)

有个客户的站被黑了,被上传了非法文件,无法删除,提示

rm: cannot remove `xxx': Operation not permitted

可以先用lsattr xxx查看文件的隐藏属性。
如果看到

-----a-------

的情况,可以用
chattr -a xxx去除a属性,
然后再进行删除就可以了.

 

有的是加了i,用上面的命令去除i就可以。

linux的chmod,chown命令 详解

嘟嘟鱼阅读(87)

chown 命令使用详解
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。

语法:chown [选项] 用户或组 文件

说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户I D。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。 该命令的各选项含义如下:
-R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。
-v 显示chown命令所做的工作。

指令实例:

chown wang shiyan.c
% 把文件shiyan.c的所有者改为wang。

chown – R wang.users /his
% 把目录/his及其下的所有文件和子目录的属主改成wang,属组改成users。

—————————————————————————

chmod 命令使用详解
chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。

该命令有两种用法。一种是文字设定法;另一种是数字设定法。

1. 文字设定法

语法:chmod [who] [+ | – | =] [mode] 文件名

命令中各选项的含义为:

操作对象who是下述字母中的任一个或者它们的组合:

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”。它是系统默认值。

操作符号可以是:

+ 添加某个权限。

– 取消某个权限。

= 赋予给定权限并取消其他所有权限(如果有的话)。

设置 mode 所表示的权限可用下述字母的任意组合:

r 可读。

w 可写。

x 可执行。

X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

s 在文件执行时把进程的属主或组ID置为该文件的文件属主。

方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。

t 保存程序的文本到交换设备上。

u 与文件属主拥有一样的权限。

g 与和文件属主同组的用户拥有一样的权限。

o 与其他用户拥有一样的权限。

文件名:以空格分开的要改变权限的文件列表,支持通配符。

在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:

chmod g+r,o+r example   % 使同组和其他用户对文件example 有读权限。

2. 数字设定法

我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读

权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。

请看下面的示例
—————————————–
u                g            o
rwx          r-x        r–
111            101        100
—————————————–

实例:

(1)chmod a+x sort
设定文件sort的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限

(2)chmod ug+w,o-x text
设定文件text的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限

(3)chmod u+s a.out
假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
–rws–x–x 1 inin users 7192 Nov 4 14:22 a.out

并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——-”,

即该文件只有其属主具有读写权限。
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),
所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。

因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。

(4)chmod a–x mm.txt
(5)chmod –x mm.txt
(6)chmod ugo–x mm.txt

以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。

(7)chmod 644 mm.txt
即设定文件mm.txt的属性为:-rw-r–r–
文件属主(u)inin 拥有读、写权限与文件属主同组人用户(g) 拥有读权限其他人(o) 拥有读权限

(8)chmod 750 wch.txt
即设定wchtxt这个文件的属性为:-rwxr-x—
文件主本人(u)inin 可读/可写/可执行权与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限

 

nginx与Apache禁止目录执行php文件权限

嘟嘟鱼阅读(9)

Nginx禁止目录执行php文件权限

以下配置均在nginx配置的server处添加

代码如下
location ~ /attachments/.*.(php|php5)?$ {
deny all;
}

禁止attachments目录执行php文件权限
2、多个目录

 代码如下
location ~ /(attachments|upload)/.*.(php|php5)?$ {
deny all;
}

禁止attachments与upload目录执行php文件权限
配置完后,重新reload nginx即可。

1、单个目录

Apache禁止目录执行php文件权限
以Apache 模块方式运行 PHP,你可以在vhosts配置文件中添加如下代码:

 代码如下
<Directory /www/www./upload>
php_flag engine off
</Directory>
<Directory ~ “^/www/.*/upload”>
<Files ~ “.php”>
Order allow,deny
Deny from all
</Files>

</Directory>

禁止upload目录执行php文件权限

 

Cannot open /var/log/sa/sa07: No such file or directory

嘟嘟鱼阅读(12)

安装sar命令的时候中断了,执行sar命令的时候报错:Cannot open /var/log/sa/sa07: No such file or directory

星号值一般是当天的日期。

这个错误是由于没有创建那个文件,可是使用参数-o 让其生成。

#sar -o 07

这样/var/log/sa/目录下就会有文件了。

 

然后就能用了。

解决nginx 504 Gateway Time-out的方法

嘟嘟鱼阅读(7)

最近帮朋友配了个LNMP的环境,之前一直是LAMP的,结果访问移到800多连接数就变的很卡,一会就提示504或者502,改了几处配置文件终于搞定了。

从 错误代码基本可以确定跟nginx本身无关,主要是提交给php-fpm的请求未能正确反馈而导致,一般情况下,提交动态请求的时候,nginx会直接把 请求转交给php-fpm,而php-fpm再分配php-cgi进程来处理相关的请求,之后再依次返回,最后由nginx把结果反馈给客户端浏览器,但 这个服务器目前跑的是个Discuz!,实际上用户所有的请求都是php请求,有的耗费时间比较久,php-cgi进程就一直都被用满,而php- fpm本身的配置文件只打开了10组php-cgi进程,这样的话在线用户稍微多的话就会导致请求无法被正常处理而出错。

概分析出了原 因,下面做就比较容易了,首先是更改php-fpm.conf的几处配置:
把max_children由之前的10改为现在的30,这样就可以保证 有充足的php-cgi进程可以被使用;
把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程 处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。
另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而无法释放,这也是导致nginx出错的原因之一,因此可以将php-fpm的处理方式改成apache模式。
<value name=”style”>apache-like</value>

接着再更改nginx.conf的几个配置项,减少FastCGI的请求次 数,尽量维持buffers不变,加在http {下面:

fastcgi_buffers由 4 64k 改为 2 256k;
fastcgi_buffer_size 由 64k 改为 128K;
fastcgi_busy_buffers_size 由 128K 改为 256K;
fastcgi_temp_file_write_size 由 128K 改为 256K。

好了,重新加载php-fpm和nginx的配置,再次测试,一切ok!

Nginx配置信息说明及虚拟主机的创建使用方法

嘟嘟鱼阅读(6)

本文只介绍Nginx的配置文件信息,以及如何在虚拟站点中使用PHP。

这里假定Nginx被安装在 /usr/local/nginx 目录下,PHP安装在 /usr/local/php 目录下。

一、Nginx主配置文件及解析

Nginx配置文件主要分为4部分:main(全局设置)部分设置的指令将影响其他所有设置;server(主机设置)部分的指令主要用于指定主机和端口;upstream(负载均衡服务器设置)部分指令主要用于负载均衡,设置一系列的后端服务器;location(URL匹配特定位置的设置)部分用于匹配网页位置。四者之间的关系:server继承main,location继承server,upstream既不会继承其他设置,也不会被继承。

# 指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。如果编译Nginx的时候指定了用户和用户组,该选项可以关闭
user  www www;
# 指定Nginx需要开启的进程数,每个进程平均耗费10~12M内存。建议数量设置成与CPU内核的数量一致就可以了。
# cpu的核心数可以使用 cat /proc/cpuinfo | grep flags | grep ‘ lm ‘ | wc -l 或 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 命令进行查
worker_processes  1;
# 定义全局错误日志文件,后面可以设置输出级别:debug、info、notice、warn、error、crit
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
# 用来指定进程id的存储文件位置
pid        logs/nginx.pid;
# 启用TCMalloc的设置,见上节相关的描述
google_perftools_profiles /tmp/tcmalloc;
# 用于绑定worker进程和CPU,该值必须和Linux内核打开文件数关联起来,如将该值设置为65535就必须在Linux命令行中执行 ulimit -HSn 65535
worker_rlimit_nofile 65535;
events {
     # 用来指定Nginx的工作模式,支持的模式有select、poll、kqueue、epool、rtsig和/dev/poll。其中select和poll都是标准的工作模式
     # kqueue和epoll是高效的工作模式,前者用在linux平台上,后者用于BSD系统。
     use epoll;
     # 定义每个进程的最大连接数,默认是1024,该参数的最大连接数受Linux系统进程的最大打开文件数限制,必须使用 ulimit命令
     # 另外,最大客户端连接数max_client=worker_processes*worker_connections,作为反向代理的话还需要除以4。
     worker_connections  65535;
}
http {
     # 引用外部文件,类似于Apache中的include
     include       mime.types;
     # 当出现无法解析的文件时,提示用户下载
     default_type  application/octet-stream;
     # 定义日志的格式,后面的main为格式的名称,可以在access_log指令中进行引用
     #log_format  main  ‘$remote_addr – $remote_user [$time_local] “$request” ‘
     #                  ‘$status $body_bytes_sent “$http_referer” ‘
     #                  ‘”$http_user_agent” “$http_x_forwarded_for”‘;
     #access_log  logs/access.log  main;
     # 设定请求缓冲
     server_names_hash_bucket_size 128;
     client_header_buffer_size 32k;
     large_client_header_buffers 4 32k;
     # 设置客户端能够上传文件大小的限制
     client_max_body_size 600m;
     # 是否开启高效文件传输模式,将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞
     sendfile        on;
     tcp_nopush     on;
     tcp_nodelay  on;
     # 隐藏nginx的版本显示,增强安全性
     server_tokens off;
     # 用于设置客户端连接保持活动的超时时间,单位为秒,默认为75s
     #keepalive_timeout  0;
     keepalive_timeout  65;
     # 用于指定响应客户端的超时时间,这个超时仅限于两个连接活动之间的时间,默认为60s
     #send_timeout 60;
     # 下面是FastCGI的优化指令
     # 连接到后端FastCGI的超时时间
     fastcgi_connect_timeout 300;
     # 向FastCGI传送请求的超时时间
     fastcgi_send_timeout 300;
     # 接收FastCGI应答的超时时间
     fastcgi_read_timeout 300;
     # 指定读取FastCGI应答第一部分需要多大的缓冲区
     fastcgi_buffer_size 64k;
     fastcgi_buffers 4 64k;
     # 默认值是fastcgi_buffers的两倍
     fastcgi_busy_buffers_size 128k;
     # 表示在写入缓存文件时使用多大的数据块,默认为fastcgi_buffers的两倍
     fastcgi_temp_file_write_size 128k;
     # 为FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间
     #fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
     # 开启FastCGI缓存并为其设定一个名称。开启缓存可以有效降低CPU的负载,并且防止502错误的发生。
     # 但是同时也会引起很多问题,要视具体情况而定
     #fastcgi_cache TEST;
     # 用来指定应答代码的缓存时间,下面三条指令表示将200和303应答缓存1小时,301应答缓存1天,其他应答缓存1分钟。
     #fastcgi_cache_valid 200 302 1h;
     #fastcgi_cache_valid 301 1d;
     #fastcgi_cache_valid any 1m;
     # 配置Nginx的HttpGzip模块,开通的前提是安装的时候启用了该模块,使用 /usr/local/nginx/sbin/nginx -V 来查看安装的信息(大写的V)
     # 是否开通gzip
     gzip  on;
     # 允许压缩的页面最小字节数
     gzip_min_length 1k;
     gzip_buffers 4 16k;
     gzip_http_version 1.1;
     # 压缩比,从1到9,越大压缩率越高但越占资源,默认为1
     gzip_comp_level 2;
     # 指定压缩的类型,text/html总是被压缩
     gzip_types text/plain application/x-javascript text/css application/xml;
     # 是否让浏览器缓存压缩过的数据,默认为off
     gzip_vary on;
     # server 用于对虚拟主机的设置,建议每个站点的设置放到外部配置文件中,然后使用include进行引用
     # 这里设置一个默认的主机,当默认访问的时候返回403错误
     server {
         listen       80 default;
         server_name _;
         # 也可以修改成404或者500,根据自身情况进行设置
         return 403;
     }
     # 可以使用include将每个站点的配置引用进来,这样方便对站点进行管理
     include vhosts/piaoyun.cc.conf;
     include vhosts/abc.com.conf;
}

 

二、Nginx设置虚拟主机及对PHP的支持

在conf目录下面创建vhosts目录,并创建站点的配置文件,这里以piaoyun.cc.conf为例。

[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# mkdir -p conf/vhosts
[root@localhost nginx]# vim conf/vhosts/piaoyun.cc.conf

创建的piaoyun.cc.conf配置文件如下:

     # 虚拟主机以server进行定义
     server {
         # 监听的端口,多个端口之间使用空格进行间隔
         listen       80;
         # 用来定义访问的ip地址或者域名,多个域名之间使用空格分开
         server_name  examples.com www.examples.com;
         # 用于指定站点网页的默认编码格式
         charset utf-8;
         # 用来指定此站点的访问日志存放路径,后面的main用于设定日志的格式
         #access_log  logs/examples.com.access.log  main;
         # 用于指定站点的网页根目录,可以是相对路径(相对于nginx安装目录),也可以是绝对路径
         #root /www/examples.com
         # 用于指定访问的默认首页地址
         #index index.html index.php
         # 用来指定站点默认访问的设置,里面的root和index用法和效果与上面是一样的
         # 两种方式使用任何一种都是可以的,这里采用 location / {} 的方式
         location / {
             root   /www/examples.com;
             index  index.html index.php;
         }
         # 使用error_page指令设置各种错误信息的返回页面
         # 错误信息的返回页面大小如果低于512k则会被ie浏览器替换为ie默认的错误页面
         #error_page  404              /404.html;
         error_page   500 502 503 504 /50x.html;
         location = /50x.html {
             root   html;
         }
         # nginx的location指令用于设置url地址匹配,支持正则表达式匹配,也支持条件判断匹配。
         # 可以通过location指令实现nginx对动态、静态网页的过滤处理。
         # 下面是对所有的图片设置缓存30天
         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
             expires 30d;
         }
         # 对js和css文件缓存1小时
         location ~ .*\.(js|css)$ {
             expires 1h;
         }
         # 下面是列出了两种解析php的方式:
         # 第一种是简单的将所有以php结尾的请求都交给本机的8080端口进行处理
         #location ~ \.php$ {
         #    proxy_pass   http://127.0.0.1:8080;
         #}
         # 第二种是将php的请求交给FastCGI进程监听的ip地址及端口,这里转发给PHP_FPM
         location ~ \.php$ {
             # 设定用于解析php的根目录,通常为网站根目录
             root          /www/examples.com;
             # 地址和端口与php_fpm中设置的一致
             fastcgi_pass   127.0.0.1:9000;
             # 默认首页
             fastcgi_index  index.php;
             # 指定防止php动态程序的主目录,也就是$fastcgi_script_name前面指定的路径,建议与网站根目录一致或直接使用$document_root
             fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
             include        fastcgi_params;
         }
         # 防止直接访问 .htaccess 文件,建议开启
         location ~ /\.ht {
             deny  all;
         }
     }

最后创建网站的根目录并设置目录权限:

[root@localhost ~]# mkdir -p /www/examples.com
# 写入权限
[root@localhost ~]# chmod +w /www/examples.com
[root@localhost ~]# chown -R www:www /www/examples.com
# 创建一个测试的php文件
[root@localhost ~]# echo “<? phpinfo(); ?>” >> /www/examples.com/phpinfo.php

这个时候启动php-fpm和nginx之后,应该可以直接访问http://www.piaoyun.cc/phpinfo.php了。

三、优化php-fpm和fastcgi_params配置信息

PHP-FPM的配置文件在/usr/local/php/etc/php-fpm.conf中,下面对常用的配置项进行说明:

<!– 用来配置FastCGI进程监听的IP地址以及端口,默认为127.0.0.1:9000 –>
<value name=”listen_address”>127.0.0.1:9000</value>
<!– 用来配置是否显示PHP错误信息,默认是0不显示,设置为1显示信息 –>
<value name=”display_errors”>0</value>
<!– 用来设置运行FastCGI进程的用户和用户组。这里指定的用户和用户组必须和Nginx配置文件中指定的一致。 –>
<value name=”user”>www</value><value name=”group”>www</value>
<!– 用于设置FastCGI的进程数。根据官方建议,小于2G内存的服务器可以只开启64个进程,4GB以上内存服务器可以开始256个进程。 –>
<value name=”max_children”>128</value>
<!– 执行脚本的时间,默认为0表示无限执行下去。 –>
<value name=”request_terminate_timeout”>0s</value>
<!– 设置PHP-FPM对打开文件描述符的限制,默认为1024。该值必须和Linux内核打开文件数关联起来,
      如将该值设置为65535就必须在Linux命令行中执行 ulimit -HSn 65535。 –>
<value name=”rlimit_files”>65535</value>
<!– 设定每个children最多处理多少个请求后便会自动关闭,默认设置为500。 –>
<value name=”max_requests”>1024</value>
<!– 设置允许访问FastCGI进程解析器的IP地址,如果不在这里指定IP地址,将无法接受Nginx转发过来的PHP解析请求。 –>
<value name=”allowed_clients”>127.0.0.1</value>

fastcgi_param配置文件在 /usr/local/nginx/conf/fastcgi_params中,将其中的fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;中$nginx_version去掉,隐藏nginx的版本。

#fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  SERVER_SOFTWARE    nginx;

四、常见错误及解决方法

首先说明一下,如果nginx启动之后,无法访问网站或者访问有错误,这个时候应该第一时间查看nginx(默认在nginx安装目录的logs文件夹下)或php-fpm(默认在php根目录的logs/php-fpm.log文件中)的日志文件,里面有详细的错误信息。

1. 当访问php文件的时候页面出现“No input file specified”提示,而静态文件则正常。
这个是因为在站点设置中对php扩展的解析里面,fastcgi_param SCRIPT_FILENAME 后面的路径出现错误,使得php-fpm无法找到php文件,解决的方法是将$fastcgi_script_name前面的路径设置成网站根目录的绝对路径即可,注意路径最后没有斜杠/,即:

fastcgi_param SCRIPT_FILENAME /www/piaoyun.cc$fastcgi_script_name;

看到有的网站上面还提到需要将php.ini文件中的cgi.fix_pathinfo项设置为1,但是我没有进行设置也是好的,估计是nginx的版本不同。

2. [ERROR] fpm_unix_conf_wp(), line 124: please specify user and group other than root, pool ‘default’
上面的错误是在php-fpm.log日志文件中出现的,原因是没有设置php-fpm的用户和用户组,或者没有将php-fpm的用户或用户组修改成与nginx的一样。解决方法是修改php-fpm.conf配置文件中user和group,默认情况下这两项配置是被注释的。

<value name=”user”>www</value>
<value name=”group”>www</value>

3. [error] 19075#0: *4 connect() failed (110: Connection timed out) while connecting to upstream, ……
这个错误提示是告诉我们nginx转发到php-fpm的时候连接超时了,所以如果访问量太大的话可以将超时的时间设置长一些。但如果网站访问量不大或者刚开始配置之后就出现这个错误的话,往往是iptables设置的问题。验证的方法是:如果将iptables停止(/etc/init.d/iptables stop)之后访问正常则说明是防火墙配置的问题,在防火墙中增加如下规则即可:

iptables -I INPUT 2 -i lo -p all -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables start

4. 启动nginx的时候出现 [emerg]: getpwnam(“www”) failed 错误
这个错误中getpwnam中间的www可能是其他的名称,主要原因是编译nginx和nginx配置文件(nginx.conf)中设置的用户和用户组不存在,所以只要创建对应的用户和用户组即可。

5. [emerg] 30558#0: setuid(500) failed (11: Resource temporarily unavailable)
错误信息中的setuid中间的数字肯是其他数字,比如501、502等等。这个错误需要一步一步的进行排查,相对有点复杂,解决的方法如下:
首先根据setuid中间的数字查看对应数字的用户是否存在,如果不存在则创建用户:

more /etc/passwd | grep 500
# 如果没有任何信息显示则查看nginx配置文件中指定的用户名称,然后使用useradd创建该用户并指定用户组

如果用户存在的话,则使用 ulimit -n 命令查看服务器文件描述符是多少,默认是1024,然后使用 ps -U www | wc -l 命令查看www用户所启用的进程数量(注意将www用户换成你自己的),如果显示的数量超过了服务器文件描述符的数量,则需要提升该参数,具体的做法是:将nginx.conf中的worker_rlimit_nofile、worker_connections和php-fpm.conf文件中的rlimit_files配置项设置大一些,也可以直接设置成65535(最大值)。然后还需要加大服务器文件描述符的大小。有两种设置方法:

# 一种是修改/etc/security/limits.conf文件,然后重启服务器
echo ‘* – nofile 65535’ >> /etc/security/limits.conf
# 另外一种是使用 ulimit -HSn 65535 命令,将该命令添加到开机启动并放在php-fpm和nginx启动前
ulimit -HSn 65535
cat >> /etc/rc.local <<EOF
/etc/init.d/mysql start
ulimit -SHn 65535
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
EOF

一定要确认“ulimit -HSn ”后面的数字需要和nginx.conf中的worker_rlimit_nofile、worker_connections和php-fpm.conf文件中的rlimit_files配置项设置成相同的数字。

如果安装上面的设置修改之后还有错误的话,恭喜你,你的人品大大的提升了,这种情况是比较少见的,先确认一下你是否进行了重启,如果重启过了还可以将 “ulimit -SHn 65535” 命令添加到/etc/profile 中:

echo “ulimit -SHn 65535” >> /etc/profile