목차
LNMP 部署
一、准备工作:
二,完整编译安装的开始!
(1)编译安装PHP 5.2.14所需的支持库:
(2)绿色二进制包安装MySQL 5.5.15
(3)编译安装PHP(FastCGI模式)
(4)编译安装PHP5扩展模块
(5)修改php.ini文件
(6)配置eAccelerator加速PHP:
(7)创建www用户和组,以及虚拟主机使用的目录:
(8)创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
(9)启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:
三、安装Nginx 1.1.3
(1)安装Nginx所需的pcre库:
(2)安装Nginx
(3)创建Nginx日志目录
(4)创建Nginx配置文件
(5)启动Nginx
(6)配置开机自动启动Nginx + PHP
四、简单优化,实现高并发!
(1)Nginx的优化
(3)关于FastCGI 的几个指令:
(4)使用php-fpm 来管理FastCGI,可以修改配置文件中的以下值:

LNMP环境部署

Jun 07, 2016 pm 04:38 PM
lnmp 준비하다 준비 환경 배포 필요

LNMP 部署 一、准备工作: 需要准备的源码包 nginx-1.1.3.tar.gzphp-5.2.14.tar.gzphp-5.2.14-fpm-0.5.14.diff.gzmysql-5.5.33-linux2.6-x86_64.tar.gzlibiconv-1.13.1.tar.gzlibmcrypt-2.5.8.tar.gzmcrypt-2.6.8.tar.gzmemcache-2.2.5.tgzmhash-0.9.9.9.tar

LNMP 部署

一、准备工作:

需要准备的源码包

nginx-1.1.3.tar.gz
php-5.2.14.tar.gz
php-5.2.14-fpm-0.5.14.diff.gz
mysql-5.5.33-linux2.6-x86_64.tar.gz
libiconv-1.13.1.tar.gz
libmcrypt-2.5.8.tar.gz
mcrypt-2.6.8.tar.gz
memcache-2.2.5.tgz
mhash-0.9.9.9.tar.gz
pcre-8.10.tar.gz
eaccelerator-0.9.6.1.tar.bz2
PDO_MYSQL-1.0.2.tgz
ImageMagick/ImageMagick.tar.gz
imagick-3.1.2.tgz
로그인 후 복사

需要用yum安装的包

install libxml2 libxml2-devel libjpeg libjpeg-devel openldap openldap-devel glibc
로그인 후 복사

二,完整编译安装的开始!

(1)编译安装PHP 5.2.14所需的支持库:

tar zxvf libiconv-1.13.1.tar.gz 
cd libiconv-1.13.1/ 
./configure --prefix=/usr/local 
make 
make install 
cd ../
tar zxvf libmcrypt-2.5.8.tar.gz  
cd libmcrypt-2.5.8/ 
./configure 
make 
make install 
/sbin/ldconfig 
cd libltdl/ 
./configure --enable-ltdl-install 
make 
make install 
cd ../../
tar zxvf mhash-0.9.9.9.tar.gz 
cd mhash-0.9.9.9/ 
./configure 
make 
make install 
cd ../
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la 
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so 
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a 
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la 
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so 
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config 
ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
ln -s /usr/lib64/libpng.so /usr/lib/libpng.so
cp -frp /usr/lib64/libldap* /usr/lib/
tar zxvf mcrypt-2.6.8.tar.gz 
cd mcrypt-2.6.8/ 
/sbin/ldconfig 
./configure 
make 
make install 
cd ../
로그인 후 복사

(2)绿色二进制包安装MySQL 5.5.15

安装过程

## 为MySQL建立用户和组 
groupadd -g 3306 mysql 
useradd -g mysql -u 3306 -s /sbin/nologin -M mysql
## 二进制安装方式 
tar xf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local 
ln -sv /usr/local/mysql-5.5.15-linux.2.6-i686 /usr/local/mysql
mkdir /mydata  ## 创建数据保存目录 
chown -R mysql:mysql /mydata/ 
cd /usr/local/mysql 
scripts/mysql_install_db --user=mysql --datadir=/mydata/data     
chown -R root .
## 加入启动脚本 
cp support-files/mysql.server /etc/init.d/mysqld 
chkconfig --add mysqld
##修改配置文件 
cp support-files/my-large.cnf /etc/my.cnf
## 加入mySQL命令
export PATH=$PATH:/usr/local/mysql/bin
## 定义头文件
ln -sv /usr/local/mysql/include /usr/include/mysql
ldconfig
로그인 후 복사

