CentOS 6.2 LAMP系统集成与安全

  1. 云栖社区>
  2. 博客>
  3. 正文

CentOS 6.2 LAMP系统集成与安全

余二五 2017-11-14 19:54:00 浏览664
展开阅读全文
LAMP(Linux- Apache-Mysql-PHP)网站架构是目前国际流行的Web框架,该框架包括(Linux 操作系统),Apache网络服务器,Mysql数据库,Perl、PHP语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用 都是采用这个框架,与Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,与微软的.NET架构相比,LAMP具有通用、跨 平台、高性能、低价格的有事,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台,LAMP网站优化架构如下图:

对 于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要终点关注下面几个环节:使用高性能的操 作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Database)、高效率的变成语言等。
 
操作系统的选择
Linux 操作系统有很多不同的发行版本,如Red Hat Enterprise Linux 、SUSE Linux Enterprise 、Debian、Ubuntu、CentOS等,每一个发行版本都有自己的特色,比如RHEL的稳定、Ubuntu的易用,基于稳定和性能的考虑,企业版 操作系统建议选择正版的(包括购买服务)Red Hat或SUSE的企业版,因为一旦在部署或运维过程中出现故障或问题了会有厂家的工程师提供技术支持。
若 出于成本考虑想要使用免费的操作系统,建议选用CentOS,CentOS (Community Enterprise Operating System)是Linux发行版之一,是RHEL/Red Hat Enterprise Linux的精简免费版,和RHEL的源代码相同,不过,RHEL和SUSE LE 等企业版提供的升级服务均是收费的,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。
 
Web服务器、缓存和PHP加速
Apache 是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势,但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web 服务器(例如Nginx)高效,轻量级的Web服务器对静态文件的响应能力来说远高于Apache服务器。
Apache作为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用Nginx来负载非PHP的Web请求,Nginx是一个高性能的HTTP和方向代理服 务器,Nginx以它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx不支持PHP和CGI等动态语言,但支持负载均衡和容 错,可与Apache配合使用,是轻量级的HTTP服务器的首选。
Web服务器的缓存有多种方案,Apache提供了自己的缓存模块,也可 以使用外加的Squid模块进行缓存,这两种方式均可以有效地提高Apache的访问响应能力,Squid Cache是一个Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置Cache服务器缓存相关请求,来提高Web服务器的速度,把Squid放 在Apache的前端来缓存Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面失效时间即可,如访问量巨大则考虑使用Memcache作 为分布式缓存。
PHP的加速可使用eAccekerator加速器,eAccelerator是一个自由开放源码PHP加速器,优化和动态 内容缓存提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除,它还对脚本起优化作用,以加快其执行效率,使 PHP程序代码的执行效率提高1-10倍。
具体的解决方案有以下几种:
(1)Squid+Apache+PHP+eAccelerator
使用Apache负载PHP,使用Squid进行缓存,HTML或图片的请求可以直接由Squid返回给用户,很多大型网站都采用这种架构。
(2)Nginx/Apache+PHP(FastCGI)+eAccelerator
使用Nginx或Apache负载PHP,PHP使用FastCGI方式运行,效率较高。
(3)Nginx+Apache+PHP+eAccelerator
此方案综合了Nginx和Apache的有点,使用Apache负载PHP,Nginx负责解析其他Web请求,使用Nginx的Rewrite模块,Apache的端口不对外开放。
 
数据库
在 开源的数据库中,MySQL在性能、稳定性和功能上是首选,虽然被收购但性能上却一点不打折,可以达到百万级别的数据存储,网站初期可以将MySQL和 Web服务器放在一起,但是当访问量达到一定的规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接,当数据库访问量达到更大的级别时,可以考虑使用MySQL Cluster等数据库群集或者库表散列等解决方案。
总的来说,LAMP架构的网站性能会远远优于Windows IIS平台,它可以负载的访问量也非常大,因此采用LAMP架构是一个不错的方案,综上所述,基于LAMP架构设计具有成本低廉、部署灵活、安全稳定等特点,是Web网络应用和环境的优秀组合。
 LAMP安装
