1、LAMPphp
1.LAMP簡介
html
LAMP是一種Web網絡應用和開發環境,是Linux, Apache, MySQL, Php/Perl的縮寫,每個字母表明瞭一個組件,每一個組件就其自己而言都是在它所表明的方面功能很是強大的組件。前端
LAMP這個詞的由來最先始於德國雜誌「c't Magazine」,Michael Kunze在1990年最早把這些項目組合在一塊兒創造了LAMP的縮寫字。這些組件並非開始就設計爲一塊兒使用的,可是,這些軟件都是開源的,能夠很方便的隨時得到並無償使用,這就致使了這些組件常常在一塊兒使用。這些組件的兼容性也在不斷完善,爲了改善不一樣組件之間的協做,已經建立了某些擴展功能,在一塊兒的應用情形變得很是普便,於是成爲目前最流行的web應用基礎架構。mysql
2.LAMP的組件nginx
平臺由四個組件組成,呈分層結構,每一層都提供了整個架構的一個關鍵部分:c++
Linux:Linux 處在最底層,提供操做系統。它的靈活性和可定製化的特色意味着它可以產生一種高度定製的平臺,讓其它組件在上面運行。其它組件運行於Linux 之上,可是並不必定侷限於 Linux,也能夠在 Microsoft Windows, Mac OS X 或 UNIX上運行。程序員
Apache:Apache位於第二層,它是一個Web 服務平臺,提供可以讓用戶得到 Web 頁面的機制。Apache 是一款功能強大、穩定、可支撐關鍵任務的Web服務器,Internet 上超過 50% 的網站都使用它做爲 Web 服務器。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簡介
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支持phpsed -i "/^LoadModule\ php5_module/a AddType application/x-httpd-php .php .phtml" /usr/local/apache2/conf/httpd.confchown daemon.daemon -R /usr/local/apache2/htdocsecho "hello" > /usr/local/apache2/htdocs/index.html