配置过程

vim /etc/my.cnf 在[mysqld]段内加入并修改以下两处

datadir = /mydata/data
thread_concurrency 2    ## (并发线程数,一般是cpu核心的两倍)
로그인 후 복사

vim /etc/profile在里面加入:

PATH=$PATH:/usr/local/mysql/bin
로그인 후 복사

vim /etc/ld.so.conf.d/mysql.conf 写入

/usr/local/mysql/lib
로그인 후 복사

启用过程

service mysqld start 
cd /root/lnmp
로그인 후 복사

输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(ops.cntv.cn):

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'ops.cntv.cn';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY 'ops.cntv.cn';
로그인 후 복사

(3)编译安装PHP(FastCGI模式)

tar zxvf php-5.2.14.tar.gz 
gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1 
cd php-5.2.14/
./configure --prefix=/usr/local/php \ 
--with-config-file-path=/usr/local/php/etc \ 
--with-mysql=/usr/local/mysql \ 
--with-mysqli=/usr/local/mysql/bin/mysql_config \ 
--with-iconv-dir=/usr/local \ 
--with-freetype-dir \ 
--with-jpeg-dir \ 
--with-png-dir \ 
--with-zlib \ 
--with-libxml-dir=/usr \ 
--enable-xml \ 
--disable-rpath \ 
--enable-discard-path \ 
--enable-safe-mode \ 
--enable-bcmath \ 
--enable-shmop \ 
--enable-sysvsem \ 
--enable-inline-optimization \ 
--with-curl --with-curlwrappers \ 
--enable-mbregex \ 
--enable-fastcgi \ 
--enable-fpm \ 
--enable-force-cgi-redirect \ 
--enable-mbstring --with-mcrypt \ 
--with-gd --enable-gd-native-ttf \ 
--with-openssl \ 
--with-mhash \ 
--enable-pcntl \ 
--enable-sockets \ 
--with-ldap \ 
--with-ldap-sasl \ 
--with-xmlrpc \ 
--enable-zip \ 
--enable-soap
make ZEND_EXTRA_LIBS='-liconv' 
make install 
cp php.ini-dist /usr/local/php/etc/php.ini 
cd ../
로그인 후 복사

(4)编译安装PHP5扩展模块

tar zxvf memcache-2.2.5.tgz 
cd memcache-2.2.5/ 
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config 
make 
make install 
cd ../
tar jxvf eaccelerator-0.9.6.1.tar.bz2 
cd eaccelerator-0.9.6.1/ 
/usr/local/php/bin/phpize 
./configure --enable-eaccelerator=shared \
--with-php-config=/usr/local/php/bin/php-config 
make 
make install 
cd ../
tar zxvf PDO_MYSQL-1.0.2.tgz 
cd PDO_MYSQL-1.0.2/ 
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config \
--with-pdo-mysql=/usr/local/mysql 
make 
make install 
cd ../
tar zxvf ImageMagick.tar.gz 
cd ImageMagick-6.5.1-2/ 
./configure 
make 
make install 
ln -s /usr/local/include/ImageMagick-6 /usr/local/include/ImageMagick
cd ../
tar zxvf imagick-2.3.0.tgz 
cd imagick-2.3.0/ 
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config 
make 
make install 
cd ../
로그인 후 복사

(5)修改php.ini文件

手工修改: 查找/usr/local/php/etc/php.ini中的extension_dir = "./" 修改为 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" 增加以下几行

extension = "memcache.so"                                                                                 
extension = "pdo_mysql.so"
extension = "imagick.so"
로그인 후 복사

