LAMP-Apache服务器安装配置

安装Apache2.2.27:

-------------------------------------------------

cd /soft
wget http://soft.local.com/httpd-2.2.27.tar.gz
tar zxf httpd-2.2.27.tar.gz
cd httpd-2.2.27
./configure --prefix=/usr/local/apache2.2.27 --enable-deflate  --enable-expires  --enable-headers  --enable-modules=most  --enable-so  --with-mpm=worker --enable-rewrite --enable-ssl
make
make install
ln -s /usr/local/apache2.2.27/ /usr/local/apache 
useradd apache -s /sbin/nologin -M
/usr/local/apache/bin/apachectl -l
/usr/local/apache/bin/apachectl -M
/usr/local/apache/bin/apachectl start|stop|restart|graceful
mkdir /var/www/html/{www,bbs,blog} -p
for name in `ls /var/www/html/`;do echo $name > /var/www/html/$name/index.html;done
for name in `ls /var/www/html/`;do cat /var/www/html/$name/index.html;done
ll /usr/local/apache/conf/httpd.conf
tail -100 /usr/local/apache/logs/error_log
egrep -v '^.*#|^$' conf/httpd.conf |nl
echo "Include conf/extra/httpd-vhosts.conf" >> /usr/local/apache/conf/httpd.conf
/usr/local/apache/bin/apachectl -t
/usr/local/apache/bin/apachectl graceful


安装Apache2.4.9

--------------------------------------------------------------

cd /soft
wget http://soft.local.com/httpd-2.4.9.tar.gz
wget http://soft.local.com/apr-1.4.5.tar.gz
wget http://soft.local.com/apr-util-1.3.12.tar.gz
wget http://soft.local.com/pcre-8.10.zip
cd /soft
 tar zxf apr-1.4.5.tar.gz
 cd  apr-1.4.5
 ./configure --prefix=/usr/local/apr
 make
make install
cd /soft
 tar zxf apr-util-1.3.12.tar.gz
 cd apr-util-1.3.12
 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
 make
make install
cd /soft
yum -y install unzip
unzip pcre-8.10.zip
cd pcre-8.10
./configure --prefix=/usr/local/pcre
make
make install
cd /soft
tar zxf httpd-2.4.9.tar.gz
cd httpd-2.4.9
./configure --prefix=/usr/local/apache2.4.9 --enable-deflate  --enable-expires  --enable-headers  --enable-modules=most  --enable-so  --with-mpm=worker --enable-rewrite --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make
make install
ln -s /usr/local/apache2.4.9/ /usr/local/apache 
useradd apache -s /sbin/nologin -M
/usr/local/apache/bin/apachectl -l
/usr/local/apache/bin/apachectl -M
/usr/local/apache/bin/apachectl start|stop|restart|graceful
mkdir /var/www/html/{www,bbs,blog} -p
for name in `ls /var/www/html/`;do echo $name > /var/www/html/$name/index.html;done
for name in `ls /var/www/html/`;do cat /var/www/html/$name/index.html;done
ll /usr/local/apache/conf/httpd.conf
tail -100 /usr/local/apache/logs/error_log
egrep -v '^.*#|^$' conf/httpd.conf |nl
echo "Include conf/extra/httpd-vhosts.conf" >> /usr/local/apache/conf/httpd.conf
/usr/local/apache/bin/apachectl -t
/usr/local/apache/bin/apachectl graceful


=======================================================================

开始安装PHP

建议安装5.3.8以上的版本,因为5.2的版本有漏洞,需要单独打补丁

似乎5.3.28版本有问题

安装PHP5.3.15

---------------------------

cd /soft
wget http://soft.local.com/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
 ./configure --prefix=/usr/local/libiconv
