LAMP平臺搭建及其原理詳解


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程序。大概流程如圖:

wKiom1SVOpXDCG3qAADXWXHFEkc057.jpg



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 
啓動服務

wKioL1SVS_-SC9PSAAG9d0gJcg0451.jpg

      

三.編譯安裝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

wKiom1SVT9GD3AtaAAHzU-SBhUk559.jpg

解釋:

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>

wKioL1SVU7yCJ6A2AABfg7Wsda8787.jpg

四.配置使用phpMyadmin                                                                     


  1. 下載到數據包。

   我這裏是下載解壓到了/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設置好密碼哦

    j_0058.gifj_0058.gifj_0058.gif                                          j_0058.gifj_0058.gifj_0058.gif

wKioL1SWYleh-jfzAADwAHT1Lh0828.jpg

一個基於圖形化的MYSQL管理工具就可以使用了。










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