服务器 频道

服务器托管一般性设置<3>

  【IT168 服务器学院】5. 软件性能与安全设置
  
  操作系统的优化还要做各个软件部分的性能优化,关于软件性能优化设计的内容很多,这里拿APACHE2+MYSQL+PHP为例简单说明一下。
  
  5.1 APACHE性能与安全
  
  # vi /usr/local/etc/apache2/httpd.conf
  =========+===========+===========+============
  <IfModule prefork.c>
  StartServers 10
  MinSpareServers 10
  MaxSpareServers 15
  ServerLimit 2000
  MaxClients 1500
  MaxRequestsPerChild 0                //这个数值不要改动,保持为“0”更好些
  </IfModule>
  
  AddDefaultCharset GB2312
  ServerTokens Prod                    //安全设定
  ServerSignature Email                //安全设定
  
  基于安全考虑如果用不到目录索引去掉下面一句中的“Indexes”:
  Options Indexes FollowSymLinks
  =========+===========+===========+============
  
  有些网站设计者想限制下载用户所用的IP连接网站的并发连接数,这里有两种途径来做这件事:使用APACHE的模块mod_limitipconn和使用防火墙来作都可以做到。因为防火墙的处理IP连接的效率要大大高于APACHE本身所以使用防火墙做起来性能要好很多。下面简单说一下两者的做法。
  
  5.2 使用MOD_LIMITIP限制IP连接数
  
  # wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz
  # tar –zxvf mod_limitipconn-0.22.tar.gz
  # cd mod_limitipconn-0.22
  # vi Makefile
  修改相关路径适应你的系统
  # make install
  
  # vi /usr/local/etc/apache2/httpd.conf
  =========+===========+===========+============
  <IfModule mod_limitipconn.c>
  <Location / >                        //设置要控制的目录
  MaxConnPerIP 3                       //限制单IP最大进程数
  NoIPLimit image/*                    //非限制的文件类型
  </Location>
  <Location /mp3>
  MaxConnPerIP 1
  OnlyIPLimit audio/mpeg video         //可选限制的文件类型
  </Location>
  </IfModule>
  =========+===========+===========+============
  
  5.2 使用PF防火墙限制IP连接数
  
  # vi /etc/pf.conf
  加上下面一句,每个IP最多可以同时建立3个连接:
  pass in on $ext_if proto tcp to $web_server port www flags S/SA keep state \
  (max 2000, source-track rule, max-src-nodes 1000, max-src-states 3)

  5.3 使用PF防火墙

  如果用户恶意短时间内发起多个连接就BLOCK掉这个IP一段时间。
  
  # vi /etc/pf.conf
  加上下面一句,每个IP最多可以同时建立3个连接,如果连接超过了3个这个IP地址就会被BLOCK一段时间:
  table <abusive_hosts> persist
  block in quick on $ext_if inet proto tcp from <abusive_hosts> to $web port 80
  pass in quick on $ext_if proto tcp from any to $web port 80 flags S/SA \
  keep state (max-src-conn 100, max-src-conn-rate 3/1, max-src-states 3 \
  overload <abusive_hosts> flush)
  
  APACHE2.x在不修改源码的情况下,可以允许设置2万多个用户连接,一般来说这个数值绝对够用了。APACHE1.x在这种情况下最多允许256个用户访问,显然在大多数时候256显得太小了,需要修改源码来增加这个数值,以适应我们的需要。修改的方法很简单,在源码中找到httpd.h然后:
  
  # vi httpd.h
  =========+===========+===========+============
  #define HARD_SERVER_LIMIT 256          //把256改为你需要的
  =========+===========+===========+============
  
  5.4 MYSQL性能与安全
  
  如果你的MYSQL服务不需要和其他主机通信只是在本机上使用的话,这样设定一下很有必要:
  
  # vi /etc/my.conf
  
  [mysqld]
  bind-address = 127.0.0.1              //加上这个设定
  
  下面是MYSQL的几个常用的提高性能的设定,注意这个设置是针对2G内存设置的。
  
  # vi /etc/my.conf
  ===========+===========+===========+============
  [mysqld]
  skip-innodb
  skip-bdb
  skip-name-resolve
  skip-locking
  #log-bin
  set-variable = key_buffer=512M
  set-variable = max_allowed_packet=4M
  set-variable = table_cache=1024
  set-variable = thread_cache=64
  set-variable = join_buffer_size=32M
  set-variable = sort_buffer=32M
  set-variable = record_buffer=32M
  set-variable = max_connections=512
  set-variable = wait_timeout=120
  set-variable = interactive_timeout=120
  set-variable = max_connect_errors=30000
  set-variable = long_query_time=1
  set-variable = max_heap_table_size=256M
  set-variable = tmp_table_size=128M
  set-variable = thread_concurrency=8
  set-variable = myisam_sort_buffer_size=128M
  ===========+===========+===========+============
  
  还有一种提高数据库性能的方案就是在单机上运行多个MYSQL服务(每个服务监听不同的端口),这种方案对服务器硬件要求较高。
  
  5.5 PHP性能与安全
  
  如果下面的安全设定可能使你的某些PHP程序不能运行,酌情增减一下
  
  # vi php.ini
  ===========+===========+===========+============
  file_uploads=Off
  register_globals = Off
  safe_mode = On
  display_errors = Off
  disable_functions = passthru, exec, system, phpinfo, \
  popen, chroot ,scandir ,chgrp , chown ,escapeshellcmd, escapeshellarg, \
  shell_exec ,proc_open,proc_get_status
  ===========+===========+===========+============

0
相关文章