make
make install
yum -y install zlib libxml libjpeg freetype libpng \
gd gd2 gd-devel gd2-devel curl curl-devel libiconv \
zlib-devel libxml2 libxml2-devel libjpeg-devel \
freetype-devel libpng-devel gd-devel curl-devel \
libxslt libxslt-devel ncurses ncurses-devel
cd /soft
wget http://soft.local.com/php-5.3.15.tar.gz
tar zxf php-5.3.15.tar.gz
cd php-5.3.15
./configure \
--prefix=/usr/local/php5.3.15 \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-xmlrpc \
--with-openssl \
--with-zlib \
--with-freetype-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-iconv=/usr/local/libiconv \
--enable-short-tags \
--enable-sockets \
-enable-zend-multibyte \
--enable-soap \
--enable-mbstring \
--enable-static \
--enable-gd-native-ttf \
--with-curl \
--with-xsl \
--enable-ftp \
--with-libxml-dir
make
make install

#对于PHP5.3以上版本可以使用--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 代替--with-mysql=/usr/local/mysql

#这样就不用单独在web服务器上安装完整的mysql了

#PHP5.4版本就已经默认使用mysqlnd作为连接mysql的工具了

ln -s /usr/local/php5.3.15 /usr/local/php
cd /soft/php-5.3.15
/bin/cp /soft/php-5.3.15/php.ini-production /usr/local/php5.3.15/lib/php.ini
vim /usr/local/apache/conf/httpd.conf +98
ServerName 127.0.0.1:80
vim /usr/local/apache/conf/httpd.conf +311
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
vim /usr/local/apache/conf/httpd.conf +166
DirectoryIndex index.html index.php


------------------------------------------------------------

安装PHP5.5.13

-----------------------------------------

cd /soft
wget http://soft.local.com/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
 ./configure --prefix=/usr/local/libiconv
make
make install
yum -y install zlib libxml libjpeg freetype libpng gd gd2 gd-devel gd2-devel curl curl-devel libiconv zlib-devel libxml2 libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel libxslt libxslt-devel ncurses ncurses-devel 
wget http://soft.local.com/php-5.5.13.tar.gz
tar zxf php-5.5.13.tar.gz
cd php-5.5.13
./configure \
--prefix=/usr/local/php5.5.13 \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-xmlrpc \
--with-openssl \
--with-zlib \
--with-freetype-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-iconv=/usr/local/libiconv \
--enable-opcache \
--enable-short-tags \
--enable-sockets \
--enable-soap \
--enable-mbstring \
--enable-static \
--enable-gd-native-ttf \
--with-curl \
--with-xsl \
--enable-ftp \
--with-libxml-dir
make
make install

##--enable-zend-multibyte \   ###可以加上

#--enable-opcache会把opcache.so模块直接放到模块目录,不用再单独安装了

ln -s /usr/local/php5.5.13 /usr/local/php
cd /soft/php-5.5.13
/bin/cp /soft/php-5.5.13/php.ini-production /usr/local/php/lib/php.ini5.5.13
vim /usr/local/apache/conf/httpd.conf +98
ServerName 127.0.0.1:80
vim /usr/local/apache/conf/httpd.conf +311
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
vim /usr/local/apache/conf/httpd.conf +166
DirectoryIndex index.html index.php

配置一个PHP页面做测试,php就相当.net中的asp

----------------------------------------------------

echo -e "<?php\nphpinfo();\n?>" >/var/www/html/index.php

http://www.local.com

测试php链接mysql

-----------------------------------------------------

mysql -usqladmin -p'123456' -e "grant select on mysql.user to 'testuser'@'192.168.1.%' identified by '123456';"
mysql -usqladmin -p'123456' -e "flush privideges;"

#mysql服务器上配置测试参数

vim /var/www/html/www/php_mysql.php

-----------------------------------------------------------

<?php

     //$link_id=mysql_connect('主机名','用户','密码');

     //$link_id=mysql_connect('localhost','test','');

     $link_id=mysql_connect('192.168.1.16','sqladmin','123456') or mysql_error();

     if($link_id){

          echo "mysql successfull!";

     }

     else{

          echo mysql_error();

     }

?>

http://www.local.com/php_mysql.php

PHP扩展插件

=========================================================================

1.对于php加速插件,生产环境只要安装一个就好;eacc,xcache,opcache,我建议安装opcache,简单

