lamp

1、LAMP

一、概念

LAMP指的Linux(操做系統)、ApacheHTTP 服務器,MySQL(有時也指MariaDB,數據庫軟件) 和PHP(有時也是指Perl或Python) 的第一個字母,通常用來創建web應用平臺。php

二、web資源的類型

靜態資源:原始形式與相應內容一致。
動態資源:原始形式一般爲程序文件,須要在服務器端執行以後哦,將執行結果返回給客戶端。

三、LAMP結構

LAMP_software_bundle.svg.png

CGI:Commom Gateway Interface可讓一個客戶端從網頁瀏覽器經過http服務器向執行在網絡服務器上的程序傳輸數據;CGI描述了客戶端與服務器程序之間傳輸的一種標準。

程序=指令(代碼文件)+數據(數據存儲系統、文件)

請求過程:html

Client--(http協議)-->httpd-->(CGI)-->application server(program file)-->(mysql)-->mysql

詳細過程

2、PHP

一、PHP簡介

PHP(PHP: Hypertext Preprocessor)是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最先實現將腳本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,所以,其也能夠在大多數系統上做爲一個獨立的shell來使用mysql

二、PHP配置

(1)配置文件web

/etc/php.ini
/etc/php.d/*.ini
配置文件在php解釋器啓動時被讀取。

(2)配置文件格式sql

directive = valueshell

註釋符:數據庫

#:純粹的註釋信息
;:用於註釋可啓用的directive;較新的版本中,已經所有使用「;」進行註釋。

(3)php.ini配置文件設置express

max_execution_time = 30 #最長執行時間30sapache

memory_limit 128 #內存限制,可是實際生產中不夠,可調大此值編程

display——startup_errors off #顯示啓動時出錯信息,建議關閉,若是不關閉,會有可能顯示一些重要信息

post_max_size 8M #最大上傳數據大小,生產環境中可能臨時調大

upload_max_filesize 2M #最大上傳文件大小,生產環境中可能要調大。可是要比post_max_size值要小。

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

date.timezone = Aisa/shanghai #指定時區

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

若是想了解更多請查看http://php.net/manual/zh/ini.core.php

(4)PHP的加速器

php的加速器:基於PHP的特殊擴展機制如opcode緩存擴展也能夠將opcode緩存於php的共享內存中,從而可讓同一段代碼的後續重複執行時跳過編譯階段以提升性能。這些加速器並不是真正提升了opcode的運行速度,而僅是經過分析opcode後並將它們從新排列以達到快速執行的目的。

類型

  • 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加速器,它是由ZendTechnologies爲PHP5.2及之前的版本提供的一個免費、閉源的PHP擴展,其可以運行由Zend Guard生成的加密的PHP代碼或模糊代碼。 而Zend Guard Loader則是專爲PHP5.3提供的相似於Zend Optimizer功能的擴展。項目地址http://www.zend.com/en/products/guard/runtime-decoders

  • 加速器,它支持裝載經過NuSphere PHP Encoder編碼的PHP程序文件,並可以實現對常規PHP文件的 執行加速。項目地址,http://www.nusphere.com/products/phpexpress.htm

3、LAMP構建

咱們在構建LAMP服務時,須要每個服務都要測試成功,必須在安裝完此服務以後,測試服務是否工做正常;與其餘服務是否能測試成功。在安裝以前咱們必須得知道php是依賴於mysql\mariadb和apache服務的,全部咱們必須按前兩個服務再安裝php。若是先安裝php也不是不可,慢慢的拍錯,想必必定會成功的。

下面的過程在CentOS 6 中進行配置。

一、httpd安裝

(1)使用yum源安裝

[root@localhost ~]# yum install -y httpd

(2)配置主配置文件/etc/httpd/conf/httpd.conf

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

ServerTokens prod   #修改響應報文顯示系統信息
ServerName www.example.com:79   #若是不開啓這項,啓動會提示以下內容:
    Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

(3)設爲開機啓動並啓動httpd服務

[root@localhost ~]# chkconfig httpd on[root@localhost ~]# service httpd start[root@localhost ~]# ss -tnl #建議啓動後查看端口是否啓動

(4)測試是否成功

2017-10-10_201625.jpg

二、mysql安裝

(1)使用yum源安裝

[root@localhost ~]# yum install -y mysql-server

(2)設置爲開機啓動並啓動mysql服務

[root@localhost ~]# chkconfig mysqld on[root@localhost ~]# chkconfig --list mysqld

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@localhost ~]# service mysqld start

(3)初始化數據庫

[root@localhost ~]# mysql_secure_installation 詳細的內容向看mysql配置http://merit.blog.51cto.com/10757694/1968557

(4)建立用戶

mysql> CREATE DATABASE wpdb; #建立數據路

mysql> GRANT ALL PRIVILEGES ON wpdb.* TO joah@'localhost' IDENTIFIED BY '123456';#受權用戶對wpdb權限

mysql> GRANT ALL PRIVILEGES ON wpdb.* TO joah@'127.0.0.1' IDENTIFIED BY '123456';#受權用戶對wpdb權限

mysql> SELECT user,host,password FROM mysql.user;

+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | localhost | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
| root | 127.0.0.1 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
| joah | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| joah | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)

(5)測試是否成功

[root@localhost ~]# mysql -ujoah -p 2017-10-10_201730.jpg

三、php安裝

(1)使用yum源安裝php

[root@localhost ~]# yum install -y php

php安裝至關於添加了一份配置文件在/etc/httpd/conf.d/目錄,若是要使其生效從新啓動httpd服務便可。

四、測試php和httpd是否配置成功

(1)在/var/www/html目錄下建立文件測試

[root@localhost html]# vim index.php

<?php
        echo "<h>success</h>";
        phpinfo();
?>

[root@localhost html]# service httpd restart #重啓測試是否成功

2017-10-10_202601.jpg

五、測試php是否能夠和數據庫鏈接成功

(1)php-mysql安裝

不過在測試以前需安裝一個程序包使其能相互關聯做用。

The php-mysql package contains a dynamic shared object that will add MySQL database support to PHP. MySQL is an object-relational database management system. PHP is an HTML-embeddable scripting language. If you need MySQL support for PHP applications, you will need to install  this package and the php package. 提供了一個動態分享庫使mysql數據庫支持php

[root@localhost ~]# yum install -y php-mysql

(2)編輯index.php文件

測試方法一:

<?php


        $conn = mysql_connect('localhost','joah','123456');
        if($conn)
            echo "ok";
        else
            echo "failure";
        mysql_close();
?>

2017-10-10_203951.jpg

測試方法二:

編輯index.php文件

<?php
        $mysqli=new mysqli("localhost","joah","123456");
        if(mysqli_connect_errno()){
            echo "failure";
            $mysqli=null;
            exit;
        }
            echo "ok";
            $mysqli->close();
?>

2017-10-10_205453.jpg

此時咱們就可使用這個環境構建一些軟件等;下面咱們從phpMyadmin和wordpress這兩個軟件進行說明。

安裝phpMyadmin

(1)上傳軟件包並進行編譯安裝

[root@localhost ~]# mv phpMyAdmin-4.3.5-all-languages.zip /usr/local/src/#將上傳的軟件包移到到此目錄下方便管理源碼編譯的安裝包

[root@localhost src]# unzip phpMyAdmin-4.3.5-all-languages.zip -d /var/www/html/#將此包解壓至/var/www/html目錄下

(2)配置配置文件

[root@localhost html]# ln -sv phpMyAdmin-4.3.5-all-languages/ pma#建立軟鏈接

[root@localhost pma]# cp config.sample.inc.php config.inc.php#準備配置文件 [root@localhost pma]# vim config.inc.php #編輯配置文件在下面行輸入隨機數便可 2017-10-10_211650.jpg

重啓服務測試,測試幾回也不行。經過官網上查看原來php此不支持phpMyadim這個版本。

2017-10-10_213054.jpg

從新下載一個較低版本安裝

[root@localhost html]# unzip phpMyAdmin-4.0.5-all-languages.zip

[root@localhost html]# ln -sv phpMyAdmin-4.0.5-all-languages pem#建立軟鏈接

[root@localhost pem]# cp config.sample.inc.php config.inc.php

[root@localhost pem]# vim config.inc.php

2017-10-10_211650.jpg

重啓服務測試

2017-10-10_213450.jpg

此時會出現錯誤提示,安裝mbsting包便可

[[root@localhost src]# rpm -ivh php-mbstring-5.3.3-22.el6.x86_64.rpm --force#因爲在CentOS6中屬於epel因此須要配置epel源,可是因爲本機上不了網,因此這種方式安裝

重啓httpd服務測試是否成功

2017-10-11_080510.jpg

成功,接下來就是本身配置過程了 ,此時登陸的用戶名和密碼是數據庫受權的用戶和密碼。

wordpress安裝

WordPress是使用PHP語言開發的博客平臺,用戶能夠在支持PHP和MySQL數據庫的服務器上架設屬於本身的網站。也能夠把 WordPress看成一個內容管理系統(CMS)來使用。WordPress是一款我的博客系統,並逐步演化成一款內容管理系統軟件,它是使用PHP語言和MySQL數據庫開發的。用戶能夠在支持 PHP 和 MySQL數據庫的服務器上使用本身的博客。<摘自:百度>

(1)解壓縮安裝

[root@localhost src]# tar xvf wordpress-4.8.tar.gz -C /var/www/html/

(2)準備配置文件

方式一:[root@localhost wordpress]# cp wp-config-sample.php wp-config.php

[root@localhost wordpress]# vim wp-config.php #編輯此配置文件 2017-10-11_091044.jpg

方式二:

[root@localhost wordpress]# setfacl -Rm u:apache:rwx wordpress#因爲是基於apache用戶運行全部給apache用戶對此文件rwx權限便可

(3)測試是否成功

http://192.168.4.59/wordpress/wp-admin/setup-config.php

2017-10-11_093859.jpg

而後下面就能夠搭建本身的博客啦!

注意在裝完數據庫以後切記必定要把剛剛受權的權限刪除[root@localhost html]# setfacl -b blog/

CentOS 7搭建LAMP環境

(1)安裝httpd服務並測試

(2)安裝mariadb服務並測試

(3)安裝php並測試與httpd和mariadb可否相關鏈接

(4)搭建phpMyadimn

(5)搭建wordpress

上述幾部與CentOS6安裝都基本相似,這裏就再也不累述。

(6)測試性能如何

下面咱們測試以性能如何:

[root@localhost html]# ab -c 10 -n 100 http://192.168.4.60/blog/

HTML transferred:       5209700 bytes
Requests per second:    18.88 [#/sec] (mean)    #這裏是顯示的測試結果
Time per request:       529.736 [ms] (mean)
Time per request:       52.974 [ms] (mean, across all concurrent requests)
Transfer rate:          965.32 [Kbytes/sec] received

因爲以前介紹過php加速器咱們來安裝一個加速器測試下性能如何?

(1)源碼編譯安裝xcache

[root@localhost src]# yum install -y php-devel #安裝前須要安裝所依賴的包

[root@localhost src]# tar xvf xcache-3.2.0.tar.bz2

(2)安裝php加速器測試性能

[root@localhost/usr/local/src]#yum install -y php-devel #安裝此包,提供php擴展爲編譯

[root@localhost/usr/local/src/xcache-3.2.0]#phpize #生成configure配置文件等

[root@localhost/usr/local/src/xcache-3.2.0]#./configure --enable-xcache --with-php-config=/usr/bin/php-config[root@localhost/usr/local/src/xcache-3.2.0]#make && make install

[root@localhost/usr/local/src/xcache-3.2.0]#cp xcache.ini /etc/php.d/#複製配置文件

(3)重啓服務,測試性能如何

[root@localhost/usr/local/src/xcache-3.2.0]#systemctl restart httpd.service[root@localhost/usr/local/src/xcache-3.2.0]#ab -c 10 -n 100 http://192.168.4.60/wordpress

Total transferred:      5236400 bytes
HTML transferred:       5209700 bytes
Requests per second:    53.82 [#/sec] (mean)    #性能至關於提高了一倍
Time per request:       185.804 [ms] (mean)
Time per request:       18.580 [ms] (mean, across all concurrent requests)
Transfer rate:          2752.19 [Kbytes/sec] received

所以能夠看出加速器對於php起到必定的加速做用,這裏須要注意在php更高版本再也不xcache再也不支持。

3、CGI和FastCGI

一、CGI

CGI(Common Gateway Interface,通用網關接口),HTTP服務器與你的貨其餘機器上的程序進行交談的工具,其程序通常運行在網絡服務器上。CGI能夠用任何一種語言編寫,只要這種語言具備標準輸入、輸出和環境變量。

二、FastCGI

FastCGI像是一個常駐型的CGI,它能夠一直執行,只要激活後,不會每次都要花費時間去fork一次。

工做原理

(1)Web Server啓動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)

(2)FastCGI進程管理器自身初始化,啓動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的鏈接。

(3)當客戶端請求到達Web Server時,FastCGI進程管理器選擇並鏈接到一個CGI解釋器。 Web server將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。

(4)FastCGI 子進程完成處理後將標準輸出和錯誤信息從同一鏈接返回Web Server。當FastCGI子進程關閉鏈接時, 請求便告處理完成。FastCGI子進程接着等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個鏈接。 在CGI模式中,php-cgi在此便退出了。

三、php-fpm和FastCGI

(1)二者之間有何聯繫

php的解析器是php-cgi,只能解析請求,返回結果,不會對進程管理;爲了能調用php-cgi進程程序,php-fpm就誕生了。

在CentOS 6 中:

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

httpd-2.2:默認不支持fcgi協議,須要自行編譯此模塊;

爲了能在CentOS 6 中支持此功能,編譯安裝http和php便可。

在CentOS 7中:

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

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

(2)配置文件

這裏在CentOS7中對php-fpm配置文件進行講解

[root@localhost~]#yum install -y php-fpm #直接使用yum源安裝便可

主配置文件:

/etc/php-fpm.conf  和 /etc/php-fpm.d/*.conf

選項介紹:

pm = static(固定數量的子進程)|dynamic(以動態模式管理)
pm.max_children  最大子進程
pm.start_servers 初始化時開啓的子進程
pm.min_spare_servers 最小空閒子進程
pm.max_spare_servers 最大空閒子進程
pm.max_requests 每一個子進程最大請求數量
php_value[session.save_handler]     設置類型
php_value[session.save_path]  文件的存儲位置

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

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

若是想支持遠程主機:修改配置文件/etc/php-fpm.d/www.conf

listen
  格式:
    ip.add.re.ss:port
    port
listen.allowed_clients  容許遠程who鏈接,默認any
listen.backlog  等待隊列的長度,-1表示無限制

(3)使http支持php-fpm

確認httpd程序是否已經加載了proxy_fcgi_module

[root@localhost/etc/php-fpm.d]#httpd -M |grep fcgi #必須加載了這個模塊才能支持php-fpm

進行配置

[root@localhost/etc/httpd/conf.d]#vim fastcgi.conf

   DirectoryIndex index.php #設置默認索引文件
   ProxyRequests off    #是否開啓正向代理
   ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1    #路徑匹配

[root@localhost/etc/httpd/conf.d]#ss -tnl #查看端口是否開啓

2017-10-11_191546.jpg

下面咱們來測試下性能如何?

[root@localhost/etc/httpd/conf.d]#ab -c 10 -n 100 http://192.168.4.60/wordpress/#測試咱們在CentOS 7 搭建的博客 2017-10-11_191913.jpg

獨立運行的php跟模塊方式運行的php的性能略有提高。

相關文章
相關標籤/搜索