第24章,實現LAMP架構

更多內容請點擊:javascript

Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~) 
php

https://blog.51cto.com/13683480/2095439html


第24章,實現LAMP架構java

 

本章內容:python

               LAMP介紹mysql

               PHP介紹與配置linux

               module方式實現LAMP程序員

               php-fpm方式實現LAMPweb

               部署phpmyadminsql

               部署wordpress

               部署discuz!

               實現php的  Xcache加速

               源碼編譯:安裝LAMP

               

LAMP介紹:

               LAM(M)P 含義:

                             L:linux

                            A:apache(httpd)

                            M:  mysql,mariadb

                            (M):  memcached

                            P:  php,perl,python

                             

               WEB資源類型:

                             靜態資源:原始形式與相應內容一致,在客戶端瀏覽器執行

                             動態資源:原始形式一般爲程序文件,須要在服務器端執行以後,將執行結果

                                            返回給客戶端

               

               WEB相關術語:

                            客戶端技術:html,javascript

                            服務器端技術:php,jsp,python,asp

                             

               CGI:Common Gateway  Interface

                             可讓一個客戶端,從網頁瀏覽器經過http服務器向執行在網絡服務器上的

                            程序傳輸數據

                             CGI描述了客戶端和服務器程序之間的一種標準

               

               請求流程:

                            Client  --(httpd)--> httpd --(cgi)  -->

                            application  server(program file)--(mysql) --> mysql

                             

               php:

                             腳本編程語言,嵌入到html中的嵌入式web程序語言

                            基於zend編譯成opcode(二進制格式的字節碼,重複運行,可省略編譯環境)

 

 

PHP簡介:

               官網:http://www.php.net/

            

               PHP是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最先實現將腳

               本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,所以,

               其也能夠在大多數系統上做爲一個獨立的shell來使用

           

               Rasmus Lerdorf於1994年開始開發PHP,它是初是一組被Rasmus  Lerdorf稱做「Personal  

               Home Page Tool」 的Perl腳本,  這些腳本能夠用於顯示做者的簡歷並記錄用戶對其網站的訪

               問。後來,Rasmus Lerdorf使用C語言將這些Perl腳本重寫爲CGI程序,還爲其增長了運行Web

               forms的能力以及與數據庫交互的特性,並將其重命名爲「Personal Home  Page/Forms

               Interpreter」或「PHP/FI」。此時,PHP/FI已經能夠用於開發簡單的動態web程序了,這即

               PHP1.0。1995年6月,Rasmus Lerdorf把它的PHP發佈於

               comp.infosystems.www.authoring.cgi Usenet討論組,今後PHP開始走進人們的視野。1997

               年,其2.0版本發佈。

               

               1997年,兩名以色列程序員Zeev  Suraski和Andi  Gutmans重寫的PHP的分析器(parser)成爲

               PHP發展到3.0的基礎,並且今後將PHP重命名爲PHP: Hypertext  Preprocessor。此後,這兩

               名程序員開始重寫整個PHP核心,並於1999年發佈了Zend Engine 1.0,這也意味着PHP 4.0的

               誕生。2004年7月,Zend Engine 2.0發佈,由此也將PHP帶入了PHP 5時代。PHP5包含了許

               多重要的新特性,如加強的面向對象編程的支持、支持PDO(PHP Data  Objects)擴展機制以及

               一系列對PHP性能的改進

 

               Zend Engine是開源的、PHP腳本語言的解釋器,它最先是由以色列理工學院

               (Technion)的學生Andi Gutmans和Zeev Suraski所開發,Zend也正是此二人

               名字的合稱。後來兩人聯合創立了Zend Technologies公司

               

               Zend Engine 1.0於1999年隨PHP  4發佈,由C語言開發且通過高度優化,並能

               夠作爲PHP的後端模塊使用。Zend  Engine爲PHP提供了內存和資源管理的功

               能以及其它的一些標準服務,其高性能、可靠性和可擴展性在促進PHP成爲一

               種流行的語言方面發揮了重要做用

               

               Zend Engine的出現將PHP代碼的處理過程分紅了兩個階段:首先是分析PHP

               代碼並將其轉換爲稱做Zend opcode的二進制格式(相似Java的字節碼),並將

               其存儲於內存中;第二階段是使用Zend Engine去執行這些轉換後的Opcode

 

               Opcode是一種PHP腳本編譯後的中間語言,相似於Java的ByteCode,或

               者.NET的MSL。PHP執行PHP腳本代碼通常會通過以下4個步驟(確切的來講,

               應該是PHP的語言引擎Zend)

                     一、Scanning  詞法分析,將PHP代碼轉換爲語言片斷(Tokens)

                     二、Parsing 語義分析,將Tokens轉換成簡單而有意義的表達式

                     三、Compilation   將表達式編譯成Opocdes

                     四、Execution 順次執行Opcodes,每次一條,從而實現PHP腳本的功能

                     

               掃描-->分析-->編譯-->執行

 

 