2.其他功能插件根据开发的要求再安装,memcache,imagick,pdo_mysql

配置eAccelerator为php提供加速

-----------------------------------------

eAccelerator是一个自由开放源码php加速器

优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。

它还有对脚本起优化作用,以加快其执行效率

eaccelerator无法兼容php5.5.0

echo 'export LC_ALL=C' >> /etc/profile
source /etc/profile
cd /soft
wget http://soft.local.com/eaccelerator.tar.gz
tar zxf eaccelerator.tar.gz
cd eaccelerator
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
make
make install

配置Zend OPcache为php提供加速

-----------------------------------------------------------------------------------------------------

Zend OPcache支持php5.3,php5.4,php5.5

需要在安装php5.5时启用--enable-opcache

查看opcache.so模块是否存在,

cd /soft
wget http://soft.local.com/zendopcache-7.0.2.tgz
tar zxf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
/usr/local/php/bin/phpize 
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
ll /usr/local/php5.3.15/lib/php/extensions/no-debug-zts-20090626/

#phpize用来扩展php模块,通过phpize可以建立php的外挂模块

#在编译要添加的外挂模块前,执行以下phpize就可以了

配置XCache为php提供加速

-------------------------------------------

XCache 是一个开源的 opcode 缓存器/优化器, 这意味着他能够提高您服务器上的 PHP 性能

通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程

能够直接使用缓冲区已编译的代码从而提高速度

通常能够提高您的页面生成速率 2 到5 倍, 降低服务器负载

XCache官方网站: http://xcache.lighttpd.net/

当前稳定版本: 3.2.x (全面支持 5.1 ~ 5.6)    XCache 3.2.0

当前稳定版本: 3.1.x (全面支持 5.1 ~ 5.5)    XCache 3.1.2


http://xcache.lighttpd.net/wiki/ReleaseArchive

各稳定版本分支,版本太多了

cd /soft
wget http://soft.local.com/xcache-3.1.2.tar.gz
tar zxf xcache-3.1.2.tar.gz
cd xcache-3.1.2
/usr/local/php/bin/phpize
./configure  --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make
make install
ll /usr/local/php5.3.15/lib/php/extensions/no-debug-zts-20090626/
cat xcache.ini >> /etc/php.ini


安装memcache的客户端

----------------------------------------

各个版本的memcache客户端介绍

1.php开发出来memcache(服务端)的client(客户端) ,这个client叫做memcache(客户端).

  这个客户端以pcel形式发布: http://pecl.php.net/package/memcache 

  另外,php手册上对于memcache的使用:http://www.php.net/manual/en/memcache.examples-overview.php 的例子也是基于这个client的。

2.09年的时候,Brian Aker开发出了一个基于c/c++ 的memcache的客户端,叫做libmemcache

  官网:http://libmemcached.org/libMemcached.html   

   这个client维护更新很快,并且功能效率等都比php那个memcache(客户端)要好

3.php又弄出一个基于libmemcache的client,非常不幸这个client叫做memcached(客户端)

  也是以pcel形式发布:http://pecl.php.net/package/memcached  

   这个client的特点基本跟 libmemcache差不多

 

参考资料:http://blog.csdn.net/aylazhang/article/details/6935569

cd /soft
wget http://soft.local.com/memcache-2.2.5.tgz 
tar zxf 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 --enable-memcache --with-zlib-dir
make&&make install
ll /usr/local/php5.3.15/lib/php/extensions/no-debug-zts-20090626/

安装PDO_MYSQL扩展模块

------------------------------------------------------

PDO_MYSQL扩展为PHP访问数据库定义了一个轻量级的一致性的接口

它提供了一个数据访问抽象层,这样无论用什么数据库,php都可以通过一致性函数执行查询并获取数据

已经默认在PHP5的源码里面了,因此不需要再单独安装了,实验证明确实如此