由 于有多个需要安装的程序,而每个要安装的服务都有两种方式,源码安装、RPM包安装。一般情况下,LAMP的服务安装包应采用同一种安装方式安装,否则可 能出现一些不兼容的安装错误。出于安全方面的考虑,这里建议使用源码安装,下面就这种模式在CentOS 6.2版本下的安装。
1、准备安装包
首先需要准备好下列安装包,为避免下载麻烦,相关安装包可在我的博客下载的到(IT辰逸)。
 
[root@chenyi lamp]# ll
总用量 54216
-rw-r--r--. 1 root root  1396855 12月  6 10:28 autoconf-2.61.tar.gz
-rw-r--r--. 1 root root  1775673 12月  6 10:27 freetype-2.3.5.tar.gz
-rw-r--r--  1 root root    555631 12月  6 15:23 eaccelerator-0.9.5.3.tar.bz2
-rw-r--r--. 1 root root   733698 12月  6 10:27 gd-2.0.35.tar.gz
-rw-r--r--. 1 root root  6396996 12月  6 10:27 httpd-2.2.9.tar.gz
-rw-r--r--  1 root root   613261 12月  6 11:22 jpegsrc.v6b.tar.gz
-rw-r--r--. 1 root root  1335178 12月  6 10:27 libmcrypt-2.5.8.tar.gz
-rw-r--r--. 1 root root   792139 12月  6 10:27 libpng-1.2.31.tar.gz
-rw-r--r--. 1 root root  4726657 12月  6 10:27 libxml2-2.6.30.tar.gz
-rw-r--r--. 1 root root 22693585 12月  6 10:28 mysql-5.0.95.tar.gz
-rw-r--r--  1 root root    650001 12月  6 16:12 nginx-0.8.54.tar.gz
-rw-r--r--  1 root root   1316863 12月  6 16:06 pcre-8.12.tar.gz
-rw-r--r--. 1 root root 12046184 12月  6 10:28 php-5.2.6.tar.gz
-rw-r--r--. 1 root root  3099674 12月  6 10:28 phpMyAdmin-3.0.0-rc1-all-languages.tar.gz.gz
-rw-r--r--  1 root root    119117 12月  6 15:42 suhosin-0.9.32.1.tar.gz
-rw-r--r--. 1 root root   499773 12月  6 10:28 zlib-1.2.3.tar.gz
2、修改远程登录避免显示乱码
编辑 /etc/sysconfig/i18n
把UTF-8改成GB18030 或者将终端设置修改UTF-8
关闭Selinux
使用文本编辑工具打开/etc/selinux/config:
[root@chenyi lamp]# vi /etc/selinux/config
把SELINUX=enforcing注释掉:#SELINUX=enforcing
然后新加一行为:SELINUX=disabled
存盘退出,重启系统。
 
3、检查编译工具
在安装Linux时必须把GCC编译工具装上,我们用下列命令检测编译工具是否存在;
[root@chenyi ~]# gcc -v
 
4、写在默认版本Mysql、Apache、PHP
目 前发行的Linux操作系统版本中,如果选择全部安装,就已经安装了LAMP环境,但是版本相对都比较低,为了在安装过程中不出差错,以及今后系统能够稳 定运行,所以我们要在安装之前,先检查一下系统中是否已经安装了低版本的环境,如果已经安装过了请把原来的环境写在掉,若保留则会对后面部署带来影响,命 令如下:
[root@chenyi ~]# rpm -qa | grep mysql #查看系统中是否已经安装了MySQL,如果是,则卸载掉以MySQL开头的包
[root@chenyi ~]# rpm -e mysql-5.0.45-7.e15 --nodeps #强制卸载,忽略依赖性关系(利用同样的方法将默认安装好的Apache 、PHP均卸载,为安装新的tar包做准备)
 