php配置:

               php:腳本語言解釋器

               配置文件:

                             /etc/php.ini,/etc/php.d/*.ini

               

               配置文件在php解釋器啓動時被讀取

               對配置文件的修改生效方式:

                             modules:重啓httpd服務

                             FastCGI:重啓php-fpm服務

                             

               /etc/php.ini 配置文件格式:

                            [foo]:Section  Header

                            directive =  value

                             註釋符:較新的版本中,已經徹底使用;進行註釋

                                   #     純粹的註釋信息

                                   ;      用於註釋可啓用的directive

                             

               經常使用配置指令:

                     max_execution_time= 30            最長執行時間30s

                     memory_limit 128M                  生產不夠,可調大

                     display_errors off                調試使用,不要打開,不然可能暴露重要信息

                     display_startup_errors  off  建議關閉

                     post_max_size 8M                     最大上傳數據大小,生產可能臨時要調大,比下面項要大

                     upload_max_filesize  2M   最大上傳文件,生產可能要調大

                     max_file_uploads = 20               同時上傳最多文件數

                     date.timezone  =Asia/Shanghai  指定時區

                     short_open_tag=on                   開啓短標籤,如<? phpinfo();?>

 

               php.ini的核心配置選項文檔:

                      http://php.net/manual/zh/ini.core.php

                    

               php.ini配置選項列表    

                      http://php.net/manual/zh/ini.list.php

 

               php語言格式:

                             <?php

                            ...php  code

                             ?>

 

               php的加速器:

                             php的加速器:基於PHP的特殊擴展機制如opcode緩存擴展也能夠將opcode

                            緩存於php的共享內存中,從而可讓同一段代碼的後續重複執行時跳過編譯

                             階段以提升性能。這些加速器並不是真正提升了opcode的運行速度,而僅是經過

                            分析opcode後並將它們從新排列以達到快速執行的目的

 

               常見的php加速器有:

                     一、APC (Alternative PHP Cache)

                     遵循PHP License的開源框架,PHP  opcode緩存加速器,目前的版本不適用於

                     PHP  5.4

                     項目地址http://pecl.php.net/package/APC

 

                     二、eAccelerator

                     源於Turck MMCache,早期的版本包含了一個PHP  encoder和PHP loader,

                     目前encoder已經不在支持。項目地址 http://eaccelerator.net/  

 

                     三、XCache

                     快速並且穩定的PHP opcode緩存,通過嚴格測試且被大量用於生產環境。項

                     目地址:http://xcache.lighttpd.net/,收錄EPEL源

 

                     四、Zend Optimizer和Zend Guard  Loader

                     Zend  Optimizer並不是一個opcode加速器,它是由Zend  Technologies爲

                      PHP5.2及之前的版本提供的一個免費、閉源的PHP擴展,其可以運行由Zend

                     Guard生成的加密的PHP代碼或模糊代碼。 而Zend Guard  Loader則是專爲

                     PHP5.3提供的相似於Zend Optimizer功能的擴展。項目地址

                      http://www.zend.com/en/products/guard/runtime-decoders

                     

                     五、NuSphere PhpExpress

                     NuSphere的一款開源PHP加速器,它支持裝載經過NuSphere PHP  Encoder

                     編碼的PHP程序文件,並可以實現對常規PHP文件的執行加速。項目地址,

                      http://www.nusphere.com/products/phpexpress.htm

 

 

---------------------------------------------------------------------------               

部署LAMP:

               httpd:接收用戶的web請求;靜態資源則直接響應;動態資源爲php腳本,

                             對此類資源的請求將交由php來運行

               php:運行php程序

               MariaDB:數據管理系統

               

               http與php結合的方式

                            CGI  

                            FastCGI:php-fpm

                            modules:php (將php編譯成爲httpd的模塊,默認方式)

                             MPM:

                                   prefork :  libphp5.so

                                   event,  worker: libphp5-zts.so             

                             

 

               centos7:

                            modules:httpd, php, php-mysql, mariadb-server

                            FastCGI:httpd,php-fpm,php-mysql,mariadb-server

                    

               centos6:

                             modules:httpd,php,php-mysql,mysql-server

                            默認不支持FastCGI

                             

安裝LAMP:

               CentOS 6:

                            yum install httpd  php mysql-server php-mysql

                            service httpd  start

                            service  mysqld   start

 

               CentOS 7:

                            yum install httpd  php php-mysql mariadb-server

                            systemctl  start   httpd.service

                            systemctl  start   mariadb.service

               注意:要使用prefork模型

 

測試php是否正常鏈接:

               vim /var/www/html/index.php

<?php

        echo date("Y/m/d H:i:s");

        phpinfo();

?>    

 

php使用mysql擴展鏈接數據庫

               只能鏈接mysql數據庫

               注意:php7 已啓用此函數

               

               1     執行  mysql_secure_installation 設置root 密碼

               2     登陸mysql 添加受權帳號:

                     GRANT ALL ON *.* TO  'user1'@'192.168.65.%' IDENTIFIED BY 'centos';

 

               3     編寫測試文件:

                     vim  /var/www/html/mysql.php

                      <?php

                     #$conn = mysql_connect(  'servername','user','password');

                     $conn = mysql_connect(  '127.0.0.1','user1','centos');

                      if($conn)

                                   echo "OK";

                     else

                                   echo  "Failure";

                                   echo  mysql_error();

                      mysql_close();

                     ?>

                    

                     或者

                      <?php

                     $conn = mysql_connect(  '192.168.65.132','user1','centos');

                      if($conn)

                                   echo  "OK";

                     else

                                   echo  "Failure";

                                   echo  mysql_error();

                      mysql_close();

                     ?>

 

               4     瀏覽器輸入  192.168.65.132/mysql.php 訪問測試

               

 

php使用mysqli擴展鏈接數據庫

               只能鏈接mysql數據庫

               vim /var/www/html/mysql2.php

                      <?php

                     $mysqli=new  mysqli('192.168.65.155','user1','centos');

                      if(mysqli_connect_errno()){

                                   echo  "Failure";

                                    $mysqli=null;

                                    exit;

                     }

                     echo  "OK";

                      $mysqli->close();

                     ?>

 

 

php使用pdo擴展鏈接數據庫

               能夠鏈接主流各類數據庫

               

               代碼1      

                     vim  /var/www/html/mysql3.php

                      <?php

                      $dsn='mysql:host=localhost;dbname=mysql';

                      $username='root';

                      $passwd='centos';

                     $dbh=new  PDO($dsn,$username,$passwd);

                      var_dump($dbh);

                     ?>  

               

               代碼2      

vim  /var/www/html/mysql4.php

<?php

try {

$user='root';

$pass='centos';

$dbh = new  PDO('mysql:host=localhost;dbname=mysql', $user, $pass);

foreach($dbh->query('SELECT user,host  from user') as $row) {

print_r($row);

}

$dbh = null;

} catch (PDOException $e)  {

print "Error!: " . $e->getMessage() .  "<br/>";

die();

}

?>

 

-----------------------------------------------------------------------------------

常見LAMP應用:

               PhpMyAdmin:

                            是一個以PHP爲基礎,以Web-Base方式架構在網站主機上的MYSQL的數據庫管理工具

                            讓管理者可用web接口管理Mysql數據庫

                             

               WordPress:

                            是一種使用PHP語言開發的博客平臺,用戶能夠在支持PHP和Mysql數據庫的服務器

                             上架設屬於本身的網站。也可把Wordpress看成一個內容管理系統(CMS)來使用

                             

               PHPWind:

                            2003年發佈了PHPWind的前身版本ofstar,並發展稱爲包含BBS,CMS,博客,SNS等

                              一系列程序的通用型建站軟件,於2008年加入阿里巴巴集團

                             

               Crossday discuz! Board(簡稱discuz!):

                             是一套通用的社區論壇軟件系統。自2001年6月面世以來,是全球成熟度最高,覆蓋率

                             最大的論壇軟件系統之一。

                            2010年8月23日,與騰訊達成收購協議

                             

               ECShop:

                            是一款B2C獨立網店系統,適合企業及我的快速構建個性化網上商店。系統是基於

                            PHP語言及MYSQL數據庫架構開發的跨平臺開源程序。

                            2006年6月,ECShop推出第一個版本1.0

                             

 

部署phpMyadmin:

               1     安裝並啓動lamp

                     yum install httpd php  mariadb-server mysql-server

                     yum install  php-mbstring

                     systemctl start httpd  mariadb

               

               2     執行mysql_secure_installation,設置管理員密碼

                    

               3     下載phpmyadmin,注意查看支持的php和數據庫版本

                     下載地址:

                     4.0版本,PHP 5.2 and MySQL 5. Does

                             https://files.phpmyadmin.net/phpMyAdmin/4.0.10.20/phpMyAdmin-4.0.10.20-all-languages.zip

                    

                     4.8版本,PHP 5.2 and MySQL 5. Does not support PHP 5.5 or  newer

                             https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip

                             

               4     解壓並複製到/var/www/html/目錄下

                     unzip  phpMyAdmin-4.3.5-all-languages.zip

                     cp -a  phpMyAdmin-4.3.5-all-languages /var/www/html/mysql

                    

               5     準備配置文件

                     cd  /var/www/html/mysql

                     cp config.sample.inc.php  config.inc.php

 

               6     重啓服務

                     systemctl restart  httpd

                    

               7     瀏覽器輸入  server-ip/mysql

                     使用root帳號登陸

                    

 

部署wordpress:

               1     下載軟件:

                     官網:https://cn.wordpress.org/

                            wget  https://cn.wordpress.org/wordpress-4.9.4-zh_CN.zip

 

               2     解壓並複製

                     unzip  wordpress-4.9.4-zh_CN.zip

                     cp -a wordpress  /var/www/html/blog

                     chown -R apache:apache  /var/www/html/blog

               

               3     準備數據庫和帳號

                     mysql>CREATE DATABASE  wordpress

                     mysql>GRANT ALL ON  wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY  'centos';

 

               4     準備配置文件:

                     cp wp-config-sample.php  wp-config.php

                     vim  wp-config.php

                     數據庫登陸信息

               

               5     重啓httpd

               

               6     server-ip/blog  登陸執行初始化

               

               

部署discuz:

               1     下載軟件:

                      http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip

 

               2     解壓縮並複製的網站目錄下      

                            unzip  Discuz_X3.2_SC_UTF8.zip

                            cp upload/*  /data/dz/ -a

                            chown -R  apache:apache /data/dz

               

               3     重啓httpd 並測試訪問             

 

centos7 編譯php-xcache  加速訪問:

               

               官網:http://xcache.lighttpd.net/wiki/ReleaseArchive

               安裝方法:

                            rpm安裝,來自epel源

                             

               編譯安裝:

                     1     裝備環境,安裝開發包組development tools

                            yum install  php-devel

                    

                     2     下載並解壓縮  xcache-3.2.0.tar.bz2

                            cd  xcache-3.2.0

                             

                     3     phpize 生成編譯環境

                    

                     4     ./configure --enable-xcache  --with-php-config=/usr/bin/php-config

                            make && make  install

                    

                     5     cp xcache-3.2.0/xcache.ini  /etc/php.d/

                            systemctl reload  httpd

                             

                             

------------------------------------------------------------------------------          

fastcgi:

               centos6:

                             PHP-5.3.2以前:默認不支持fpm機制,須要自行打補丁並編譯安裝

                             httpd2.2:默認不支持fcgi協議,須要自行編譯此模塊

                             解決方案:編譯安裝http-2.4,php-5.3.3+

                             

               centos7:

                             httpd-2.4:rpm包默認編譯支持fcgi模塊

                             php-fpm包:專用於將php運行與fpm模式

 

               

               fcgi服務配置文件:/etc/php-fpm.conf,/etc/php-fpm.d/*.conf

                     鏈接池:

                            pm =  static|dynamic

                             static:固定數量的子進程;pm.max_children

                             dynamic:子進程數量以動態模式管理

                                           pm.max_children           最大進程數

                                           pm.start_servers     開啓啓動進程數

                                           pm.min_spare_servers   最小空閒進程

                                           pm.max_spare_servers 最大空閒進程

                                           pm.max_requests = 500       最大處理請求數

                             

                            daemonize = no  //是否將程序運行在後臺

                            listen =  127.0.0.1:9000 //FPM 監聽地址

                            listen.backlog = -1  //等待隊列的長度 -1表示無限制

                             listen.allowed_clients = 127.0.0.1 //僅容許哪些主機訪問

                             php_value[session.save_handler] = files

                             php_value[session.save_path] = /var/lib/php/session  

                    

                     確保運行php-fpm 進程的用戶對session目錄有讀寫權限

                                   mkdir  /var/lib/php/session

                                   chown  apache.apache /var/lib/php/session                               

                    

 

centos7,yum實現fastfcgi

 

同一臺主機:

               1     安裝服務並啓動服務

                            yum install httpd  mariadb-server php-fpm php-mysql

                            systemctl start  httpd php-fpm mariadb

                             

                    

               2     配置http

                            確認httpd服務器上必須啓用proxy_fcgi_module模塊,充當php客戶端

                                          httpd  -M |grep fcgi

                                          cat  /etc/httpd/conf.modules.d/00-proxy.conf

                             

                            添加/etc/httpd/conf.d/fcgi.conf 配置文件,內容參照

                                           DirectoryIndex index.php

                                      ProxyRequests Off

                                      ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/var/www/html/$1                                      

                    

               3     登陸數據庫添加受權帳號

 

               4     測試鏈接php和mysql鏈接書否正常

 

不一樣主機:

               注意:httpd和php-fpm需爲同一主機

               如分別使用不一樣主機,即便使用相同目錄路徑,會致使圖片信息無識別

               

               數據庫最好使用單獨主機,只需在應用程序配置地址,帳號信息便可

                    

 

----------------------------------------------------------------------------

實現:同一服務器使用虛擬主機配置多應用:

 

php,module方式:

               1     yum install httpd  mariadb-server php php-mysql

                     yum install php-string  安裝phpmyadmin須要此包

                    

                     註釋掉httpd主配置文件中 documentroot 項

                     添加配置文件

                            vim  /etc/httpd/conf.d/vhosts.conf

                            <virtualhost  *:80>

                                           servername www.blog.com

                                           documentroot "/data/blog/"

                                           errorlog "/var/log/httpd/error_blog_log"

                                           customlog "/var/log/httpd/access_blog_log" conbined

                                           <directory "/data/blog">

                                                         options none

                                                         allowoverride none

                                                         require all granted

                                           </directory>

 

                                          alias  /pma "/data/pma"

                                           <directory "/data/pma">

                                                         options none

                                                         allowoverride none

                                                         require all granted

                                           </directory>

                             </virtualhost>

 

                            <virtualhost  *:80>

                                           servername www.dz.com

                                           documentroot "/data/dz"

                                           errorlog "/var/log/httpd/error_dz_log"

                                           customlog "/var/log/httpd/access_dz_log" conbined

                                           <directory "/data/dz">

                                                         options none

                                                         allowoverride none

                                                         require all granted

                                           </directory>

                             </virtualhost>

               

               2      下載,解壓縮應用程序文件,分別複製到相應目錄下

                            cp -a wordpress/*  /data/blog/

                            cp -a  phpMyAdmin-4.3.5-all-languages/* /data/pma/

                            cp -a upload/*  /data/dz/

                                           其中dz爲discuz解壓以後的一個目錄,注意只複製此目錄便可

                            chown -R  apache:apache /data/blog /data/dz

         

               3     修改配置文件:

                            cp  /data/blog/wp-config-sample.php /data/blog/wp-config.php

                                          vim  /data/blog/wp-config.php

                                           填寫數據庫登陸信息

 

                            cp  /data/pma/config.sample.inc.php /data/pma/config.inc.php

                                          vim  /data/pma/config.inc.php

                                           填寫blowfish 中的隨機字符

 

               4     數據庫受權帳號

 

               5     重啓服務 並作 頁面測試

 

 

fastcgi方式:

               安裝程序包時 php換成  php-fpm

               

               特別注意:

                            mkdir  /var/lib/php/session

                            chown -R  apache:apache /var/lib/php/session

                     不然,phpmyadmin沒法使用

               

               配置文件中:以下,

               且以後步驟徹底和modules方式一致

               

                     vim  /etc/httpd/conf.d/fcgi.conf

                     directoryindex  index.php

                     <virtualhost  *:80>

                                   servername  www.blog.com

                                   documentroot  "/data/blog/"

                                   errorlog  "/var/log/httpd/error_blog_log"

                                   customlog  "/var/log/httpd/access_blog_log" conbined

                             

                                   proxyrequests  off

                                    ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/data/blog/$1

                             

                                   <directory  "/data/blog">

                                                  options none

                                                  allowoverride none

                                                  require all granted

                                    </directory>

                      </virtualhost>

 

                     <virtualhost  *:80>

                                   servername  www.pma.com

                                   documentroot  "/data/pma"

                                   errorlog  "/var/log/httpd/error_pma_log"

                                   customlog  "/var/log/httpd/access_pma_log" combined

 

                                   proxyrequests  off

                                    ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/data/pma/$1

 

                                   <directory  "/data/pma">

                                                  options none

                                                  allowoverride none

                                                  require all granted

                                    </directory>

                      </virtualhost>

 

                     <virtualhost  *:80>

                                   servername  www.dz.com

                                   documentroot  "/data/dz"

                                   errorlog  "/var/log/httpd/error_dz_log"

                                   customlog  "/var/log/httpd/access_dz_log" conbined

                              

                                   proxyrequests  off

                                    ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/data/dz/$1

                             

                                   <directory  "/data/dz">

                                                  options none

                                                  allowoverride none

                                                  require all granted

                                    </directory>

                      </virtualhost>

 

------------------------------------------------------------------------------------

編譯安裝LAMP:

 

在centos7編譯安裝LAMP:

安裝程序順序

               mariadb:通用二進制格式:mariadb-10.2.15

                     下載地址:

                     需提早準備好二進制安裝包

               

               httpd:    編譯安裝,httpd-2.4.33

                     下載地址:

                     官網:http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.33.tar.bz2

                     搜狐:http://mirrors.sohu.com/apache/httpd-2.4.33.tar.bz2

                            須要更新apr,apr-util

                     下載地址:   

                            APR:  http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz

                            APR-UTIL:  http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

               

               php7:編譯安裝,php-7.2.7

                     下載地址:http://mirrors.sohu.com/php/php-7.2.7.tar.bz2

               

               phpmyadmin:安裝phpmyadmin4.8.2

                     下載地址:https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip

               xcache:php7 之內置加速功能,不須要安裝xcache

 

對比測試:使用yum一件安裝腳本安裝lamp+wordpress

                     使用ab -c 10 -n 100 http://192.168.65.132/

                     測試結果Requests per second:    5.08  [#/sec] (mean)

                     測試屢次大概5個左右 phpmuadmin 大約26個左右

                 yum安裝上php-xcache以後測試結果爲:仍是5個 26個

                

編譯安裝流程:          

               1     準備開發環境

                            yum groupinstall  "development tools" -y

                            yum install  pcre-devel openssl-devel expat-devel -y

                             

               2     二進制安裝mariadb-10.2.15

                            ##若是沒有mysql帳號,需先建立

                                           groupadd -r -g 306 mysql

                                           useradd -r -u 306 -g 306 -d /data/mysqldb

                            tar -xf  mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/

                            cd  /usr/local/

                            ln -sv  mariadb-10.2.15-linux-x86_64 mysql

                            cd  mysql

                            chown -R mysql:mysql  ./*

                            mkdir /data/mysqldb  -p

                            chown -R mysql:mysql  /data/mysqldb

                            mkdir  /etc/mysql

                            cp  support-files/my-huge.cnf /etc/mysql/my.cnf

                             修改配置文件,若是要寫成腳本,此項需注意,使用sed    

                                   vim  /etc/mysql/my.cnf

                                           [mysqld]

                                           datadir         =  /data/mysqldb

                                           innodb_file_per_table = on

                                           skip_name_resolve = on

                             ./scripts/mysql_install_db --datadir=/data/mysqldb  --user=mysql

                            cp  support-files/mysql.server /etc/rc.d/init.d/mysqld

                            chkconfig --add  mysqld

                            chkconfig mysqld  on

                            service mysqld  start

 

               3     源碼編譯httpd-2.4

                             cd

                            wget  http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.33.tar.bz2  

                            wget  http://mirrors.hust.edu.cn/apache//apr/apr-1.6.3.tar.gz

                            wget  http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

                            tar -xf  httpd-2.4.33.tar.bz2

                            tar -xf  apr-1.6.3.tar.gz

                            tar -xf  apr-util-1.6.1.tar.gz

                            cp -a apr-1.6.3  httpd-2.4.33/srclib/apr

                            cp -a apr-util-1.6.1  httpd-2.4.33/srclib/apr-util

                             

                            cd  httpd-2.4.33/

./configure --prefix=/app/httpd24  \

--sysconfdir=/etc/httpd24  \

--enable-so --enable-ssl --enable-cgi  \

--enable-rewrite --with-zlib --with-pcre  \

--with-includedapr --enable-modules=most  \

--enable-mpms-shared=all  --with-mpm=prefork

                             

                            make -j 4 &&  make install

                            cd  /app/httpd24/

                            echo  'PATH=/app/httpd24/bin/:$PATH' >  /etc/profile.d/httpd24.sh

                            .  /etc/profile.d/httpd24.sh

                             

                     修改配置文件中的user和group

                            sed -i  '/^User/s/.*/User apache/' /etc/httpd24/httpd.conf

                            sed -i  '/^Group/s/.*/Group apache/' /etc/httpd24/httpd.conf

                     重啓服務      

                            apachectl  start

 

               4     源碼編譯安裝PHP:

                             cd

                            yum install  libxml2-devel bzip2-devel libmcrypt-devel -y

                            wget  http://mirrors.sohu.com/php/php-7.2.7.tar.bz2

                    

                     模塊方式:

                            tar -xf  php-7.2.7.tar.bz2

                            cd  php-7.2.7/

 

