centos下編譯安裝LAMP環境

一、LAMP

1.LAMP簡介

   LAMP是一種Web網絡應用和開發環境,是Linux, Apache, MySQL, Php/Perl的縮寫,每一個字母代表了一個組件,每個組件就其本身而言都是在它所代表的方面功能非常強大的組件。

   LAMP這個詞的由來最早始於德國雜誌“c't Magazine”,Michael Kunze在1990年最先把這些項目組合在一起創造了LAMP的縮寫字。這些組件並不是開始就設計爲一起使用的,但是,這些軟件都是開源的,可以很方便的隨時獲得並免費使用,這就導致了這些組件經常在一起使用。這些組件的兼容性也在不斷完善,爲了改善不同組件之間的協作,已經創建了某些擴展功能,在一起的應用情形變得非常普便,因而成爲目前最流行的web應用基礎架構。

2.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 提供的一些特性的動態內容。

3.php作爲apache模塊加載

Apache對PHP的支持是通過Apache的模塊mod_php5來支持的。如果希望Apache支持PHP的話,在php編譯安裝步驟需要指定--with-apxs2=/usr/local/apache2/bin/apxs 表示告訴編譯器通過Apache的mod_php5/apxs來提供對PHP5的解析。

在最後一步make install的時候我們會看到將動態鏈接庫libphp5.so(Apache模塊)拷貝到apache2的安裝目錄的modules目錄下,並且還需要在httpd.conf配置文件中添加LoadModule語句來動態將libphp5.so 模塊加載進來,從而實現Apache對php的支持。

由於該模式實在太經典了,因此這裏關於安裝部分不準備詳述了,相對來說比較簡單。我們知道nginx一般包括兩個用途HTTP Server和Reverse Proxy Server(反向代理服務器)。在前端可以部署nginx作爲reverse proxy server,後端佈置多個Apache來實現機羣系統server cluster架構的。

因此,實際生產中,我們仍舊能夠保留Apache+mod_php5的經典App Server,而僅僅使用nginx來當做前端的reverse proxy server來實現代理和負載均衡。 因此,建議nginx(1個或者多個)+多個apache的架構繼續使用下去。

PHP的所有應用程序都是通過WEB服務器(如IIS或Apache)和PHP引擎程序解釋執行完成的

工作過程:
(1)當用戶在瀏覽器地址中輸入要訪問的PHP頁面文件名,然後回車就會觸發這個PHP請求,並將請求傳送化支持PHP的WEB服務器。
(2)WEB服務器接受這個請求,並根據其後綴進行判斷如果是一個PHP請求,WEB服務器從硬盤或內存中取出用戶要訪問的PHP應用程序,並將其發送給 PHP引擎程序。
(3)PHP引擎程序將會對WEB服務器傳送過來的文件從頭到尾進行掃描並根據命令從後臺讀取,處理數據,並動態地生成相應的HTML頁面。
(4)PHP引擎將生成HTML頁面返回給WEB服務器。WEB服務器再將HTML頁面返回給客戶端瀏覽器。

二.下載軟件包

shell> wget http://downloads.mysql.com/archives/get/file/mysql-5.5.30.tar.gz

shell> wget http://mirrors.axint.net/apache/apr/apr-util-1.4.1.tar.gz
shell> wget http://mirrors.axint.net/apache/apr/apr-1.4.8.tar.gz
shell> wget http://mirrors.axint.net/apache/apr/apr-iconv-1.2.1.tar.gz
shell> wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
shell> wget http://apache.fayea.com/apache-mirror//httpd/httpd-2.4.7.tar.gz

三.安裝編譯環境

shell> yum -y install vim man openssh-server wget nfs*

shell> yum -y install gcc gcc-c++ make cmake automake autoconf cpp ncurses ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel pcre-devel libtool libtool-libs freetype-devel gd zlib-devel bison  readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel

zlib-devel   編譯apache時候報錯  error: mod_deflate has been requested but can not be built due to prerequisite failures

openssl-devel  checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

四.安裝mysql-5.5

shell> groupadd mysql && useradd -g mysql mysql -s /sbin/nologin
shell> cd /home/softs/mysql-5.5.30
shell> cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/dbdata -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=yes
shell> make && make install


shell> cp -f /home/softs/mysql-5.5.30/support-files/my-large.cnf /etc/my.cnf
shell> cp -f /home/softs/mysql-5.5.30/support-files/mysql.server /etc/init.d/mysqld

shell> chmod 755 /etc/init.d/mysqld
shell> sed -i "/\[mysqld\]/a datadir=/data/mysql" /etc/my.cnf
shell> sed -i "/^socket/d" /etc/my.cnf
shell> sed -i "/\[mysqld\]/a socket=/usr/local/mysql/tmp/mysql.sock" /etc/my.cnf
shell> sed -i "/\[client\]/a socket=/usr/local/mysql/tmp/mysql.sock" /etc/my.cnf

shell> chown mysql.mysql /usr/local/mysql -R
shell> /usr/local/mysql/scripts/mysql_install_db --user=root --datadir=/data/mysql --basedir=/usr/local/mysql
shell> chown mysql.mysql /data/mysql -R
shell> /etc/init.d/mysqld restart
shell> echo "export PATH=${PATH}:/usr/local/mysql/bin" >> /etc/profile

五.安裝apache

1.apr簡介

Apache可移植運行時( Apache Portable Runtime,簡稱APR)是ApacheHTTP服務器的支持庫,提供了一組映射到下層操作系統的API。如果操作系統不支持某個特定的功能,APR將提供一個模擬的實現。這樣程序員使用APR編寫真正可在不同平臺上移植的程序。