5、安装库文件
在 下面安装PHP之前,准备工作要做足,应先安装PHP5需要的最新版本库文件,例如libxml2、libmcrypt以及GD2库等文件。安装GD2库 是为了让PHP5支持GIF、PNG和JPEG图片格式,所以在安装GD2库之前还要先安装最新的zlib、libpng、freetype和 jpegsrc等库文件。
(1)安装libxml2库文件
[root@chenyi lamp]# tar zxf libxml2-2.6.30.tar.gz
[root@chenyi lamp]# cd libxml2-2.6.30
[root@chenyi libxml2-2.6.30]# ./configure --prefix=/software/libxml2
[root@chenyi libxml2-2.6.30]# make && make install
(2)安装libmcrypt库文件
[root@chenyi lamp]# tar zxf libmcrypt-2.5.8.tar.gz
[root@chenyi lamp]# cd libmcrypt-2.5.8
[root@chenyi libmcrypt-2.5.8]# ./configure --prefix=/software/libmcrypt
[root@chenyi libmcrypt-2.5.8]# make && make install
(3)安装zlib库文件
[root@chenyi lamp]# tar zxf zlib-1.2.3.tar.gz
[root@chenyi lamp]# cd zlib/1.2.3/
[root@chenyi 1.2.3]# ./configure --prefix=/software/zlib
[root@chenyi 1.2.3]# make && make install
(4)安装libpng库文件
[root@chenyi lamp]# tar zxf libpng-1.2.31.tar.gz
[root@chenyi lamp]# cd libpng-1.2.31
[root@chenyi libpng-1.2.31]# ./configure --prefix=/software/libpng
[root@chenyi libpng-1.2.31]# make && make install
(5)安装jpeg6库文件
[root@chenyi lamp]# mkdir /software/jpeg6 #建立jpeg6软件安装目录
[root@chenyi lamp]# mkdir /software/jpeg6/bin #建立存放命令的目录
[root@chenyi lamp]# mkdir /software/jpeg6/lib #创建jpeg6库文件所在目录
[root@chenyi lamp]# mkdir /software/jpeg6/include #建立存放头文件目录
[root@chenyi lamp]# mkdir -p /software/jpeg6/man/man1 #建立存放手册的目录
[root@chenyi jpeg-6b]# ./configure \
--prefix=/software/jpeg6/ \
--enable-shared \ #建立共享库使用的GNU的libtool
--enable-static #建立静态库使用的GNU的libtool
[root@chenyi jpeg-6b]# make && make install
(6)安装freetype库文件
[root@chenyi lamp]# tar zxf freetype-2.3.5.tar.gz
[root@chenyi lamp]# cd freetype-2.3.5
[root@chenyi freetype-2.3.5]# ./configure --prefix=/software/freetype
[root@chenyi freetype-2.3.5]# make && make install
(7)安装autoconf库文件
[root@chenyi lamp]# tar zxf autoconf-2.61.tar.gz
[root@chenyi lamp]# cd autoconf-2.61
[root@chenyi autoconf-2.61]# ./configure
[root@chenyi autoconf-2.61]# make && make install
(8)安装gd库文件
[root@chenyi lamp]# tar zxf gd-2.0.35.tar.gz
[root@chenyi gd]# cd gd/2.0.35/
[root@chenyi 2.0.35]# ./configure \ #预配置命令
--prefix=/software/gd2/ \ #指定软件安装的路径
--with-zlib=/software/zlib/ \ #指定到哪儿找zlib库文件的位置
--with-jpeg=/software/jpeg6/ \ #指定到哪儿找jpeg库文件的位置
--with-png=/software/libpng/ \ #指定到哪儿找png库文件的位置
--with-freetype=/software/freetype/ #指定到哪儿找freetype 2.x字体库位置
[root@chenyi 2.0.35]# make && make install
开始安装LAMP
总 的来讲,在Linux系统中源代码包的安装过程基本上都是一成不变的“三大定律”配置,(Configure)、编译(Make)、安装(Make Install)。需要安装的所有软件都要安装一定的顺序安装,如先安装Apache、再安装MySQL,最后安装PHP。但安装成功的关键在于安装的次 序和一些软件包的配置上。
(1)安装Apache服务器
当安装好前面的库文件后,就可以正式安装Apache服务器了。
[root@chenyi lamp]# tar zxf httpd-2.2.9.tar.gz
[root@chenyi lamp]# cd httpd-2.2.9
[root@chenyi httpd-2.2.9]# ./configure \ #预配置
--prefix=/software/apache2 \ #指定Apache软件安装的位置
--sysconfdir=/etc/httpd \ #指定Apache服务器的配置文件存放位置
--with-z=/software/zlib/ \ #指定zlib库文件的位置
--with-included-apr \ #使用捆绑APR/APR-Util的副本
--enable-so \ #以动态共享对象(DSO)编译
--enable-deflate=shared \ #缩小传输编码的支持
--enable-expires=shared \ #期满头控制
--enable-rewrite=shared \ #基于规则的URL操控
--enable-static-support #建立一个静态链接版本的支持
[root@chenyi httpd-2.2.9]# make && make install
(2)测试Apache服务器
检查配置文件目录
[root@chenyi httpd-2.2.9]# /software/apache2/bin/apachectl start  [stop 关闭]
[root@chenyi httpd-2.2.9]# netstat -pant | grep httpd                             #查看80端口是否开启
tcp        0      0 :::80                       :::*                        LISTEN      31233/httpd
通过访问测试
Apache添加自启动功能,编辑/etc/rc.d/rc.local#将其添加为系统服务也有多种方式,这里不介绍了。
[root@chenyi httpd-2.2.9]# echo "/software/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
3)安装MySQL数据库
[root@chenyi lamp]# useradd -g mysql mysql#添加Mysql用户并加到Mysql组中
[root@chenyi mysql-5.0.95]# ./configure #预配置
--prefix=/software/mysql/ \#指定mysql的安装路径
--with-extra-charsets=all\#添加所有字符支持
--sysconfdir=/etc \#指定配置文件的路径
--localstatedir=/software/mysql/data \#数据库存放的路径
--enable-assembler \#使用一些存放字符函数的汇编版本
--with-mysqld-ldflags=-all-static \#以春静态方式编译服务端
--with-charset=utf8 --with-plugins=all#支持InnoDB
[root@chenyi mysql-5.0.95]# make && make install
最后家了一行--with-plugins=all表示从源代码编译安装MySQL,默认安装时,是没有InnoDB引擎的,所以,在输入configure命令时,需要加入--with-plugins=all,这样才会支持InnoDB,在MySQL里可以执行SHOW ENGINES命令来查看当前的MySQL服务器所支持的存储引擎。
[root@chenyi mysql-5.0.95]# cp support-files/my-medium.cnf /etc/my.cnf#创建Mysql配置文件
[root@chenyi mysql-5.0.95]# /software/mysql/bin/mysql_install_db --user=mysql#创建授权表
[root@chenyi mysql]# chown -R root .#将文件的所有属性改为root用户
[root@chenyi mysql]# chown -R mysql data#将数据目录的所有属性改为Mysql用户(注意自己的当前目录,否则.............
[root@chenyi mysql]# chgrp -R mysql .#将组属性改为Mysql
[root@chenyi mysql]# /software/mysql/bin/mysqld_safe --user=mysql & #启动数据库
[root@chenyi ~]# netstat -pant | grep 3306#查看3306端口是否开启
tcp00 0.0.0.0:33060.0.0.0:*LISTEN1982/mysqld
[root@chenyi mysql]# bin/mysqladmin version#简单的一个测试
[root@chenyi mysql]# bin/mysqladmin variables#查看所有Mysql参数
[root@chenyi mysql]# bin/mysql -u root#直接登录到mysql
mysql> DELETE FROM mysql.user WHERE host='localhost' AND user='';
mysql> FLUSH PRIVILEGES;#设置root密码,quit退出
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('chenyi');
[root@chenyi mysql]# bin/mysql -u root -h localhost -p#用新密码登录mysql
[root@chenyi mysql]# bin/mysqladmin -u root -p shutdown#关闭Mysql数据库
 