再查找output_buffering = Off 修改为 On 再查找;cgi.fix_pathinfo=0去掉“;”号,防止Nginx文件类型错误解析漏洞。

(6)配置eAccelerator加速PHP:

mkdir -p /usr/local/eaccelerator_cache 
vi /usr/local/php/etc/php.ini
로그인 후 복사

跳到配置文件的最末尾,加上以下配置信息:

[eaccelerator]
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/usr/local/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
로그인 후 복사

(7)创建www用户和组,以及虚拟主机使用的目录:

/usr/sbin/groupadd www 
/usr/sbin/useradd -g www www 
mkdir -p /web 
chmod +w /web 
chown -R www:www /web
로그인 후 복사

(8)创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):

/usr/local/php/etc/目录中创建php-fpm.conf文件:

rm -f /usr/local/php/etc/php-fpm.conf 
vim /usr/local/php/etc/php-fpm.conf
로그인 후 복사

输入以下内容

<?xml version="1.0" ?>
<configuration> 
  All relative paths in this config are relative to php's install prefix
  <section name="global_options">
    Pid file
    <value name="pid_file">/usr/local/php/logs/php-fpm.pid</value>
    Error log file
    <value name="error_log">/usr/local/php/logs/php-fpm.log</value>
    Log level
    <value name="log_level">notice</value>
    When this amount of php processes exited with SIGSEGV or SIGBUS ...
    <value name="emergency_restart_threshold">10</value>
    ... in a less than this interval of time, a graceful restart will be initiated.
    Useful to work around accidental curruptions in accelerator's shared memory.
    <value name="emergency_restart_interval">1m</value>
    Time limit on waiting child's reaction on signals from master
    <value name="process_control_timeout">5s</value>
    Set to 'no' to debug fpm
    <value name="daemonize">yes</value>
  </section>
  <workers>
    <section name="pool">
      Name of pool. Used in logs and stats.
      <value name="name">default</value>
      Address to accept fastcgi requests on.
      Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
      <value name="listen_address">127.0.0.1:9000</value>
      <value name="listen_options">
        Set listen(2) backlog
        <value name="backlog">-1</value>
        Set permissions for unix socket, if one used.
        In Linux read/write permissions must be set in order to allow connections from web server.
        Many BSD-derrived systems allow connections regardless of permissions.
        <value name="owner"></value>
        <value name="group"></value>
        <value name="mode">0666</value>
      </value>
      Additional php.ini defines, specific to this pool of workers.
      <value name="php_defines">
        <value name="sendmail_path">/usr/sbin/sendmail -t -i</value>
        <value name="display_errors">0</value>
      </value>
      Unix user of processes
      <value name="user">www</value>
      Unix group of processes
      <value name="group">www</value>
      Process manager settings
      <value name="pm">
        Sets style of controling worker process count.
        Valid values are 'static' and 'apache-like'
        <value name="style">static</value>
        Sets the limit on the number of simultaneous requests that will be served.
        Equivalent to Apache MaxClients directive.
        Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
        Used with any pm_style.
        <value name="max_children">128</value>
        Settings group for 'apache-like' pm style
        <value name="apache_like">
          Sets the number of server processes created on startup.
          Used only when 'apache-like' pm_style is selected
          <value name="StartServers">20</value>
          Sets the desired minimum number of idle server processes.
          Used only when 'apache-like' pm_style is selected
          <value name="MinSpareServers">5</value>
          Sets the desired maximum number of idle server processes.
          Used only when 'apache-like' pm_style is selected
          <value name="MaxSpareServers">35</value>
        </value>
      </value>
      The timeout (in seconds) for serving a single request after which the worker process will be terminated
      Should be used when 'max_execution_time' ini option does not stop script execution for some reason
      '0s' means 'off'
      <value name="request_terminate_timeout">0s</value>
      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
      '0s' means 'off'
      <value name="request_slowlog_timeout">0s</value>
      The log file for slow requests
      <value name="slowlog">logs/slow.log</value>
      Set open file desc rlimit
      <value name="rlimit_files">65535</value>
      Set max core size rlimit
      <value name="rlimit_core">0</value>
      Chroot to this directory at the start, absolute path
      <value name="chroot"></value>
      Chdir to this directory at the start, absolute path
      <value name="chdir"></value>
      Redirect workers' stdout and stderr into main error log.
      If not set, they will be redirected to /dev/null, according to FastCGI specs
      <value name="catch_workers_output">yes</value>
      How much requests each process should execute before respawn.
      Useful to work around memory leaks in 3rd party libraries.
      For endless request processing please specify 0
      Equivalent to PHP_FCGI_MAX_REQUESTS
      <value name="max_requests">1024</value>
      Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
      Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
      Makes sense only with AF_INET listening socket.
      <value name="allowed_clients">127.0.0.1</value>
      Pass environment variables like LD_LIBRARY_PATH
      All $VARIABLEs are taken from current environment
      <value name="environment">
        <value name="HOSTNAME">$HOSTNAME</value>
        <value name="PATH">/usr/local/bin:/usr/bin:/bin</value>
        <value name="TMP">/tmp</value>
        <value name="TMPDIR">/tmp</value>
        <value name="TEMP">/tmp</value>
        <value name="OSTYPE">$OSTYPE</value>
        <value name="MACHTYPE">$MACHTYPE</value>
        <value name="MALLOC_CHECK_">2</value>
      </value>
    </section>
  </workers>