參考編譯選項:php5.6

./configure --prefix=/app/php  \

--with-mysql=/usr/local/mysql  \

--with-openssl \

--with-mysqli=/usr/local/mysql/bin/mysql_config  \

--enable-mbstring --with-png-dir  \

--with-jpeg-dir --with-freetype-dir  \

--with-zlib --with-libxml-dir=/usr  \

--enable-xml --enable-sockets  \

--with-apxs2=/appl/httpd24/bin/apxs \ 

--with-mcrypt --with-config-file-path=/etc  \

--with-config-file-scan-dir=/etc/php.d  \

--with-bz2

                    

                    

 

編譯選項:php7.0+

./configure --prefix=/app/php  \

--enable-mysqlnd \

--with-mysqli=mysqlnd  \

--with-openssl \

--with-pdo-mysql=mysqlnd  \

--enable-mbstring \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib \

--with-libxml-dir=/usr  \

--enable-xml  \

--enable-sockets \

--with-apxs2=/app/httpd24/bin/apxs  \

--with-config-file-path=/etc  \

--with-config-file-scan-dir=/etc/php.d  \

--disable-fileinfo \                    

--enable-maintainer-zts           

               

                            注意:    php-7.0以上版本使用--enable-mysqlnd --with-mysqli=mysqlnd ,

                                           原--with-mysql再也不支持

                                    --enable-maintainer-zts   

                                                  若是http編譯成event或者worker,必須加上此項

                            make -j 4 &&  make install

                    

                     準備配置文件:

                            cp  php.ini-production /etc/php.ini

                     編譯apache配置文件httpd.conf,使apache支持php

                            vim  /etc/httpd24/httpd.conf

                            添加2行:

                                   AddType  application/x-httpd-php .php

                                   AddType  application/x-httpd-php-source .phps                                  

                            定位至: DirectoryIndex index.html

                            修改成: DirectoryIndex index.php index.html

 

                     重複服務:

                            apachectl  restart

                             

 

               5     源碼編譯安裝PHP: fpm方式

                            tar -xf  php-7.2.7.tar.bz2

                            cd  php-7.2.7/