4)安装PHP模块
[root@chenyi lamp]# tar zxf php-5.2.6.tar.gz
[root@chenyi lamp]# cd php-5.2.6
[root@chenyi php-5.2.6]# ./configure \#执行预配置
> --prefix=/software/php \#设置PHP的安装路径
--with-config-file-path=/software/php/etc \#指定PHP5配置文件的存入的路径
--with-apxs2=/software/apache2/bin/apxs \#指定PHP查找Apache2的位置
--with-mysql=/software/mysql/ \#指定Mysql的安装目录
--with-libxml-dir=/software/libxml2/ \#指定PHP放置libxml2库的位置
--with-png-dir=/software/libpng/ \#指定PHP放置libpng库的位置
--with-jpeg-dir=/software/jpeg6/ \#指定PHP放置jpeg库的位置
--with-freetype-dir=/software/freetype/ \#指定PHP放置Freetype库的位置
--with-gd=/software/gd2/ \#指定PHP放置gd库的位置
--with-zlib-dir=/software/zlib/ \#指定PHP放置zlib库的位置
--with-mcrypt=/software/libmcrypt/ \#指定PHP放置libmcrypt的位置
--with-mysqli=/software/mysql/bin/mysql_config \#变量激活新增加的Mysqli功能
--enable-soap \#变量激活soapweb services支持
--enable-mbstring=all \#使用多字节字符串支持
--enable-sockets#变量激活socket通信特征
[root@chenyi php-5.2.6]# make && make install#编译并进行安装