最初,APR是作爲Apache HTTP服務器的一部分而存在的,但是Apache軟件基金會將其延伸成一個單獨的項目。其他的應用程序可以使用APR來實現平臺無關性。

2.pcre簡介

PCRE(Perl Compatible Regular Expressions),中文含義:perl語言兼容正則表達式, 它是一個用C語言編寫的正則表達式函數庫,PCRE十分易用,同時功能也很強大,性能超過了POSIX正則表達式庫和一些經典的正則表達式庫。
PCRE被廣泛使用在許多開源軟件之中,最著名的莫過於Apache HTTP服務器和PHP腳本語言、R腳本語言,此外,正如從其名字所能看到的,PCRE也是perl語言的缺省正則庫。

3.apr install

cd /home/softs/apr-1.4.8
sed -i "/.*\$RM\ \"\$cfgfile\"/d" configure
./configure '--prefix=/usr/local/apr'
make && make install

4.apr-util install

[ -d "/home/softs/apr-util-1.4.1" ] && cd /home/softs/apr-util-1.4.1
./configure "--prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config"
make && make install

5.apr-iconv install

cd /home/softs/apr-iconv-1.2.1
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr/bin/apr-1-config
make && make install

6.pcre install

cd /home/softs/pcre-8.35
./configure --prefix=/usr/local/pcre
make && make install

7.apache install

cd /home/softs/httpd-2.4.7
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-apr-iconv=/usr/local/apr-iconv --with-ssl --enable-ssl --enable-so --enable-deflate=shared --enable-expires=shared --enable-headers=shared --enable-rewrite=shared --enable-static-support --with-pcre=/usr/local/pcre
//配置參數解析
–prefix=/usr/local/apache2    //體系無關文件的頂級安裝目錄PREFIX ,也就Apache的安裝目錄。
--enable-ssl          //Enable support for SSL/TLS provided by mod_ssl.
--enable-so         //允許運行時加載DSO模塊
--enable-deflate=shared   //支持網頁壓縮
--enable-expires=shared   //支持 HTTP 控制
--enable-rewrite=shared   //支持 URL 重寫
--enable-header          //Enable control of HTTP headers provided by mod_headers.
--enable-cache //支持緩存
--enable-file-cache //支持文件緩存
--enable-mem-cache //支持記憶緩存
--enable-disk-cache //支持磁盤緩存
--enable-static-support   //支持靜態連接(默認爲動態連接)
--enable-static-checkgid   //使用靜態連接編譯 checkgid
--disable-cgid   //禁止用一個外部 CGI 守護進程執行CGI腳本
--disable-cgi   //禁止編譯 CGI 版本的 PHP
make && make install

8.添加啓動腳本和環境變量

cp -f /usr/local/apache2/bin/apachectl /etc/init.d/httpd
echo "export PATH=${PATH}:/usr/local/apache2/bin" >> /etc/profile

六.安裝php

1.libmcrypt install
[ -d /home/softs/libmcrypt-2.5.7 ] && cd /home/softs/libmcrypt-2.5.7
./configure
make && make install

2.php install
cd /home/softs/php-5.4.26

./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/usr/local/mysql/tmp/mysql.sock --with-gd --with-iconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --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
make && make install
//編譯參數
--prefix    //安裝目錄
--with-config-file-path    //指定php.ini位置
--with-apxs2    //整合 apache,apxs功能是使用mod_so中的LoadModule指令,加載指定模塊到 apache,要求 apache 要打開SO模塊
--with-mysql    //mysql擴展支持,這個填mysql目錄地址,實際應用開發時可以連接其他機器的mysql服務器,只是一個擴展而已。
--with-mysqli    //mysqli擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。
--with-mysql-sock    //sock文件位置
--with-gd     //打開gd庫支持
--with-iconv     //
--with-freetype-dir     //打開對freetype字體庫的支持
--with-jpeg-dir         //打開對jpeg圖片的支持
--with-png-dir         //打開png圖片支持
--with-zlib-dir     //打開zlib庫的支持
--with-libxml-dir     //打開libxml2庫的支持
--enable-xml         //xml支持
--enable-bcmath     //打開圖片大小調整,用到zabbix監控的時候用到了這個模塊
--enable-shmop     //
--enable-sysvsem      //要使用 SysV 的信號 (semaphores) 機制--enable-inline-optimization     //優化線程
--with-curlwrappers     //運用curl工具打開url流
--enable-mbregex     //多字節,字符串的支持
--enable-mbstring     //多字節,字符串的支持
--enable-ftp     //打開ftp的支持
--enable-gd-native-ttf     //支持TrueType字符串函數庫
--with-openssl     //openssl的支持,加密傳輸時用到的
  --enable-pcntl     //
--enable-sockets     //打開sockets支持
--with-xmlrpc     //打開xml-rpc的c語言
--enable-zip     //打開對zip的支持
--enable-soap     //
--without-pear     //打開pear命令的支持,PHP擴展用的
--with-gettext     //打開gnu的gettext支持,編碼庫用到
--enable-session     //啓用session支持
--with-mcrypt    //mcrypt算法的擴展


七配置apache支持php
sed -i "/^LoadModule\ php5_module/a AddType application/x-httpd-php .php .phtml" /usr/local/apache2/conf/httpd.conf
chown daemon.daemon -R /usr/local/apache2/htdocs
echo "hello" > /usr/local/apache2/htdocs/index.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章