</configuration>
로그인 후 복사

需要添加一个软连接

ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
로그인 후 복사

(9)启动php-cgi进程,监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为www:

ulimit -SHn 65535 
/usr/local/php/sbin/php-fpm start
로그인 후 복사

注意:如果要重启,可以使用 reload 命令

三、安装Nginx 1.1.3

(1)安装Nginx所需的pcre库:

tar zxvf pcre-8.10.tar.gz 
cd pcre-8.10/ 
./configure 
make && make install 
cd ../
로그인 후 복사

(2)安装Nginx

tar zxvf nginx-1.1.3.tar.gz 
cd nginx-1.1.3/
./configure --user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_ssl_module
make && make install 
cd ../
로그인 후 복사

(3)创建Nginx日志目录

mkdir -p /web/logs 
chmod +w /web/logs 
chown -R www:www /web/logs
로그인 후 복사

(4)创建Nginx配置文件

/usr/local/nginx/conf/目录中创建nginx.conf文件:

rm -f /usr/local/nginx/conf/nginx.conf 
vi /usr/local/nginx/conf/nginx.conf
로그인 후 복사

输入以下内容:

user  www www;
worker_processes 8;  ## 根据自己的CPU来决定到底应该是多少
error_log  /web/logs/nginx_error.log  crit;
pid        /usr/local/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 65535;
events 
{
  use epoll;
  worker_connections 65535;
} 
http 
{
  include       mime.types;
  default_type  application/octet-stream;
  #charset  gb2312;  
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;      
  sendfile on;
  tcp_nopush     on;
  keepalive_timeout 60;
  tcp_nodelay on; 
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k; 
  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on; 
  #limit_zone  crawler  $binary_remote_addr  10m; 
  server
  {
    listen       80;
    server_name  192.168.0.156;  ## 这里简单测试,所以直接使用IP
    index index.html index.htm index.php;
    root  /web;
    #limit_conn   crawler  20;                                 
    location ~ .*\.(php|php5)?$
    {      
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;
    }    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
      expires      30d;
    } 
    location ~ .*\.(js|css)?$
    {
      expires      1h;
    }
    location /status {
    stub_status on;   ## 开启状态统计,为后面的优化做测试
    }    
    log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for';
    access_log  /web/logs/access.log  access;
   }
}
로그인 후 복사

在/usr/local/nginx/conf/目录中创建.conf文件:

vi /usr/local/nginx/conf/fcgi.conf
로그인 후 복사

输入以下内容:

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
로그인 후 복사

(5)启动Nginx

ulimit -SHn 65535 
/usr/local/nginx/sbin/nginx
로그인 후 복사

(6)配置开机自动启动Nginx + PHP

vim /etc/rc.local
로그인 후 복사

