一、簡介
什麼是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 提供的一些特性的動態內容。
二、系統環境
系統平臺:centos6.5 64位操作系統(Final)
Apache版本:httpd-2.4.4.tar.gz
Mysql 版本:mysql-5.1.51.tar.gz
Php版本:php-5.5.16.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,清空防火牆規則
關閉防火牆:service iptables stop
關閉selinux:修改/etc/selinuc/config文件,將SELINUX=enforcing 改爲 SELINUX=disabled
5、使用ssh shell將windows下的13個源碼包上傳到/usr/local/src
6、解包
編寫一個shell腳本tar.sh進行解包。
按 Ctrl+C 複製代碼
!/bin/sh
cd /usr/local/src
ls *.tar.gz > ls.list
for TAR in cat ls.list
do
tar -zxvf $TAR
done
按 Ctrl+C 複製代碼
執行腳本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
如果make時,出現make: ./libtool: Command not found
解決:(1)檢查libtool有沒有安裝,如果沒有,安裝
(2)複製/usr/share/libtool/config/目錄下的config.sub和config.guess,覆蓋jpeg-6b目錄下的這兩個文件,使用命令:
#cp /usr/share/libtool/config/config.sub .
#cp /usr/share/libtool/config/config.guess .
#make clean
繼續./configure
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'
/usr/local/src/gd-2.0.35’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory
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 && 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
如果出現錯誤:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
需要下載apr和apr-utils並解壓到 ./srclib/ 目錄下, 再進行編譯。
如果出現錯誤:configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/ 缺少開發庫
解決方法:下載pcre-8.34.tar.gz,並源碼安裝
# make && make install
10、配置Apache
[root@sugar ~]# vi /etc/httpd/httpd.conf
將#ServerName www.example.com:80 中的“#”刪掉,並將 www.example.com 改爲本機的linux的ip地址
啓動Apache
# /usr/local/apache2/bin/apachectl start
關閉Apache
# /usr/local/apache2/bin/apachectl stop
查看80端口是否開啓
# netstat -tnl|grep 80
訪問Apache服務器 http://IP地址
添加自啓動
# echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.local
11、源碼安裝Mysql
備註:建議源碼安裝,可以配置安裝路徑
11.1源碼安裝
安裝per1:yum install perl
安裝mysql前:
(1)添加一個mysql標準組
# groupadd mysql
添加mysql用戶並加到mysql組中
# useradd -g mysql mysql
(2)mkdir -p /usr/local/mysql
–MySQL 安裝目錄
mkdir -p /usr/local/mysql/data
–數據目錄
# 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
11.2配置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
(如果啓動不了,重新運行# /usr/local/mysql/bin/mysql_install_db –user=mysql)
查看3306端口是否開啓
# netstat -tnl|grep 3306
簡單的測試
# /usr/local/mysql/bin/mysqladmin version
查看所有mysql參數
# /usr/local/mysql/bin/mysqladmin variables
設置Mysql開機自啓動
# cp /usr/lanmp/mysql-5.1.51/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
11.3 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('root');
再次進入Mysql客戶端
# /usr/local/mysql/bin/mysql -u root -h localhost -p
關閉MySQL數據庫
# /usr/local/mysql/bin/mysqladmin -u root -p shutdown
12、yum安裝mysql
12.1 yum安裝
[root@localhost ~]# yum install -y mysql-server mysql mysql-devel
(注意:安裝mysql時,需要把mysql-server mysql-devel mysql全部安裝上,纔是完整的安裝)
在等待了一番時間後,yum會幫我們選擇好安裝mysql數據庫所需要的軟件以及其它附屬的一些軟件
我們發現,通過yum方式安裝mysql數據庫省去了很多沒必要的麻煩,當出現下面的結果時,就代表mysql數據庫安裝成功了
此時我們可以通過如下命令,查看剛安裝好的mysql-server的版本
[root@localhost ~]# rpm -qi mysql-server
我們安裝的mysql-server並不是最新版本,如果你想嘗試最新版本,那就去mysql官網下載rpm包安裝就行了,至此我們的mysql數據庫已經安裝完成了。
12.2 mysql數據庫的初始化及相關配置
我們在安裝完mysql數據庫以後,會發現會多出一個mysqld的服務,這個就是咱們的數據庫服務,我們通過輸入 service mysqld start 命令就可以啓動我們的mysql服務。
注意:如果我們是第一次啓動mysql服務,mysql服務器首先會進行初始化的配置,如:
這時我們會看到第一次啓動mysql服務器以後會提示非常多的信息,目的就是對mysql數據庫進行初始化操作,當我們再次重新啓動mysql服務時,就不會提示這麼多信息了,如:
我們在使用mysql數據庫時,都得首先啓動mysqld服務,我們可以 通過 chkconfig --list | grep mysqld
命令來查看mysql服務是不是開機自動啓動,如:
我們發現mysqld服務並沒有開機自動啓動,我們當然可以通過 chkconfig mysqld on
命令來將其設置成開機啓動,這樣就不用每次都去手動啓動了
我們可以通過 該命令來給我們的root賬號設置密碼(注意:這個root賬號是mysql的root賬號,非Linux的root賬號)
此時我們就可以通過 mysql -u root -p 命令來登錄我們的mysql數據庫了
12.3 mysql數據庫的主要配置文件
1./etc/my.cnf 這是mysql的主配置文件
我們可以查看一下這個文件的一些信息
2./var/lib/mysql mysql數據庫的數據庫文件存放位置
我們的mysql數據庫的數據庫文件通常是存放在了/ver/lib/mysql這個目錄下
我們可以自己創建一個數據庫,來驗證一下該數據庫文件的存放位置
3./var/log mysql數據庫的日誌輸出存放位置
我們的mysql數據庫的一些日誌輸出存放位置都是在/var/log這個目錄下
其中mysqld.log 這個文件就是我們存放我們跟mysql數據庫進行操作而產生的一些日誌信息,通過查看該日誌文件,我們可以從中獲得很多信息
因爲我們的mysql數據庫是可以通過網絡訪問的,並不是一個單機版數據庫,其中使用的協議是 tcp/ip 協議,我們都知道mysql數據庫綁定的端口號是 3306 ,所以我們可以通過 netstat –anp | grep mysql 命令來查看一下,Linux系統是否在監聽 3306 這個端口號:
結果如上所示,Linux系統監聽的3306端口號就是我們的mysql數據庫!!!!
14、安裝PHP
# cd /usr/local/src/php-5.2.6
# ./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-mysql-sock=/tmp/mysqld.sock \
--with-pdo-mysql=/usr/local/mysql \
--with-gd --with-png-dir=/usr/local/libpng \
--with-jpeg-dir=/usr/local/jpeg \
--with-freetype-dir=/usr/local/freetype \
--with-xpm-dir=/usr/ \
--with-vpx-dir=/usr/local/libvpx/ \
--with-zlib-dir=/usr/local/zlib \
--with-t1lib=/usr/local/t1lib \
--with-iconv \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-opcache \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-mcrypt \
--with-curl \
--enable-ctype
# make && make install
如果出現問題,按照以下方式解決:
1. configure: error: jpeglib.h not found.
解決辦法:yum –y install libjpeg-devel
2. configure: error: Don’t know how to define struct flock on thissystem, set –enable-opcache=no
解決辦法:
在/etc/ld.so.conf.d中添加local.conf文件:echo “/usr/local/lib”>> /etc/ld.so.conf.d/local.conf
更新動態庫:ldconfig -v
3./usr/local/src/LAMP/php-5.5.12/ext/gd/gd.c:57:22:error: X11/xpm.h: No such file or directory
解決辦法:yum -yinstall libXpm-devel
(已驗證)
4.undefined referenceto XpmLibraryVersion'
./configure中增加–with-xpm-dir=/usr/lib64` (已驗證)
解決辦法:
15、配置PHP
創建配置文件
# cp php.ini-production /usr/local/php/etc/php.ini
使用vi編輯apache配置文件
# vi /etc/httpd/httpd.conf 和 /usr/local/apache2/conf/httpd.conf
添加這一條代碼
Addtype application/x-httpd-php .php .phtml
重啓Apache
# /usr/local/apache2/bin/apachectl restart
注意:
驗證php是否配置成功:
編寫info.php文件,查看php配置詳細
# vi /usr/local/apache2/htdocs/info.php
<?php
phpinfo();
?>
通過瀏覽器訪問http://10.0.0.154/info.php,獲得php的詳細配置信息
16、安裝Zend加速器
# cd /usr/local/src/ZendOptimizer-3.2.6-linux-glibc21-i386/
# ./install.sh
如果出現問題:./install.sh: ./php: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
安裝yum install glibc.i686
測試Zend是否安裝成功:
通過瀏覽器訪問http://10.0.0.154/info.php,看是否有Zend加速器信息
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
測試phpmyadmin是否配置成功:
瀏覽器訪問:http://192.168.233.130/phpmyadmin
如果出現上圖,說明phpmyadmin配置成功!!!
19.安裝phpwind
上傳phpwind_UTF8_8.7.zip
unzip phpwind_UTF8_8.7.zip
[root@localhost htdocs]# mv /usr/lanmp/phpwind_UTF8_8.7 /usr/local/apache2/htdocs/phpwind87
[root@localhost htdocs]# Chmod -R 777 phpwind87
然後訪問頁面:http://192.168.233.130/phpwind87
證明phpwind配置成功。
點擊upload然後下一步,安裝,最終
至此,論壇已經全部安裝成功!!!
**關於LNMP(linux+nginx+mysql+php)服務器環境配置,請參考:
http://www.cnblogs.com/mchina/archive/2012/05/17/2507102.html**