./configure --prefix=/app/php  \

--enable-mysqlnd  \

--with-mysqli=mysqlnd  \

--with-openssl \

--with-pdo-mysql=mysqlnd  \

--enable-mbstring  \

--with-freetype-dir  \

--with-jpeg-dir  \

--with-png-dir  \

--with-zlib   \

--with-libxml-dir=/usr  \

--enable-xml \

--enable-sockets  \

--enable-fpm  \

--with-config-file-path=/etc  \

--with-config-file-scan-dir=/etc/php.d  \

--enable-maintainer-zts  \

--disable-fileinfo                              

 

                            make -j 4 &&  make install

                    

                     安裝後配置:

                            cp  php.ini-production /etc/php.ini

                            cp  sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

                            chmod +x  /etc/init.d/php-fpm

                            chkconfig --add  php-fpm

                            chkconfig php-fpm  on

                             

                            cd  /app/php/etc

                            cp  php-fpm.conf.default php-fpm.conf

                            cp  php-fpm.d/www.conf.default php-fpm.d/www.conf

                             

                            vim  php-fpm.d/www.conf

                                          user =  apache

                                          group  = apache  

                            修改php-fpm程序的用戶和組,可選項,不修改也能夠

                                           

                             

                            rename ini so  /etc/php.d/*

                                           修改/etc/php.d/*.ini ===>  /etc/php.d/*.so

                                           php7.2.7須要,不然啓動會有一堆報錯

                                           

                            service php-fpm  start

                             

                     配置httpd.conf

                            vim  /etc/http24/httpd.conf

                             取消下面兩行的註釋:

                                   LoadModule  proxy_module modules/mod_proxy.so

                                     LoadModule proxy_fcgi_module  modules/mod_proxy_fcgi.so

                            定位至:DirectoryIndex index.html

                                    修改成:DirectoryIndex index.php  index.html

                            添加下面四行:

                                   AddType  application/x-httpd-php .php

                                   AddType  application/x-httpd-php-source .phps

                                   ProxyRequests  Off

                                    ProxyPassMatch  ^/(.*\.php)$  fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1                                

                     重啓服務:

                            apachectl  restart

                             

 

編譯過程報錯記錄:

               1     make[1]: Warning: File  `/root/php-7.2.7/ext/date/php_date.c' has

                            modification time  1.9e+06 s in the future

                     問題緣由:

                                    系統時間設置不正確,致使安裝時間是系統時間將來的時間

                     解決方案:

                                    修改正確系統時間

                                    

               2     PHP Startup: Unable to load  dynamic library 'curl.so' ....

                     解決方案:

                                   rename ini so  /etc/php.d/*

 

 

LAMP 一鍵安裝腳本:

               1     yum安裝module方式

               2     yum安裝fpm方式

               3     編譯安裝方式

相關文章
相關標籤/搜索