在末尾增加以下内容:

ulimit -SHn 65535
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
로그인 후 복사

四、简单优化,实现高并发!

(1)Nginx的优化

一般来说nginx 配置文件中对优化比较有作用的为以下几项:

worker_processes 8; 
#nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数。
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
#为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到多个cpu。
worker_rlimit_nofile 102400;
#这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit-n 的值保持一致。
use epoll;
#使用epoll 的I/O 模型,这个不用说了吧。
worker_connections 102400;
#每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections。
keepalive_timeout 60;
#keepalive 超时时间。
client_header_buffer_size 4k;
#客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。
open_file_cache max=102400 inactive=20s;
#这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s;
#这个是指多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1;
#open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。
로그인 후 복사

(2)关于内核参数的优化:请修改文件/etc/sysctl.conf

net.ipv4.tcp_max_tw_buckets = 6000
#timewait 的数量,默认是180000。
net.ipv4.ip_local_port_range = 1024 65000
#允许系统打开的端口范围。
net.ipv4.tcp_tw_recycle = 1
#启用timewait 快速回收。
net.ipv4.tcp_tw_reuse = 1
#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接。
net.ipv4.tcp_syncookies = 1
#开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies 来处理。
net.core.somaxconn = 262144
#web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。
net.core.netdev_max_backlog = 262144
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.ipv4.tcp_max_orphans = 262144
#系统中最多有多少个TCP 套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS 攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_max_syn_backlog = 262144
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M 内存的系统而言,缺省值是1024,小内存的系统则是128。
net.ipv4.tcp_timestamps = 0
#时间戳可以避免序列号的卷绕。一个1Gbps 的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
net.ipv4.tcp_synack_retries = 1
#为了打开对端的连接,内核需要发送一个SYN 并附带一个回应前面一个SYN 的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK 包的数量。
net.ipv4.tcp_syn_retries = 1
#在内核放弃建立连接之前发送SYN 包的数量。
net.ipv4.tcp_fin_timeout = 1
#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2 状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些。
net.ipv4.tcp_keepalive_time = 30
#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时。
로그인 후 복사

(3)关于FastCGI 的几个指令:

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;
#这个指令为FastCGI 缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。
fastcgi_connect_timeout 300;
#指定连接到后端FastCGI 的超时时间。
fastcgi_send_timeout 300;
#向FastCGI 传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI 传送请求的超时时间。
fastcgi_read_timeout 300;
#接收FastCGI 应答的超时时间,这个值是指已经完成两次握手后接收FastCGI 应答的超时时间。
fastcgi_buffer_size 4k;
#指定读取FastCGI 应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k。
fastcgi_buffers 8 4k;
#指定本地需要用多少和多大的缓冲区来缓冲FastCGI 的应答。
fastcgi_busy_buffers_size 8k;
#这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers 的两倍。
fastcgi_temp_file_write_size 8k;
#在写入fastcgi_temp_path 时将用多大的数据块,默认值是fastcgi_buffers 的两倍。
fastcgi_cache TEST
#开启FastCGI 缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU 负载,并且防止502 错误。
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301     1d;
fastcgi_cache_valid any     1m;
#为指定的应答代码指定缓存时间,如上例中将200,302 应答缓存一小时,301 应答缓存1 天,其他为1 分钟。
fastcgi_cache_min_uses 1;
#缓存在fastcgi_cache_path 指令inactive 参数值时间内的最少使用次数,如上例,如果在5 分钟内某文件1 次也没有被使用,那么这个文件将被移除。
fastcgi_cache_use_stale error timeout invalid_header http_500;
#不知道这个参数的作用,猜想应该是让nginx 知道哪些类型的缓存是没用的。
로그인 후 복사

(4)使用php-fpm 来管理FastCGI,可以修改配置文件中的以下值:

<value name="max_children">60</value>
#同时处理的并发请求数,即它将开启最多60 个子线程来处理并发连接。
<value name="rlimit_files">102400</value>
#最多打开文件数。
<value name="max_requests">204800</value>
#每个进程在重置之前能够执行的最多请求数。
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 복구 환경으로 부팅할 수 없습니다 Windows 복구 환경으로 부팅할 수 없습니다 Feb 19, 2024 pm 11:12 PM

