CentOS 6.2 LAMP系統集成與安全

起頭打個廣告:41405569 是一個IT相關交流羣,歡迎大家加入,一起討論和學習!

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部署完畢,後面如果還有什麼需要添加和優化的地方,會同步更新

結尾也打個廣告:41405569 是一個IT相關交流羣,歡迎大家加入,一起討論和學習!
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章