sszxf 发表于 2018-11-26 07:38:34

[Apache] lamp平台安装【注解版(整理后)】

  大纲:
  一、系统安装
  二、编译安装基本环境
  三、配置虚拟主机及基本性能调优
  四、基本安全设置
  五、附录及相关介绍
  一、系统约定
软件源代码包存放位置/usr/local/src源码包编译安装位置(prefix)/usr/local/software_name脚本以及维护程序存放位置/usr/local/sbinMySQL 数据库位置/var/lib/mysqlApache 网站根目录/data/wwwrootApache 虚拟主机日志根目录/data/logs/wwwApache 运行账户www:wwwyum RPM包信息文件/etc/yum.list  二、系统环境部署及调整
  1. 检查系统是否正常
  # more/var/log/messages
  (检查有无系统内核级错误信息)
  # dmesg (检查硬件设备是否有错误信息)
  # ifconfig(检查网卡设置是否正确)
  # ping www.163.com
  (检查网络是否正常)
  2. 关闭不需要的服务
  # ntsysv
  以下仅列出需要启动的服务,未列出的服务一律关闭:
  crond
  crond是Unix下的一个传统程序,该程序周期地运行用户调度的任务。比起传统的Unix版本,Vixie版本添加了不少属性,而且更安全,配置更简单
  irqbalance
  仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭
  microcode_ctl
  可以编码以及发送新的微代码到kernel以更新Intel IA32系列处理器
  mysql
  一个快速高效可靠的轻型SQL数据库引擎
  network
  激活/关闭启动时的各个网络接口网络。
  random
  保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的。
  sendmail
  邮件服务器
  sshd
  是
  OpenSSH守护进程。用于在不可信网络上提供安全的连接通道。
  Syslog
  syslog是操作系统提供的一种机制,守护程序通常使用这种机制将各种信息写到各个系统日志文件。通常应该启动该服务
  3. 对TCP/IP网络参数进行调整,加强抗SYNFlood能力
  # echo 'net.ipv4.tcp_syncookies = 1'>> /etc/sysctl.conf
  # sysctl -p
  4. 配置yum,导入CentOS RPM-GPG-KEY
  #rpm --importhttp://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
  Or rpm ?import/etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-5
  # yum list | tee /etc/yum.list
  5. 重新启动系统
  # init 6
  6. 使用yum 程序安装所需开发包(以下为标准的RPM 包名称)
  #yum install ntp vim-enhanced gccgcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel
  ncurses-devel zlib-devel libjpeg-devellibpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-develkernel
  7. 定时校正服务器时钟,定时与中国国家授时中心授时服务器同步
  # crontab -e
  加入一行:
  15 3 * * */usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1
  8. 源码编译安装所需包(Source)
  (1) GD2
  gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。
  # cd /usr/local/src
  # wget http://www.libgd.org/releases/oldreleases/gd-2.0.34.tar.gz
  # tar xzvf gd-2.0.34.tar.gz
  # cd gd-2.0.34
  # ./configure --prefix=/usr/local/gd2
  #配置安装路径
  # make
  # make install
  (2) LibXML2
  Libxml2是一个xml c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MITLicense的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、linux、Solaris、MacOsX等平台上运行。
  # cd /usr/local/src
  # wget
  http://xmlsoft.org/sources/libxml2-2.6.32.tar.gz
  http://www.ismole.net/downloads/libxml2-2.6.32.tar.gz
  # tar zvxf libxml2-2.6.32.tar.gz
  # cd libxml2-2.6.32
  # ./configure--prefix=/usr/local/libxml2
  # make
  # make install
  
  (3) LibMcrytpt
  libmcrypt是编码函数库,前身是mcrypt。
  # cd /usr/local/src
  #wget http://voxel.dl.sourceforge.net/ ... mcrypt-2.5.8.tar.gz
  http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
  # tar zvxf libmcrypt-2.5.8.tar.gz
  # cd libmcrypt-2.5.8
  # ./configure --prefix=/usr/local/libmcrypt
  # make
  # make install
  (4) Zlib
  zlib是一套公开源代码的压缩,解压缩的函数库,提供了很多文件操作的方法,但是他不是一套类库,所以有兴趣的人都可以把他进行封装,实现自己的类库,和更高层的接口。
  # cd /usr/local/src
  # wget http://www.zlib.net/zlib-1.2.3.tar.gz
  http://down.itlearner.com/downsoft/tools/zlib-1.2.3.tar.gz
  # tar xzvf zlib-1.2.3.tar.gz
  # cd zlib-1.2.3
  # ./configure --prefix=/usr/local/zlib
  # make
  # make install
  
  (5) Apache日志截断程序
  
  Cronolog是一个小巧高效的日志文件处理工具,可以实现自动的按规则生成周期性的日志文件。
  # cd /usr/local/src
  # wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
  # tar xzvf cronolog-1.6.2.tar.gz
  # cd cronolog-1.6.2
  # ./configure?prefix=/usr/local/cronolog
  # make
  # make install
  10. 升级OpenSSL和OpenSSH
  Openssl包括与加密相关的管理工具和库文件,可以向其它软件包提供加密支持,尤其是OpenSSH 和网络浏览器(为了浏览安全的https网站).
  OpenSSH是一组用于安全地访问远程计算机的连接工具。它可以作为rlogin、rsh rcp 以及telnet
  的直接替代品使用。更进一步,其他任何TCP/IP 连接都可以通过SSH 安全地进行隧道/转发。OpenSSH
  对所有的传输进行加密,从而有效地阻止了窃听、连接劫持,以及其他网络级的***。
  # cd /usr/local/src
  # wget http://www.openssl.org/source/openssl-0.9.8h.tar.gz
  # wget http://mirror.mcs.anl.gov/openssh/portable/openssh-5.0p1.tar.gz
  # tar xzvf openssl-0.9.8h.tar.gz
  # cd openssl-0.9.8h
  # ./config --prefix=/usr/local/openssl
  # make
  # make test
  # make install
  # cd ..
  # tar xzvf openssh-5.0p1.tar.gz
  # cd openssh-5.0p1
  # ./configure
  \
  "--prefix=/usr" \
  "--with-pam" \
  "--with-zlib" \
  "--sysconfdir=/etc/ssh"\
  "--with-ssl-dir=/usr/local/openssl"\
  "--with-zlib=/usr/local/zlib"\
  "--with-md5-passwords"
  # make
  # make install
  代码说明:
  "--with-pam"
  à启用PAM(PluggableAuthentication Modules)支持,使用此选项后还必须在sshd_config中开启UsePAM指令
  "--sysconfdir=/etc/ssh"
  à配置文件目录
  "--with-md5-passwords"
  à支持读取/etc/passwd或/etc/shadow中经过MD5加密的口令
  (1)禁用SSH V1 协议
  
  SSH是指Secure Shell,SSH协议族由IETF(InternetEngineering Task Force)的Network Working Group制定,SSH协议的内容SSH协议是建立在应用层和传输层基础上的安全协议。SSH(SecureShell)是目前比较可靠的为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。
  #vi /etc/ssh/sshd_config
  找到:
  #Protocol 2,1
  改为:
  Protocol 2
  # (2)禁止root直接登录
  #
  此处先建立一个普通系统用户:
  #
  # useradd username
  #
  # passwd username
  #
  找到:
  #
  #PermitRootLoginyes
  #
  改为:
  #
  PermitRootLogin no
  (3)禁用GSSAPI
  #vi /etc/ssh/sshd_config
  找到以下两行,并将他们注释:
  GSSAPIAuthentication yes
  GSSAPICleanupCredentials yes
  (4)禁用DNS 名称解析
  找到:
  #UseDNS yes
  改为:
  UseDNS no
  (5)禁用客户端GSSAPI
  # vi /etc/ssh/ssh_config
  找到:GSSAPIAuthentication yes 将这行注释掉。
  最后,确认修改正确后重新启动SSH 服务
  # servicesshd restart
  # ssh -V
  确认 OpenSSH 以及 OpenSSL
  版本正确。
  以上SSH配置可利用以下脚本自动修改:
  代码:
  #init_ssh
  ssh_cf="/etc/ssh/sshd_config"
  sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
  sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
  #client
  sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
  echo "ssh is init is ok.............."
  三、编译安装L.A.M.P环境
  1. 下载软件
  # cd /usr/local/src
  # wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.9.tar.gz
  #wget http://mirrors.ntua.gr/MySQL/Dow ... ysql-5.0.51b.tar.gz
  # wget http://cn2.php.net/distributions/php-5.2.6.tar.gz
  #wget http://downloads.zend.com/optimi ... glibc23-i386.tar.gz
  #wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
  2. 编译安装MySQL
  
  MySQL是一个真正的多用户、多线程SQL数据库服务器,它是一个客户机/服务器结构的实现。MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL 主要目标是快速、健壮和易用。
  
  查看软件安装模块可以进入解压目录下执行:
  
  
  #./configure ?help |less
  若是以前编译过了,重新编译前执行:
  #make clean
  
  查看分析你的CPU型号:
  http://gentoo-wiki.com/Safe_Cflags
  查找您的GCC编译参数.
  确定系统CPU类型:
  # cat /proc/cpuinfo | grep "model name"
  执行后会看到系统中CPU的具体型号,记下CPU型号。
  # tar xzvf mysql-5.0.51b.tar.gz
  # cd mysql-5.0.51b
  à#./configure \
  "--prefix=/usr/local/mysql" \
  "--localstatedir=/data/mysql/data"\
  "--with-comment=Source" \
  "--with-server-suffix=-learningsky"\
  "--with-mysqld-user=mysql" \
  "--without-debug" \
  "--with-big-tables" \
  "--with-" \
  "--with-collation=utf8_chinese_ci" \
  "--with-extra-charsets=all" \
  "--with-pthread" \
  "--enable-static" \
  "--enable-thread-safe-client" \
  "--with-client-ldflags=-all-static" \
  "--with-mysqld-ldflags=-all-static" \
  "--enable-assembler" \
  "--without-isam" \
  "--without-innodb" \
  "--without-ndb-debug"
  #make
  #make install
  # useradd mysql -d /data/mysql -s/sbin/nologin
  #/usr/local/mysql/bin/mysql_install_db--user=mysql
  #cd /usr/local/mysql
  #chown -R root:mysql .
  #chown -R mysql /data/mysql/data
  #cp share/mysql/my-huge.cnf /etc/my.cnf
  #cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
  #chmod 755 /etc/rc.d/init.d/mysqld
  #chkconfig --add mysqld
  #/etc/rc.d/init.d/mysqld start
  #cd /usr/local/mysql/bin
  #for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
  或用代码编译
  à# vi mysql.sh
  代码:
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  CXXFLAGS="${CFLAGS}"
  ./configure \
  "--prefix=/usr/local/mysql" \
  "--localstatedir=/data/mysql/data"\
  "--with-comment=Source" \
  "--with-server-suffix=-learningsky"\
  "--with-mysqld-user=mysql" \
  "--without-debug" \
  "--with-big-tables" \
  "--with-charset=utf8" \
  "--with-collation=utf8_chinese_ci"\
  "--with-extra-charsets=all" \
  "--with-pthread" \
  "--enable-static" \
  "--enable-thread-safe-client" \
  "--with-client-ldflags=-all-static" \
  "--with-mysqld-ldflags=-all-static" \
  "--enable-assembler" \
  "--without-isam" \
  "--without-innodb" \
  "--without-ndb-debug"
  make && make install
  mkdir -p /data/mysql/data
  useradd mysql -d /data/mysql -s /sbin/nologin
  /usr/local/mysql/bin/mysql_install_db --user=mysql
  cd /usr/local/mysql
  chown -R root:mysql .
  chown -R mysql /data/mysql/data
  cp share/mysql/my-huge.cnf /etc/my.cnf
  cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
  chmod 755 /etc/rc.d/init.d/mysqld
  chkconfig --add mysqld
  /etc/rc.d/init.d/mysqld start
  cd /usr/local/mysql/bin
  for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
  #sh mysql.sh
  即可开始编译
  代码说明:
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
  CXXFLAGS="${CFLAGS}"
  ./configure \
  "--prefix=/usr/local/mysql" \
  "--localstatedir=/data/mysql/data" \
  #指定默认数据库文件保存目录
  "--with-comment=Source" \
  "--with-server-suffix=-mylinuxsky" \
  #服务器后缀名改成主机后缀
  "--with-mysqld-user=mysql" \
  #MySQL用户名
  "--without-debug" \
  #去除debug排除故障模式
  "--with-big-tables" \
  #在32位平台上支持大于4G行的表
  "--with-charset=utf8" \
  #指定你所需要的字符集参数(utf8,utf8...)
  "--with-collation=utf8_chinese_ci" \ #字符集校正码(utf8_chinese_ci,...)
  "--with-extra-charsets=all" \
  #添加所有文字符支持
  "--with-pthread" \
  #强制使用pthread库(posix线程库)
  "--enable-static" \
  #使用静态方式
  "--enable-thread-safe-client" \
  #以线程方式编译客户端
  "--with-client-ldflags=-all-static" \
  #以纯静态方式编译客户端
  "--with-mysqld-ldflags=-all-static" \
  #以纯静态方式编译服务端
  "--enable-assembler" \
  #使用一些字符函数的汇编版本
  "--without-isam" \
  #去掉isam表类型支持,现在很少用了,isam表是一种依赖平台的表
  "--without-innodb" \ #去掉innodb表支持,innodb是一种支持事务处理的表,适合企业级应用
  "--without-ndb-debug" #去除ndb-debug排除故障模式
  make && make install
  mkdir -p /data/mysql/data
  useradd mysql -d /data/mysql -s /sbin/nologin
  /usr/local/mysql/bin/mysql_install_db --user=mysql
  cd /usr/local/mysql
  chown -R root:mysql .
  chown -R mysql /data/mysql/data
  cp share/mysql/my-huge.cnf /etc/my.cnf
  cp share/mysql/mysql.server /etc/rc.d/init.d/mysqld
  chmod 755 /etc/rc.d/init.d/mysqld
  chkconfig --add mysqld
  #将mysql 加入到服务里去
  /etc/rc.d/init.d/mysqld start
  cd /usr/local/mysql/bin
  for i in *; do ln -s /usr/local/mysql/bin/$i /usr/bin/$i; done
  #sh mysql.sh
  即可开始编译.
  3. 编译安装Apache
  Apache是目前互联网上最流行的Web服务器,它可以运行在几乎所有广泛使用的计算机平台上。
  # cd /usr/local/src
  # tar zxvf httpd-2.2.9.tar.gz
  # cd httpd-2.2.9
  # ./configure \
  "--prefix=/usr/local/apache2" \
  "--with-included-apr" \
  "--enable-so" \
  "--enable-deflate=shared" \
  "--enable-expires=shared" \
  "--enable-rewrite=shared" \
  "--enable-static-support" \
  "--disable-userdir"
  # make
  # make install
  # echo '/usr/local/apache2/bin/apachectlstart
  ' >> /etc/rc.local
  #开机的时候自动启动apache服务器
  代码说明:
  #./configure\
  "--prefix=/usr/local/apache2" \
  "--with-included-apr" \
  #在编译时强制使用当前源代码中绑定的APR版本,仅在2.2.3以后的版本中可用
  "--enable-so" \
  #核心能够装载DSO(即对单个模块的动态加载)
  "--enable-deflate=shared" \
  #支持网页压缩
  "--enable-expires=shared" \
  #支持 HTTP 控制
  "--enable-rewrite=shared" \
  #支持 URL
  重写
  "--enable-static-support" \
  #使用静态连接(默认为动态连接)编译所有二进制支持程序。
  "--disable-userdir"
  #禁止用户从自己的主目录中提供页面
  4. 编译安装PHP
  
  PHP的全名为HypertextPreprocessor,它是个被广泛运用在网页程式撰写的语言,尤其是它能适用于网页程式的开发及能够嵌入HTML文件之中,它的语法和C、Java及Perl等语法相似,且学习起来更容易上手。PHP的目地是为了能使网站开发者可以快速地撰写动态网页。
  # cd /usr/local/src
  # tar zxvf php-5.2.6.tar.gz
  # cd php-5.2.6
  #./configure \
  "--prefix=/usr/local/php" \
  "--with-apxs2=/usr/local/apache2/bin/apxs"\
  "--with-config-file-path=/usr/local/php/etc" \
  "--with-mysql=/usr/local/mysql"\
  "--with-libxml-dir=/usr/local/libxml2" \
  "--with-gd=/usr/local/gd2" \
  "--with-jpeg-dir" \
  "--with-png-dir" \
  "--with-bz2" \
  "--with-freetype-dir" \
  "--with-iconv-dir" \
  "--with-zlib-dir " \
  "--with-openssl=/usr/local/openssl" \
  "--with-mcrypt=/usr/local/libmcrypt" \
  "--enable-soap" \
  "--enable-gd-native-ttf" \
  "--enable-ftp" \
  "--enable-mbstring" \
  "--enable-exif" \
  "--disable-ipv6" \
  "--disable-cgi" \
  "--disable-cli"
  # make
  # make install
  # mkdir/usr/local/php/etc
  # cp php.ini-dist /usr/local/php/etc/php.ini
  代码说明:
  #./configure \
  "--prefix=/usr/local/php" \
  "--with-apxs2=/usr/local/apache2/bin/apxs" \ #将PHP模块编译进apache
  "--with-config-file-path=/usr/local/php/etc" \ #将PHP的主配置文件放在什么地方,这是个人习惯
  "--with-mysql=/usr/local/mysql" \
  #指定mysql的路径
  "--with-libxml-dir=/usr/local/libxml2" \
  "--with-gd=/usr/local/gd2" \
  "--with-jpeg-dir" \
  "--with-png-dir" \
  "--with-bz2" \
  "--with-freetype-dir" \
  "--with-iconv-dir" \
  "--with-zlib-dir " \
  "--with-openssl=/usr/local/openssl" \
  "--with-mcrypt=/usr/local/libmcrypt" \
  "--enable-soap" \
  #启用soap函数库
  "--enable-gd-native-ttf" \
  "--enable-ftp" \
  #启用ftp函数库
  "--enable-mbstring" \
  #启用多字节字符串函数库
  "--enable-exif" \
  #启用exif函数库
  "--disable-ipv6" \
  #禁掉ipv6协议
  "--disable-cgi" \
  #禁掉cgi支持
  "--disable-cli"
  #禁掉cli模式,提升速度和安全性.
  #5.Xcache的安装.
  XCache是一套华人所开发的PHP 加速器,号称稳定性高。
  #tar xvf xcache-1.2.2.tar.gz
  #/usr/local/php/bin/phpize
  ./configure --enable-xcache --enable-xcache-coverager--with-php-config=/usr/local/php/bin/php-config \
  --enable-inline-optimization --disable-debug
  
  #vi/usr/local/php/etc/php.ini
  (将以下内容加入php.ini最后面)
  代码:
  
  zend_extension      =/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
  
  xcache.admin.user   = "admin"
  ;如何生成md5密码: echo -n"password"| md5sum
  xcache.admin.pass   = "fb88eaa6f3c3bc09b5a66f16ccac3964"#密码为hmg4802959
  

  ; Change xcache.size to tune the>  xcache.size         = 24M
  xcache.shm_scheme   = "mmap"
  xcache.count      = 4
  xcache.slots      = 8K
  xcache.ttl          = 0
  xcache.gc_interval= 0

  ; Change xcache.var_size to adjust the>  xcache.var_size   = 8M
  xcache.var_count    = 1
  xcache.var_slots    = 8K
  xcache.var_ttl      = 0
  xcache.var_maxttl   = 0
  xcache.var_gc_interval =   300
  xcache.test         = Off
  xcache.readonly_protection = On
  xcache.mmap_path    = "/tmp/xcache"
  xcache.coredump_directory =   ""
  xcache.cacher       = On
  xcache.stat         = On
  xcache.optimizer    = Off
  
  xcache.coverager    = On
  xcache.coveragedump_directory = ""
  6. 安装Zend Optimizer
  ZendOptimizer用优化代码的方法来提高PHP 4.0应用程序的执行速度。实现的原理是对那些在被最终执行之前由运行编译器(Run-TimeCompiler)产生的代码进行优化。
  # cd /usr/local/src
  # tarxzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
  # ./ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh
  安装Zend Optimizer过程的最后不要选择重启Apache。
  7. 整合Apache与PHP
  # vi /usr/local/apache2/conf/httpd.conf
  找到:
  AddType application/x-gzip .gz .tgz
  在该行下面添加
  AddType application/x-httpd-php .php
  AddOutputFilterByType DEFLATE text/htmltext/plain text/xml
  找到:
  
  DirectoryIndex index.html
  
  将该行改为
  
  DirectoryIndex index.html index.htm index.php
  
  找到:
  #Include conf/extra/httpd-mpm.conf
  #Include conf/extra/httpd-info.conf
  #Include conf/extra/httpd-vhosts.conf
  #Include conf/extra/httpd-default.conf
  去掉前面的“#”号,取消注释。
  注意:以上4 个扩展配置文件中的设置必须按照相关原则进行配置!
  修改完成后保存退出。
  # /usr/local/apache2/bin/apachectl restart
  8. 查看确认L.A.M.P环境信息、提升PHP 安全性
  在网站根目录放置 phpinfo.php 脚本,检查phpinfo中的各项信息是否正确。
  
  确认 PHP 能够正常工作后,在 php.ini 中进行设置提升 PHP安全性。
  # vi /usr/local/php/etc/php.ini
  找到:
  disable_functions =
  设置为:
  phpinfo,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status,error_log,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server
  
  注:这些禁用的参数都是系统参数,启用对系统安全有危害!
  9.apache配置
  Apache虚拟主机配置解释:
  NameVirtualHost *:80
  
  ServerAdmin geyongliang2003@yahoo.com.cn#网站管理员邮件地址
  DocumentRoot "/data/www/wwwroot" #网站存放的根目录
  ServerName www.test.com
  #网站域名
  ServerAliasmylinuxsky.test.com
  #网站域名别名
  #   ErrorLog
  "/data/logs/error-bbs.learningsky.org_log" #记录错误日志
  #CustomLog "|/usr/local/cronolog
  /data/logs/access_bbs.learningsky.org.%Y%m%d"combined env=!dontlog #记录网
  站日志
  
  基本的性能优化:
  #vi/usr/local/apache2/conf/extra/httpd-default.conf
  Timeout 15
  KeepAlive Off
  MaxKeepAliveRequests 50
  KeepAliveTimeout 5
  UseCanonicalName Off
  AccessFileName .htaccess
  ServerTokens Prod
  ServerSignature Off
  HostnameLookups Off
  #vi/usr/local/apache2/conf/extra/httpd-mpm.conf
  
  ServerLimit      2000
  StartServers         10
  MinSpareServers      10
  MaxSpareServers   15
  MaxClients         2000
  MaxRequestsPerChild10000
  
  日志相关配置:
  1.日志分割:安装cronolog软件
  2.过滤掉无需记录的日志
  #vi httpd.conf
  找到:
  LogFormat"%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined
  后面加入如下:
  # filter the localhost visit
  SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
  # filter some special directories
  SetEnvIf Request_URI "^ZendPlatform.*$" dontlog
  SetEnvIf Request_URI \.healthcheck\.html$ dontlog
  SetEnvIf Remote_Addr "::1" dontlog
  SetEnvIf Request_URI "\.getPing.php$"dontlog
  SetEnvIf Request_URI "^/error\.html$" dontlog
  SetEnvIf Request_URI "\.gif$" dontlog
  SetEnvIf Request_URI "\.jpg$" dontlog
  SetEnvIf Request_URI "\.css$" dontlog
  其它根据自己的需要做一些调整。
  另一种日志不记录图片的方法:
  
  SetEnv dontlog 1
  
  CustomLog logs/access_log combined env=!dontlog
  3.日志处理
  压缩每天的日志
  30 3 * * */usr/bin/gzip -f /data/logs/access_www.linuxtone.org.`date -d yesterday+%Y%m%d.log
  删除前三天的日志
  30 5 * **/usr/bin/find /data/logs/ -nameaccess_*.gz-mtime +3 |xargs -r /bin/rm -f
  4.利用awstats分析日志
  http://bbs.linuxtone.org/thread-56-1-1.html
  Apache防盗链:
RewriteEngineOn
RewriteCond%{HTTP_REFERER} !^http://learningsky.com/.*$
RewriteCond%{HTTP_REFERER} !^http://learningsky.com$
RewriteCond%{HTTP_REFERER} !^http://www.learningsky.com/.*$
RewriteCond%{HTTP_REFERER} !^http://www.learningsky.com$
RewriteRule.*\.(
  gif|jpb|png|css|js|swf)$ http://www.learningsky.com/about/nolink.png
  

防盗链配置的说明:


  1.红色部分:表示自己的信任站点。对我的站点来说,设置为 http://www.learningsky.com
  和 http://learningsky.com
2.鲜绿色部分: 要保护文件的扩展名(以|分开)。以这些为扩展名的文件,可以加入你想见如的防盗链格式文件,必须通过红色标注的网址引用,才可以访问。
3.蓝色部分:盗链后的重定向页面。用以输出警示信息,这张图片应该尽可能的小。例如我的警示图片是 http://www.learningsky.com/about/nolink.png。为了简单处理的原因,我的绿色字体部分,要保护的图片扩展中,没有 .png
  的图片,而警示图片是 .png的。我站内没有 .png的其他图片)
当然也可以换成http://www.learningsky.com
  下相应的下载页面这样不仅屏蔽/禁止非本网站的盗链访问,还将盗链请求转给自身的网站,让读者知道谁是真正的原创作者

基本安全设置:


  1.iptables封锁相关端口(推荐读CU白金大哥的两小时玩转iptables)
   2.SSH全安(修改SSH端口限制来源IP登陆,或者参考
  http://bbs.linuxtone.org/thread-106-1-1.html)
   3.Linux防Arp***策略(http://bbs.linuxtone.org/thread-41-1-1.html)
4.注意(还是那句老话:安全工作从细节做起!)
  三、服务器安全性设置
  
  设置系统防火墙
  
  # touch /usr/local/sbin/fw.sh
  将以下脚本命令粘贴到fw.sh 文件中。
  #!/bin/bash
  # Stop iptables servicefirst
  service iptables stop
  # Load Passive FTPKernel modules
  /sbin/modprobeip_conntrack_ftp
  /sbin/modprobeip_nat_ftp
  # Inital chains defaultpolicy
  /sbin/iptables -F -tfilter
  /sbin/iptables -P INPUTDROP
  /sbin/iptables -POUTPUT ACCEPT
  # Enable Native NetworkTransfer
  /sbin/iptables -A INPUT-i lo -j ACCEPT
  # Accept EstablishedConnections
  /sbin/iptables -A INPUT-m state --state ESTABLISHED,RELATED -j ACCEPT
  # ICMP Control
  /sbin/iptables -A INPUT-p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
  # WWW Service
  /sbin/iptables -A INPUT-p tcp --dport 80 -j ACCEPT
  # FTP Service
  /sbin/iptables -A INPUT-p tcp --dport 21 -j ACCEPT
  # SSH Service
  /sbin/iptables -A INPUT-p tcp --dport 22 -j ACCEPT
  # chmod 755 /usr/local/sbin/fw.sh
  # echo '/usr/local/sbin/fw.sh' >>/etc/rc.local
  # /usr/local/sbin/fw.sh
  参考文献:
  LinuxTone.Org(基于centos构建高性能的lamp平台):
  http://bbs.linuxtone.org/thread-122-1-1.html
  LinuxTone.Org(Apache相关问题专题贴):
  http://bbs.linuxtone.org/thread-88-1-1.html
  Discuz!公司Nanu先生文章的相关链接:
  http://www.discuz.net/thread-722804-1-1.html

页: [1]
查看完整版本: [Apache] lamp平台安装【注解版(整理后)】