WinRE(Windows 복구 환경)는 Windows 운영 체제 오류를 복구하는 데 사용되는 환경입니다. WinRE에 들어간 후 시스템 복원, 공장 초기화, 업데이트 제거 등을 수행할 수 있습니다. WinRE로 부팅할 수 없는 경우 이 문서에서는 문제 해결을 위한 수정 사항을 안내합니다. Windows 복구 환경으로 부팅할 수 없습니다. Windows 복구 환경으로 부팅할 수 없는 경우 아래 제공된 수정 사항을 사용하십시오. Windows 복구 환경 상태 확인 다른 방법을 사용하여 Windows 복구 환경으로 들어가십시오. 실수로 Windows 복구 파티션을 삭제하셨습니까? 아래에서 전체 업그레이드 또는 Windows 새로 설치를 수행하십시오. 이러한 모든 수정 사항에 대해 자세히 설명했습니다. 1] Wi-Fi 확인

Python과 Anaconda의 차이점은 무엇입니까? Python과 Anaconda의 차이점은 무엇입니까? Sep 06, 2023 pm 08:37 PM

이번 포스팅에서는 Python과 Anaconda의 차이점에 대해 알아보겠습니다. 파이썬이란 무엇입니까? Python은 줄을 들여쓰고 공백을 제공하여 코드를 읽고 이해하기 쉽게 만드는 데 중점을 둔 오픈 소스 언어입니다. Python의 유연성과 사용 용이성은 과학 컴퓨팅, 인공 지능, 데이터 과학은 물론 온라인 애플리케이션 생성 및 개발을 포함하되 이에 국한되지 않는 다양한 애플리케이션에 이상적입니다. Python은 해석된 언어이기 때문에 테스트를 하면 즉시 기계어로 번역됩니다. C++와 같은 일부 언어를 이해하려면 컴파일이 필요합니다. Python에 대한 능숙도는 이해, 개발, 실행 및 읽기가 매우 쉽기 때문에 중요한 이점입니다. 이는 파이썬을

Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포하는 방법은 무엇입니까? Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포하는 방법은 무엇입니까? Sep 09, 2023 pm 03:27 PM

Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포하는 방법은 무엇입니까? 소개: 오늘날 정보가 폭발적으로 증가하는 시대에 웹 애플리케이션은 사람들이 정보를 얻고 통신하는 주요 방법 중 하나가 되었습니다. 사용자 개인 정보 보호와 정보 ​​신뢰성을 보장하려면 Linux 서버에 신뢰할 수 있는 웹 인터페이스를 배포해야 합니다. 이 문서에서는 Linux 환경에서 웹 인터페이스를 배포하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. Linux 서버를 설치하고 구성하려면 먼저 Li를 준비해야 합니다.

Yolov10: 자세한 설명, 배포, 적용이 모두 한곳에! Yolov10: 자세한 설명, 배포, 적용이 모두 한곳에! Jun 07, 2024 pm 12:05 PM

1. 소개 지난 몇 년 동안 YOLO는 계산 비용과 감지 성능 간의 효과적인 균형으로 인해 실시간 객체 감지 분야에서 지배적인 패러다임이 되었습니다. 연구원들은 YOLO의 아키텍처 설계, 최적화 목표, 데이터 확장 전략 등을 탐색하여 상당한 진전을 이루었습니다. 동시에 사후 처리를 위해 NMS(비최대 억제)에 의존하면 YOLO의 엔드투엔드 배포가 방해되고 추론 대기 시간에 부정적인 영향을 미칩니다. YOLO에서는 다양한 구성 요소의 설계에 포괄적이고 철저한 검사가 부족하여 상당한 계산 중복이 발생하고 모델 기능이 제한됩니다. 이는 최적이 아닌 효율성을 제공하며 성능 향상을 위한 상대적으로 큰 잠재력을 제공합니다. 이 작업의 목표는 사후 처리와 모델 아키텍처 모두에서 YOLO의 성능 효율성 경계를 더욱 향상시키는 것입니다. 이를 위해