5)环境整合
[root@chenyi php-5.2.6]# cp php.ini-dist /software/php/etc/php.ini#创建配置文件
[root@chenyi php-5.2.6]# vi /etc/httpd/httpd.conf#修改ServerName 添加相关配置
LoadModule php5_module modules/libphp5.so#查看是否有这一行
AddType application/x-httpd-php .php .php4 .php5 .php .phtml#查看是否有这一行,(表示以这些扩展名结尾的文件,在apache中使用php解析器解析)。
再找到DirectoryIndex行,添加index.php

/software/apache2/htdocs下建立一个test.php文件
<?
         phpinfo();
?>
然后进行使用http:IP/test.php 进行测试

5)安装phoMyAdmin
[root@chenyi lamp]# tar zxf phpMyAdmin-3.0.0-rc1-all-languages.tar.gz
[root@chenyi lamp]# mv phpMyAdmin-3.0.0-rc1-all-languages /software/apache2/htdocs/phpmyadmin
[root@chenyi lamp]# cd /software/apache2/htdocs/phpmyadmin/
[root@chenyi phpmyadmin]# cp config.sample.inc.php config.inc.php
phpMyAdmin的配置有以下模式:
1http身份验证模式
2cookie身份验证模式
3config身份验证模式
通过浏览器访问http://ip/phpmyadmin 如下:

安装PHP扩展Eaccelerator加速软件
EacceleratorPHP的加速软件,使用后PHP的执行效率会有很大幅度的提升,如果没有特殊要求,为了避免冲突尽量不要安装Zend
[root@chenyi lamp]# tar jxf eaccelerator-0.9.5.3.tar.bz2 -C /software/src
[root@chenyi lamp]# cd /software/src/ eaccelerator-0.9.5.3/
指定PHP所在路径
[root@chenyi eaccelerator-0.9.5.3]# export PHP_PREFIX="/software/php"
[root@chenyi eaccelerator-0.9.5.3]# $PHP_PREFIX/bin/phpize
[root@chenyi eaccelerator-0.9.5.3]# ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
[root@chenyi eaccelerator-0.9.5.3]# make && make install
这时会将Eaccelerator安装到PHP目录中,屏幕会像是Eacclelrator.so所在路径。如下:
Installing shared extensions:/software/php/lib/php/extensions/no-debug-non-zts-20060613/#需记录该路径
修改php.ini 并在最后加入:
	[eaccelerator]
extension="/software/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/date/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
建立缓存目录
[root@chenyi eaccelerator-0.9.5.3]# mkdir -p /data/cache/eaccelerator
[root@chenyi eaccelerator-0.9.5.3]# chmod 777 -R /data/
重启Apache
[root@chenyi eaccelerator-0.9.5.3]# /software/apache2/bin/apachectl stop
[root@chenyi eaccelerator-0.9.5.3]# /software/apache2/bin/apachectl start
安装Suhosin
为加固PHP的安全性,需要安装Suhosin,它是一个专门的安全小组开发的专门针对PHP进行安全加固的补丁程序。
[root@chenyi lamp]# tar zxf suhosin-0.9.32.1.tar.gz
[root@chenyi lamp]# cd suhosin-0.9.32.1
[root@chenyi suhosin-0.9.32.1]# /software/php/bin/phpize
[root@chenyi suhosin-0.9.32.1]# ./configure --with-php-config=/software/php/bin/php-config
[root@chenyi suhosin-0.9.32.1]# make && make install
继续修改php.ini文件
[root@chenyi suhosin-0.9.32.1]# vi /software/php/etc/php.ini
查找代码
extension_dir = "./"
替换为:
extension_dir = "/software/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension="suhosion.so"

到这里,LAMP部署完毕,后面如果还有什么需要添加和优化的地方,会同步更新









本文转自 lgpqdwjh 51CTO博客,原文链接:http://blog.51cto.com/itchenyi/1154636,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注