LAMP平臺搭建及其原理詳解
LAMP平臺搭建基礎概念
LAMP:提到LAMP很多人會認爲LAMP是Linux ,Apache,Mysql,PHP。但是隨着技術的不斷髮展,當今的Lamp,已經不僅僅是這麼簡單了,這裏我們的P除了PHP其實還包括:phython,perl .而M也不僅僅指的是mysql,也包括mariadb.
LAMP平臺顧名思義就是Linux,apache,mysql(mariadb),php(phython,perl)的結合。按照他們的結合方式不同,大致可以分成三類:
php 以模塊的形式結合apache 和 mysql
php 以cgi的形式結合 apache 和 mysql
php 以fastcgi的形式結合apache 和 mysql。
網頁資源的動態和靜態
靜態內容服務:客戶端發起資源請求,服務器將請求的資源原封不動的發給客戶端。動態資源:服務器將客戶端發起的資源先執行一下,進行一定的處理,返還給客戶端。
LAMP平臺過程原理
LAMP是一個多C/S架構的平臺,最初級爲web客戶端基於TCP/IP通過http協議發起傳送,這個請求可能是動態的,也可能是靜態的。所以web服務器通過發起請求的後綴來判斷,如果是靜態的資源就由web服務器自行處理,然後將資源發給客戶端。如果是動態這時web服務器會通過CGI(Common Gateway interface)協議發起給php。這裏但是如果php是以模塊形式與Web服務器聯繫。那麼他們是通過內部共享內存的方式。如果是php單獨的放置與一臺服務器,那麼他們是通過sockets套接字監聽的方式通信(這又是一個C/S架構)。這時php會相應的執行一段程序,如果在執行程序時,需要用到數據。那麼php就會通過mysql協議發送給mysql服務器(也可以看作是一個C/S架構)。由mysql服務器處理,將數據供給php程序。大概流程如圖:
LAMP平臺的編譯安裝
由於上一篇博客已經有了httpd-2.4版本安裝,所以這裏使用2.2版本操作。
一.httpd-2.2版本的安裝。
首先要下載到httpd的源碼包。然後準備編譯環境:我們這裏需要安裝的源碼包有:"Devellopmnet Tools" ,"server platform development" ,以及"pcre-devel" "apr-devel","apr-util-devel" 。
注意:我們這裏依賴的包都是開發包,但是httpd-2.2版本的包對"apr-devel","apr-util-devel"依賴的版本不高,我們這裏可以是使用yum安裝: 我這裏兩個包組都安裝過,就不在安裝。這裏選項含義也不再贅述,上一篇更加全面。
#yum install "apr-devel" -y #yum install "apr-utill" -y #yum install "pcre-devel" -y #cd /usr/local/ #./configure --prefix=/usr/local/apache22 --sysconfdir=/etc/httpd22 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --enable-mpms-shared=all #make && make install #注意:這裏編譯如果出現問題,一般是缺少某個開發包,根據提示安裝相應的包-devel。
這裏好了之後,看一下80端口是否佔用。如果沒有佔用可以嘗試啓動。
#netstat -tunlp | grep 80 #/usr/local/apache22/bin/apachectl start #netstat -tunlp | grep 80
注意:這裏還沒有配置服務能夠結合php,等到php安裝完成之後配置。
二.安裝mariadb-5.5.36
由於mariadb的安裝源碼包需要使用cmake編譯,所以我這裏使用二進制版本安裝,過程上大致相同。只是缺少源碼包cmake的三個步驟。
思路:安裝mariadb是用來做數據庫的存儲和管理,因此這是一個服務也需要大量的存儲數據。所以我們創建一個單獨的分區做成邏輯卷用於專門用於放置數據。爲了保證安全性,我們創建一個系統啓動用戶。
1.準備數據存放的文件系統
# fdisk /dev/sda # //這裏根據自己大小需要創建一個分區。 # n\np\n "First cylinderirst"\n"Last cylinderirst"\nw # partx -a /dev/sda # pvcreate /dev/sda# # vgcreate myvg /dev/sda# # lvcreate -L 10G -n mylv myvg //大小根據自己需要 # mkfs -t xfs /dev/myvg/mylv //我們這裏存儲大的文件系統建議使用xfs。我這裏 # //到/etc/fstab 進行掛載填寫才能實現開機自動掛載。或者到/etc/rc.d/rc.local下面寫入 # mkdir /mydata/mysql # chown -R mysql:mysql /mydata/data # mount /dev/myvg/mylv /mydata/mysql
2.創建一個mysql用戶,使他爲系統用戶。
groupadd -r mysql useradd -g mysql -r -s /sbin/nologin -M mysql
3.安裝並初始化mariadb-5.5.36
# tar -zxf mariadb-5.5.36-linux2.6-i686.tar.gz -C /usr/local # cd /usr/local/ # ln -sv mysql-5.5.33-linux2.6-i686 mysql # cd mysql # chown -R mysql:mysql . # scripts/mysql_install_db --user=mysql --datadir=/mydata/mysql # chown -R root .
4.爲mariadb提供主配置文件:
# cd /usr/local/mysql # cp support-files/my-large.cnf /etc/my.cnf
注意:並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,比如這裏使用如下行:
thread_concurrency = 2,另外還需要添加如下行指定mysql數據文件的存放位置:datadir = /mydata/data
5.爲mysql提供服務腳本:
# cd /usr/local/mysql # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld
6.添加至服務列表:
# chkconfig --add mysqld # chkconfig mysqld on 啓動服務
三.編譯安裝php-5.4.26
1.解決依賴關係:同樣的配置好編譯環境。
# yum -y install bzip2-devel|libmcrypt-devel|openssl-devel|libxml2-devel 等.
2.編譯安裝php-5.4.26
# tar xf php-5.4.26.tar.bz2 # cd php-5.4.26 # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
解釋:
a.一下這些重點選項,另外使用的時候,到./configure --help中查找。
--with-mysql=/usr/local/mysql 指明安裝的mysql-devel位置。但是我們這裏是二進制版本mysql中已經包含mysql-devel。
--with-openssl 指明啓用openssl功能。
--with-mysqli=/usr/local/mysql/bin/mysql_config 指明mysql的另一個程序入口。
--enable-mbstring 多字符處理
--with-jpeg-dir jpeg圖片格式處理
--with-png-dir png圖片格式處理
--with-zlib zlib壓縮
--with-libxml-dir=/usr 指明libxml的目錄
--enable-sockets 支持套接字
--with-apxs2=/usr/local/apache/bin/apxs 這是把PHP編譯成httpd模塊的一個重要選項。
--with-mcrypt 加密
--with-config-file-path=/etc 指明配置文件放置路徑
--with-config-file-scan-dir=/etc/php.d 指明掃描路徑
--enable-maintainer-zts
b.這裏爲了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。
c.如果使用PHP5.3以上版本,爲了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。
# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd # make # make test # make intall
下面爲php提供配置文件:
# cp php.ini-production /etc/php.ini
3、 編輯apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd22/httpd.conf //找到AddType application/x在下面添加 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php index.html/找到 DirectoryIndex index.html 添加index.php
而後重新啓動httpd,或讓其重新載入配置文件即可測試php是否已經可以正常使用。
4.測試我們搭建的LAMP平臺是否成功
#mv /usr/local/apache22/htdocs/index.html /usr/local/apache22/htdocs/index.php #vim /usr/local/apache22/htdocs/index.html <html> <body> <h1>It works! <?php $link = mysql_connect('127.0.0.1','root',''); if ($link) echo "Success..."; else echo "Failure..."; mysql_close(); ?> </h1> </body> </html>
四.配置使用phpMyadmin
下載到數據包。
我這裏是下載解壓到了/tmp目錄下。 #unzip phpMyAdmin-4.0.5-all-languages.zip #cd phpMyAdmin-4.0.5-all-languages #cd /usr/local/apache22/htdocs/ #mkdir pma #mv /tmp/phpMyAdmin-4.0.5-all-languages/* pma #cd pma #cp config.sample.inc.php config.inc.php #vim config.inc.php $cfg['blowfish_secret']='sdklscsd12' 找到這一行,生成密碼串,寫在這裏。 #openssl rand -hex 8 生成一串隨機數字。
這裏要注意的是:這裏登陸需要密碼。所以要給自己的mysql設置好密碼哦
一個基於圖形化的MYSQL管理工具就可以使用了。