Tomcat이 war 패키지를 배포한 후 접근성 문제를 해결하는 방법 Tomcat이 war 패키지를 배포한 후 접근성 문제를 해결하는 방법 Jan 13, 2024 pm 12:07 PM

Tomcat이 배포 후 war 패키지에 성공적으로 액세스할 수 없는 문제를 해결하려면 특정 코드 예제가 필요합니다. 널리 사용되는 Java 웹 서버인 Tomcat을 사용하면 개발자가 자신이 개발한 웹 애플리케이션을 배포용 war 파일로 패키징할 수 있습니다. 그러나 때로는 잘못된 구성이나 다른 이유로 인해 war 패키지에 성공적으로 액세스할 수 없는 문제가 발생할 수 있습니다. 이 기사에서는 이 딜레마를 해결하는 몇 가지 구체적인 코드 예제를 제공합니다. 1. Tomcat 서비스 확인

Flask 애플리케이션용 Gunicorn 배포 가이드 Flask 애플리케이션용 Gunicorn 배포 가이드 Jan 17, 2024 am 08:13 AM

Gunicorn을 사용하여 Flask 애플리케이션을 배포하는 방법은 무엇입니까? Flask는 다양한 유형의 웹 애플리케이션을 개발하는 데 널리 사용되는 경량 Python 웹 프레임워크입니다. Gunicorn(GreenUnicorn)은 WSGI(WebServerGatewayInterface) 애플리케이션을 실행하는 데 사용되는 Python 기반 HTTP 서버입니다. 이 기사에서는 Gunicorn을 사용하여 Flask 애플리케이션을 배포하는 방법을 소개합니다.

CAD를 원활하게 실행하려면 어떤 구성이 필요합니까? CAD를 원활하게 실행하려면 어떤 구성이 필요합니까? Jan 01, 2024 pm 07:17 PM

CAD를 원활하게 사용하려면 어떤 구성이 필요합니까? CAD 소프트웨어를 원활하게 사용하려면 다음 구성 요구 사항을 충족해야 합니다. 프로세서 요구 사항: "Word Play Flowers"를 원활하게 실행하려면 Intel Corei5 또는 AMD Ryzen5 이상 프로세서. 물론 고성능 프로세서를 선택하면 더 빠른 처리 속도와 더 나은 성능을 얻을 수 있습니다. 메모리는 컴퓨터에서 매우 중요한 구성 요소이며 컴퓨터의 성능과 사용자 경험에 직접적인 영향을 미칩니다. 일반적으로 대부분의 일상적인 사용 요구 사항을 충족할 수 있는 최소 8GB의 메모리를 권장합니다. 하지만 더 나은 성능과 원활한 사용 경험을 위해서는 16GB 이상의 메모리 구성을 선택하는 것이 좋습니다. 이는 다음을 보장합니다.

Tomcat에 웹 프로젝트를 배포하기 위한 모범 사례 및 일반적인 문제 해결 방법 Tomcat에 웹 프로젝트를 배포하기 위한 모범 사례 및 일반적인 문제 해결 방법 Dec 29, 2023 am 08:21 AM

Tomcat을 사용하여 웹 프로젝트를 배포하는 모범 사례 및 일반적인 문제에 대한 솔루션 소개: 경량 Java 애플리케이션 서버인 Tomcat은 웹 애플리케이션 개발에 널리 사용되었습니다. 이 기사에서는 웹 프로젝트의 Tomcat 배포에 대한 모범 사례와 일반적인 문제 해결 방법을 소개하고 독자가 더 잘 이해하고 적용할 수 있도록 구체적인 코드 예제를 제공합니다. 1. 프로젝트 디렉터리 구조 계획 웹 프로젝트를 배포하기 전에 프로젝트의 디렉터리 구조를 계획해야 합니다. 일반적으로 다음과 같은 방식으로 정리할 수 있습니다.

See all articles