一.系统约定
    软件源代码包存放位置      /root/lamp
    源码包编译安装位置(prefix)   /usr/local/software_name
    脚本以及维护程序存放位置   /usr/local/sbin
    MySQL 数据库位置          /var/lib/mysql
    Apache 网站根目录          /var/www/html
    Apache 虚拟主机日志根目录  /var/www/logs
    Apache 运行帐户            www:www


二、系统环境配置
1、  # ntsysv
   以下仅列出需要启动的服务,未列出的服务一律关闭:
   
   atd                # 运行用户用At命令调度的任务。也在系统负荷比较低时 运行批处理任务。
   crond              # Linux下的计划任务 
   irqbalance         #irqbalance是一个提高系统性能的服务,它可以根据CPU的压力情况,将各种IRQ重新指定到不同的CPU进行处理,这个特性主要用于x86 和 x86_64 系统。
   microcode_ctl      # 可以编码以及发送新的微代码到kernel以更新Intel IA32系列处理器(Pentium Pro,PII,PIII,Pentium 4,Celeron, Xeon 等等 – 全部 P6 以及更高,不包括 pentium classics)。
   network            # 在系统启动时激活所有的网络接口。
   sendmail           #邮件服务器。
   sshd               # Secure Shell Protocol,实现安全地远程登陆管理主机。
   syslog             # 记录所有的系统行为。

2、重启系统
      #  reboot

3、 使用yum程序安装所需软件包(以下为标准的RPM包名称)
      # yum install ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel kernel

4、定时校正服务器时钟,定时与中国国家授时中心授时服务器同步
      # crontab -e
      加入一行:
      */30 * * * * ntpdate 210.72.145.44

5、源代码编译安装所需包
(1) GD2
       # cd /root/lamp
       # 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
       # cd /root/lamp
       # wget ftp://xmlsoft.org/libxml2/libxml2-2.6.29.tar.gz
       # tar xzvf libxml2-2.6.29.tar.gz
       # cd libxml2-2.6.29
       # ./configure --prefix=/usr/local/libxml2
       # make
       # make install
(3) LibMcrypt
       # cd /root/lamp
       #wget http://jaist.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.bz2
       # tar xjvf libmcrypt-2.5.8.tar.bz2
       # cd libmcrypt-2.5.8
       # ./configure --prefix=/usr/local/libmcrypt
       # make
       # make install
       # cd libltdl
       # ./configure -enable-ltdl-install 
       # make
       # make install
(4) Apache 日志截断程序
       # cd /root/lamp
       # 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

6、升级OpenSSL和OpenSSH
       # cd /root/lamp
       # wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz
       # wget http://mirror.mcs.anl.gov/openssh/portable/openssh-4.6p1.tar.gz
       # tar xzvf openssl-0.9.8e.tar.gz
       # cd openssl-0.9.8e
       # ./config --prefix=/usr/local/openssl
       # make
       # make test
       # make install
       # cd ..
       # tar xzvf openssh-4.6p1.tar.gz
       # cd openssh-4.6p1
       # ./configure  \
"--prefix=/usr" \
"--with-pam" \
"--with-zlib" \
"--sysconfdir=/etc/ssh" \
"--with-ssl-dir=/usr/local/openssl" \
"--with-md5-passwords"
    # make
    # make install

(1)禁用 SSH V1 协议
找到:
#Protocol 2,1
改为:
Protocol 2

(2)禁止root直接登录
此处先建立一个普通系统用户:
    # useradd username
   # passwd username
找到:
#PermitRootLogin yes
改为:
PermitRootLogin no

(3)禁用服务器端GSSAPI
找到以下两行,并将它们注释:
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes


(4)禁用 DNS 名称解析
找到:
#UseDNS yeas
改为:
UseDNS no

(5)禁用客户端 GSSAPI
# vi /etc/ssh/ssh_config
找到:
GSSAPIAuthentication yes
将这行注释掉。

最后,确认修改正确后重新启动 SSH 服务
# service sshd restart
# ssh -v 
确认 OpenSSH 以及 OpenSSL 版本正确。


三、编译安装L.A.M.P环境
1、编译安装MySQL
    # ./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --with-comment=Source --with-server-suffix=-Comsenz --with-mysqld-user=mysql --without-debug --with-big-tables --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
    # useradd mysql
    # cd /usr/local/mysql
    # bin/mysql_install_db --user=mysql
    # chown -R root:mysql .
    # chown -R mysql /var/lib/mysql
    # cp share/mysql/my-huge.cnf /etc/my.cnf
    # cp share/mysql/mysql.server /etc/init.d/mysqld
    # chmod 755 /etc/init.d/mysqld
    # chkconfig --add mysqld
    # chkconfig --level 3 mysqld on
    # /etc/rc.d/init.d/mysqld start
    # bin/mysqladmin -u root password 'password_for_root'

 2、编译安装Apache
    # tar zxvf httpd-2.2.14.tar.gz
    # cd httpd-2.2.14
    #./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
    # /usr/local/apache2/bin/apachectl start

3、编译安装php
    # tar zxvf php-5.3.0.tar.gz
    # cd php-5.3.0
    # ./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-production /usr/local/php/etc/php.ini

4、安装Zend Optimizer
   # cd /root/lamp
   # tar xzvf ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz
   # ./ZendOptimizer-3.2.8-linux-glibc21-i386/install.sh
   安装Zend Optimizer过程的最后不要选择重启Apache。


5、整合Apache与PHP
    # vim /usr/local/apache2/conf/httpd.conf
找到:
AddType application/x-gzip .gz .tgz
在该行下面添加
AddType application/x-httpd-php .php

找到:
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
将该行改为
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php
</IfModule>

找到:
#Include conf/extra/httpd-mpm.conf

去掉前面的“#”号,取消注释。这里是指虚拟机配置文件,可以自己定义


修改完成后保存退出。
# /usr/local/apache2/bin/apachectl restart

6. 查看确认L.A.M.P环境信息、提升 PHP 安全性
   在网站根目录放置 phpinfo.php 脚本,检查phpinfo中的各项信息是否正确。
   #vi phpinfo.php
   <?
   phpinfo();
   ?>
确认 PHP 能够正常工作后,在 php.ini 中进行设置提升 PHP 安全性。
   # vim /usr/local/php/etc/php.ini
        找到:
        disable_functions =
        设置为:
        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