cd /soft
wget http://soft.local.com/PDO_MYSQL-1.0.2.tgz
tar zxf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
ln -s /usr/local/mysql/include/* /usr/local/include/
/usr/local/php/bin/phpize
./configure  --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
make install
ll /usr/local/php5.3.15/lib/php/extensions/no-debug-zts-20090626/

安装ImageMagick图像软件

---------------------------------------------

ImageMagick是一套功能强大、稳定而且开源的工具集和开发包

可以用来读、写和处理超过89种基本格式的图片文件

包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式

利用ImageMagick,你可以根据web应用程序的需要动态生成图片

还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作

并将操作的结果以相同格式或其它格式保存

对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成

同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG

ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上

ImageMagick 是一个用来创建、编辑、合成图片的软件

它可以读取、转换、写入多种格式的图片

图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线, 多边形,椭圆,曲线,附加到图片伸展旋转

ImageMagick是免费软件:全部源码开放,可以自由使用,复制,修改,发布。支持大多数的操作系统

安装ImageMagick软件本身:

cd /soft
wget http://soft.local.com/ImageMagick-6.8.9-8.tar.gz
tar zxf ImageMagick-6.8.9-8.tar.gz
cd ImageMagick-6.8.9-8
./configure
make && make install

在PHP中调用ImageMagick:

cd /soft
wget http://soft.local.com/imagick-3.1.2.tgz
tar zxf imagick-3.1.2.tgz
cd imagick-3.1.2
/usr/local/php/bin/phpize
./configure  --with-php-config=/usr/local/php/bin/php-config
make
make install
ll /usr/local/php5.3.15/lib/php/extensions/no-debug-zts-20090626/

##Imagick php扩展插件  http://pecl.php.net/package/imagick

安装加密软件

--------------------------------------------

一.首先安装加密软件的库和软件

安装libmcrypt加密库文件

---------------------------------------

cd /soft
wget "http://soft.local.com/libmcrypt-2.5.8.tar.gz"
tar zxf 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

安装mhash加密扩展库

----------------------------------

Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启

1该扩展不能提供最新的哈希算法。

2.该扩展结果原则上运算不可逆。

cd /soft
wget "http://soft.local.com/mhash-0.9.9.9.tar.gz"
tar zxf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure
make
make install

安装mcrypt加密扩展库

-------------------------------------------------

Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。

mcrypt 是 php 里面重要的加密支持扩展库,该库在默认情况下不开启。

cd /soft
wget "http://soft.local.com/mcrypt-2.6.8.tar.gz"
tar zxf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
LD_LIBRARY_PATH=/usr/local/lib
/sbin/ldconfig
./configure
make
make install

##LD_LIBRARY_PATH=/usr/local/lib ./configure


二.安装php中的插件调用加密软件

cd /soft/php-5.3.15/ext/mcrypt/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install



#下面两行可能需要做

mkdir /etc/php.d
echo 'extension=mcrypt.so' > /etc/php.d/mcrypt.ini

启用插件

---------------------------------------------

需要在php.ini的配置文件中修改配置参数启用

ll /usr/local/php5.3.15/lib/php/extensions/no-debug-zts-20090626/
sed -i 's#; extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626/"#g'  /usr/local/php/lib/php.ini
grep "extension_dir =" /usr/local/php/lib/php.ini | head -1
cat >> /usr/local/php/lib/php.ini << EOF
;by yujianbo 2014-07-03
;extension = imagick.so
;extension = memcache.so
;extension = pdo_mysql.so
;extension = mcrypt.so
EOF
tail -5  /usr/local/php/lib/php.ini

#启用imagick.so,memcache.so,mcrypt.so插件,缓存插件单独启用

配置启用eaccelerator插件

-------------------------------------------------

配置启用eaccelerator插件

mkdir -p /tmp/eaccelerator

#实际环境中建议使用单独的SSD,或者内存来存储该目录

chown -R apache:apache /tmp/eaccelerator

#这个用户是在apache的配置文件中定义的

配置eaccelerator的参数,修改 /application/php/lib/php.ini

----------------------------------------------------------------

cat >> /usr/local/php/lib/php.ini<<EOF
;By yujianbo eaccelerator
[eaccelerator]
extension=eaccelerator.so
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator"
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"
EOF

----------------------------------------------

/usr/local/php/bin/php -v

#查看php的版本信息可以看到eaccelerator的信息

tree /tmp/eaccelerator

#可以查看到生成的临时目录

-------------------------------------------

配置启用opcache插件

-------------------------------------------------

cat >> /usr/local/php/lib/php.ini <<EOF 
;Zend Opcache Conf
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20090626/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
EOF

https://gist.github.com/ck-on/4959032

#网页上有一个检测opcache的php脚本,可以看到opcache的命中率等信息

配置启用XCache插件

-------------------------------------------------

echo >>/usr/local/php/lib/php.ini
echo ';XCache Conf Begin' >>/usr/local/php/lib/php.ini
tail -2 /usr/local/php/lib/php.ini
cat /soft/xcache-3.1.2/xcache.ini >> /usr/local/php/lib/php.ini
echo ';XCache Conf End' >>/usr/local/php/lib/php.ini
sed -i 's#; extension = xcache.so#extension = xcache.so#g' /usr/local/php/lib/php.ini
sed -i 's#xcache.size  =               60M#xcache.size  =               128M#g' /usr/local/php/lib/php.ini
sed -i 's#xcache.count =                 1#xcache.count =                 4#g' /usr/local/php/lib/php.ini
sed -i 's#xcache.ttl   =                 0#xcache.ttl   =                 86400#g' /usr/local/php/lib/php.ini
sed -i 's#xcache.gc_interval =           0#xcache.gc_interval =          3600#g' /usr/local/php/lib/php.ini
sed -i 's#xcache.var_size  =            4M#xcache.var_size  =            0#g' /usr/local/php/lib/php.ini
vim  /usr/local/php/lib/php.ini

#xcache.count 的数量取决于CPU的核数;cat /proc/cpuinfo |grep -c processor

配置启用mcrypt,mhash插件

-------------------------------------------------

--------------------------

LAMP的优化


http://www.it165.net/os/html/201311/6637.html

#文章写的非常好

1.日志轮询工具

-----------------------------------

cd /soft
wget http://soft.local.com/cronolog-1.6.2.tar.gz
tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure --prefix=/usr/local/cronolog
make
make install
vim /usr/local/apache/conf/httpd.conf
CustomLog "|/usr/local/cronolog/sbin/cronolog /usr/local/apache/logs/access_%Y%m%d%H.log" combined

#%w按周,会自动覆盖,保留一周

#注意全部用全路径,生产环境可将日志单独放到一个文件夹或磁盘里

##需要将原来的CustomLog那一行日志命令去掉,注释掉

2.错误页面优雅显示

-------------------------------------

vim /usr/local/apache/conf/httpd.conf +350
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://www.example.com/subscription_info.html
ErrorDocument 403 http://www.example.com/subscription_info.html
ErrorDocument 503 http://www.example.com/subscription_info.html
ErrorDocument 504 http://www.example.com/subscription_info.html


3.配置mod_expires

----------------------------------

1.附加在vim /usr/local/apache/conf/httpd.conf   #全局配置

  附加在vim /usr/local/apache/conf/extra/httpd-vhosts.conf  #在虚拟机配置里面只对该虚拟机生效

  附加在vim /usr/local/apache/conf/httpd.conf   #文件目录里只对该文件目录里的文件生效

ExpiresActive on
    ExpiresDefault "access plus  30 seconds"
    ExpiresByType text/html "access plus 12 months"
    ExpiresByType text/css "access plus 12 months"
    ExpiresByType p_w_picpath/gif "access plus 12 months"
    ExpiresByType p_w_picpath/jpeg "access plus12  12 months"
    ExpiresByType p_w_picpath/jpg "access plus 12 months"
    ExpiresByType p_w_picpath/png "access plus 12 months"
    EXpiresByType application/x-shockwave-flash "access plus 12 months"
    EXpiresByType application/x-javascript "access plus 12 months"
    ExpiresByType video/x-flv "access plus 12 months"

##ExpiresByType video/x-flv "access plus 12 months"对video的x-flv格式文件,过期时间是访问时间+12个月,plus是“+”的意思

##ExpiresDefault设置成较小的值,如1分钟、30秒之类的来提升网站的速度

4.配置mod_deflate,修改文件压缩功能

----------------------------------------------------

   附加在vim /application/apache/conf/httpd.conf   #全局配置

   附加在vim /application/apache/conf/extra/httpd-vhosts.conf  #在虚拟机配置里面只对该虚拟机生效

<ifmodule mod_deflate.c>
        DeflateCompressionLevel 9
        SetOutputFilter DEFLATE
        AddOutputFilterByType DEFLATE text/html text/plain text/xml
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE text/css
</ifmodule>

----------------------------------------------

5.建议将apache默认用户修改成一个陌生的,比如abcdqwe

6.编译安装时,建议使用worker模式,--with-mpm=worker

--------------------------------------------------------------------

1. 在主配置文件里将打开Include conf/extra/httpd-mpm.conf启用

2. 然后vim /usr/local/apache/conf/extra/httpd-mpm.conf

<IfModule mpm_worker_module>    StartServers         5    MaxClients           2000    ServerLimit          25    MinSpareThreads      50    MaxSpareThreads      200    ThreadLimit          200    ThreadsPerChild      100    MaxRequestsPerChild   0</IfModule>
<IfModule mpm_prefork_module>    StartServers          10    MinSpareServers       10    MaxSpareServers       15    ServerLimit           2000    MaxClients            2000    MaxRequestsPerChild   10000</IfModule>

#prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接

#worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接


7.网站权限架构优化

---------------------------------

网站架构,应该把图片文件,上传附件,资源文件(CSS,JS,XML),网站程序文件分离

方便做读写分离,授权等

网站属主设置成:chown -R root:root  /var/www/html

网站目录建议设置成: find /var/www/html/ -type d | xargs chmod -R  755

网站文件建议设置成:find /var/www/html/ -type f | xargs chmod -R  644

允许上传的目录设置成:chown -R apache:apache /var/www/html/www/upload;chmod -R 700 var/www/html/www/upload

8.防盗链

--------------------------------------------------------

1.request header有一个referer字段,用来标识用户浏览器当前访问页面的主机名

  因此只需要判断一个request header的referfer字段是否跟当前网页一致就可判断是否盗链了

  haproxy可以根据hdr(referer)来判断防止盗链,已经确认

  

acl invalid_referer hdr_sub(referer) -i -f /opt/haproxy/etc/bad_ref.conf

  apache也有此功能,rewrite_module

2.light也有一个防盗链功能

  可以设置一个临时生效的url,过一定时间后就会过期

  在看优酷时,长时间暂停一个视频,会导致看不了,TCP链接断开?

  在访问一个视频资源时,肯定存在一个真正的URL,但他会返回一个加密过的URL给你,过期失效

有时被盗链会引起流量加大,可以相对的把图片变小暂时解决问题

9.禁止目录浏览,禁止目录重载,关闭CGI

10.修改日志文件权限

----------------------------

chown -R root:root /usr/local/apache/logs
chmod -R 700 /usr/local/apache/logs

#对日志的读写功能,运行apache的用户有权限

#如apache以普通用户权限运行,则可以设置成对普通用户授权即可

11.减少http的请求数,提高网页速度

-------------------------------------------

1.将一个页面中的的css,js等,开发时分开开发,在后台进行合并

2.对于首页文件可以考虑将css,js直接写到页面文件里面

3.合并图片,www.csssprites.com 一个可以将多张图片合成的工具网站

12.推荐CDN加速,一般可以认为不再使用本地的前端缓存服务器了

13.隐藏apache版本号

------------------------

vim /soft/httpd-2.2.27/include/ap_release.h

#在编译前修改源码文件

Include conf/extra/httpd-default.conf
vim /usr/local/apache/conf/extra/httpd-default.conf 
ServerTokens Prod
ServerSignature Off


#启用httpd-default.conf,禁止显示版本号或者直接显示成别的自定义的内容

14


spacer.gif

spacer.gif

spacer.gif

spacer.gif