一、簡介
什麼是LAMP
LAMP是一種Web網路應用和開發環境,是Linux, Apache, MySQL, Php/Perl的縮寫,每一個字母代表了一個組件,每個組件就其本身而言都是在它所代表的方面功能非常強大的組件。
LAMP這個詞的由來最早始於德國雜誌“c't Magazine”,Michael
Kunze在1990年最先把這些公事包在一起創造了LAMP的縮寫字。這些組件並不是開始就設計為一起使用的,但是,這些軟體都是開源的,可以很方便的隨時獲得並免費使用,這就導致了這些組件經常在一起使用。這些組件的相容性也在不斷完善,為了改善不同組件之間的協作,已經建立了某些擴充功能,在一起的應用情形變得非常普便,因而成為目前最流行的web應用基礎架構。
LAMP的組件
平台由四個組件組成,呈分層結構,每一層都提供了整個架構的一個關鍵區段:
Linux:Linux
處在最底層,提供作業系統。它的靈活性和可定製化的特點意味著它能夠產生一種高度定製的平台,讓其它組件在上面運行。其它組件運行於Linux
之上,但是並不一定局限於 Linux,也可以在 Microsoft Windows, Mac OS X 或
UNIX上運行。
Apache:Apache位於第二層,它是一個Web 服務平台,提供可讓使用者獲得 Web 頁面的機制。Apache 是一款功能強大、穩定、可支撐關鍵任務的Web伺服器,Internet 上超過 50% 的網站都使用它作為 Web 服務器。
MySQL:MySQL 是最流行的開源關聯式資料庫管理系統,是LAMP的資料存放區端。在 Web 應用程式中,所有帳戶資訊、產品資訊、客戶資訊、業務資料和其他類型的資訊都儲存於資料庫中,通過 SQL 語言可以很容易地查詢這些資訊。
PHP/Perl:Perl是一種靈活的語言,特別是在處理文本要素的時候,這種靈活性使Perl很容易處理通過
CGI介面提供的資料,靈活地運用文字檔和簡單資料庫支援動態要素。PHP 是一種被廣泛應用的開放原始碼的多用途指令碼語言,它可嵌入到
HTML中,尤其適合 web 開發。可以使用 PHP 編寫能訪問 MySQL 資料庫中的資料和 Linux 提供的一些特性的動態內容。
二、系統內容
系統平台:CentOS release 5.8 (Final)
Apache版本:httpd-2.2.9.tar.gz
Mysql 版本:mysql-5.0.41.tar.gz
Php版本:php-5.2.6.tar.gz
三、安裝前準備
1、庫檔案準備
在安裝PHP之前,應先安裝PHP5需要的最新版本庫檔案,例如libxml2、libmcrypt以及GD2庫等檔案。安裝GD2庫是為了讓PHP5支 持GIF、PNG和JPEG圖片格式,所以在安裝GD2庫之前還要先安裝最新的zlib、libpng、freetype和jpegsrc等庫檔案。而且中間還會穿插安裝一些軟體,讀者可以按照本節提供的順序安裝。
autoconf-2.61.tar.gz
freetype-2.3.5.tar.gz
gd-2.0.35.tar.gz
jpegsrc.v6b.tar.gz
libmcrypt-2.5.8.tar.gz
libpng-1.2.31.tar.gz
libxml2-2.6.30.tar.gz
zlib-1.2.3.tar.gz
ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
phpMyAdmin-3.0.0-rc1-all-languages.tar.gz
2、安裝gcc、gcc-c++編譯器
用gcc -v 命令檢查安裝時使用的編譯工作是否存在
如系統未安裝,在系統連網的情況下使用yum install gcc和yum install gcc-c++安裝
3、卸載預設的低版本環境
目前發行的Linux作業系統版本中,如果選擇預設全部安裝,就已經安裝了LAMP環境,但是版本相對都比較低。我們可以再安裝一個LAMP環境和原來的並存,但是這樣做沒有必要,因為同時只能開啟一個LAMP環境。所要我們要在安裝之前,先應檢查一下系統中是否已經安裝了低版本的環境,如果已經安裝過了,停止原來的服務運行,或者把原來的環境卸載掉。
a. 卸載Apache
# rpm -qa | grep httpd
說明:檢查是否安裝了httpd軟體包
# rpm -e httpd-2.2.3-63.el5.centos --nodeps
說明:卸載軟體包, --nodeps 如果有連帶關係,也強制卸載
# cd /etc/httpd/
# rm -rf *
說明:到原來的apache安裝目錄下,將其所有的安裝目錄和檔案都刪掉
b. 卸載Mysql
# rpm -qa | grep mysql
# rpm -e mysql-5.0.77-4.el5_4.2 --nodeps
說明:卸載mysql
c. 卸載Php
# rpm -qa | grep php
# rpm -e php-common-5.1.6-27.el5 --nodeps
# rpm -e php-ldap-5.1.6-27.el5 --nodeps
# rpm -e php-cli-5.1.6-27.el5 --nodeps
# rpm -e php-5.1.6-27.el5 --nodeps
說明:卸載PHP
4、關閉selinux,清空防火牆規則
5、使用ssh shell將windows下的13個源碼包上傳到/usr/local/src
6、解包
編寫一個shell指令碼tar.sh進行解包。
#!/bin/sh cd /usr/local/srcls *.tar.gz > ls.list for TAR in `cat ls.list` dotar -zxvf $TARdone
執行指令碼tar.sh進行解包
7、將源碼包*.tar.gz全都刪除
四、安裝LAMP
1、安裝libxml2
# cd /usr/local/src/libxml2-2.6.30
# ./configure --prefix=/usr/local/libxml2
# make && make install
2、安裝libmcrypt
# cd /usr/local/src/libmcrypt-2.5.8
# ./configure --prefix=/usr/local/libmcrypt
# make && make install
3、安裝zlib
# cd /usr/local/src/zlib-1.2.3
# ./configure
# make && make install
4、安裝libpng
# cd /usr/local/src/libpng-1.2.31
# ./configure --prefix=/usr/local/libpng
# make && make install
5、安裝jpeg6
這個軟體包安裝有些特殊,其它軟體包安裝時如果目錄不存在,會自動建立,但這個軟體包安裝時需要手動建立。
# mkdir /usr/local/jpeg6
# mkdir /usr/local/jpeg6/bin
# mkdir /usr/local/jpeg6/lib
# mkdir /usr/local/jpeg6/include
# mkdir -p /usr/local/jpeg6/man/man1
# cd /usr/local/src/jpeg-6b
# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
# make && make install
6、安裝freetype
# cd /usr/local/src/freetype-2.3.5
# ./configure --prefix=/usr/local/freetype
# make
# make install
7、安裝autoconf
# cd /usr/local/src/autoconf-2.61
# ./configure
# make && make install
8、安裝GD庫
# cd /usr/local/src/gd-2.0.35
# ./configure \
--prefix=/usr/local/gd2/ \
--enable-m4_pattern_allow \
--with-zlib=/usr/local/zlib/ \
--with-jpeg=/usr/local/jpeg6/ \
--with-png=/usr/local/libpng/ \
--with-freetype=/usr/local/freetype/
# make
出現錯誤:
make[2]: *** [gd_png.lo] Error 1
make[2]: Leaving directory `/usr/local/src/gd-2.0.35'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/gd-2.0.35'
make: *** [all] Error 2
分析:這個問題是因為gd庫中的gd_png.c這個源檔案中包含png.h時,png.h沒有找到導致的。
解決:
在編譯檔案裡
# vi gd_png.c
將include “png.h” 改成 include “/usr/local/libpng/include/png.h”
其中/usr/local/libpng/為libpng安裝路徑。
# make install
9、安裝Apache
# cd /usr/local/src/httpd-2.2.9
# ./configure \
--prefix=/usr/local/apache2 \
--sysconfdir=/etc/httpd \
--with-z=/usr/local/zlib \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--enable-static-support
# make && make install
10、配置Apache
啟動Apache
# /usr/local/apache2/bin/apachectl start
關閉Apache
# /usr/local/apache2/bin/apachectl stop
查看80連接埠是否開啟
# netstat -tnl|grep 80
訪問Apache伺服器
添加自啟動
# echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
11、安裝Mysql
添加一個mysql標準組
# groupadd mysql
添加mysql使用者並加到mysql組中
# useradd -g mysql mysql
# cd /usr/local/src/mysql-5.0.41
# ./configure \
--prefix=/usr/local/mysql/ \
--with-extra-charsets=all
出現錯誤:
checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for termcap functions library... configure: error: No curses/termcap library found
分析:缺少ncurses安裝包
解決:
# yum install ncurses-devel
# make && make install
12、配置Mysql
建立MySQL資料庫伺服器的設定檔
# cp support-files/my-medium.cnf /etc/my.cnf
用mysql使用者建立授權表,建立成功後,會在/usr/local/mysql目錄下產生一個var目錄
# /usr/local/mysql/bin/mysql_install_db --user=mysql
將檔案的所有屬性改為root使用者
# chown -R root /usr/local/mysql
將資料目錄的所有屬性改為mysql使用者
# chown -R mysql /usr/local/mysql/var
將組屬性改為mysql組
# chgrp -R mysql /usr/local/mysql
啟動資料庫
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
查看3306連接埠是否開啟
# netstat -tnl|grep 3306
簡單的測試
# /usr/local/mysql/bin/mysqladmin version
查看所有mysql參數
# /usr/local/mysql/bin/mysqladmin variables
設定Mysql開機自啟動
# cp /usr/local/src/mysql-5.0.41/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chown root.root /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list mysqld
# chkconfig --levels 245 mysqld off
13、Mysql安全性設定
沒有密碼可以直接登入本機伺服器
# /usr/local/mysql/bin/mysql -u root
查看mysql使用者權限資訊
mysql> select * from mysql.user;
刪除非localhost的主機
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
重新整理授權表
mysql> FLUSH PRIVILEGES;
為root使用者添加密碼
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('abc123');
再次進入Mysql用戶端
# /usr/local/mysql/bin/mysql -u root -h localhost -p
關閉MySQL資料庫
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
14、安裝PHP
# cd /usr/local/src/php-5.2.6
# ./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql/ \
--with-libxml-dir=/usr/local/libxml2/ \
--with-png-dir=/usr/local/libpng/ \
--with-jpeg-dir=/usr/local/jpeg6/ \
--with-freetype-dir=/usr/local/freetype/ \
--with-gd=/usr/local/gd2/ \
--with-zlib-dir=/usr/local/zlib/ \
--with-mcrypt=/usr/local/libmcrypt/ \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-soap \
--enable-mbstring=all \
--enable-sockets
# make && make install
15、配置PHP
建立設定檔
# cp php.ini-dist /usr/local/php/etc/php.ini
使用vi編輯apache設定檔
# vi /etc/httpd/httpd.conf
添加這一條代碼
Addtype application/x-httpd-php .php .phtml
重啟Apache
# /usr/local/apache2/bin/apachectl restart
以上安裝步驟可以寫成一個shell script,詳細參考http://files.cnblogs.com/mchina/lamp.rar
16、安裝Zend加速器
# cd /usr/local/src/ZendOptimizer-3.2.6-linux-glibc21-i386/
# ./install.sh
17、安裝phpMyAdmin
拷貝目錄到指定位置並改名為phpmyadmin# cp -a phpMyAdmin-3.0.0-rc1-all-languages /usr/local/apache2/htdocs/phpmyadmin# cd /usr/local/apache2/htdocs/phpmyadmin/# cp config.sample.inc.php config.inc.php
18、配置phpMyAdmin
# vi /usr/local/apache2/htdocs/phpmyadmin/config.inc.php將auth_type 改為http
$cfg['Servers'][$i]['auth_type'] = 'http';
五、測試
1、編寫info.php檔案,查看php配置詳細
# vi /usr/local/apache2/htdocs/info.php
<?phpphpinfo();?>
通過瀏覽器訪問http://10.0.0.154/info.php,獲得php的詳細配置資訊
2、Zend加速器資訊
3、訪問phpMyAdmin
至此LAMP環境配置完畢。
關於LNMP(linux+nginx+mysql+php)伺服器環境配置,請參考:
http://www.cnblogs.com/mchina/archive/2012/05/17/2507102.html