LAMP指的Linux(操做系統)、ApacheHTTP 服務器,MySQL(有時也指MariaDB,數據庫軟件) 和PHP(有時也是指Perl或Python) 的第一個字母,通常用來創建web應用平臺。php
靜態資源:原始形式與相應內容一致。 動態資源:原始形式一般爲程序文件,須要在服務器端執行以後哦,將執行結果返回給客戶端。
CGI:Commom Gateway Interface可讓一個客戶端從網頁瀏覽器經過http服務器向執行在網絡服務器上的程序傳輸數據;CGI描述了客戶端與服務器程序之間傳輸的一種標準。 程序=指令(代碼文件)+數據(數據存儲系統、文件)
請求過程:html
Client--(http協議)-->httpd-->(CGI)-->application server(program file)-->(mysql)-->mysql
PHP(PHP: Hypertext Preprocessor)是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最先實現將腳本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,所以,其也能夠在大多數系統上做爲一個獨立的shell來使用mysql
(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
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
咱們在構建LAMP服務時,須要每個服務都要測試成功,必須在安裝完此服務以後,測試服務是否工做正常;與其餘服務是否能測試成功。在安裝以前咱們必須得知道php是依賴於mysql\mariadb和apache服務的,全部咱們必須按前兩個服務再安裝php。若是先安裝php也不是不可,慢慢的拍錯,想必必定會成功的。
下面的過程在CentOS 6 中進行配置。
[root@localhost ~]# yum install -y httpd
[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
[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# service httpd start
[root@localhost ~]# ss -tnl
#建議啓動後查看端口是否啓動
[root@localhost ~]# yum install -y mysql-server
[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
[root@localhost ~]# mysql_secure_installation
詳細的內容向看mysql配置http://merit.blog.51cto.com/10757694/1968557
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)
[root@localhost ~]# mysql -ujoah -p
[root@localhost ~]# yum install -y php
php安裝至關於添加了一份配置文件在/etc/httpd/conf.d/
目錄,若是要使其生效從新啓動httpd服務便可。
/var/www/html
目錄下建立文件測試[root@localhost html]# vim index.php
<?php echo "<h>success</h>"; phpinfo(); ?>
[root@localhost html]# service httpd restart
#重啓測試是否成功
不過在測試以前需安裝一個程序包使其能相互關聯做用。
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
測試方法一:
<?php $conn = mysql_connect('localhost','joah','123456'); if($conn) echo "ok"; else echo "failure"; mysql_close(); ?>
測試方法二:
編輯index.php
文件
<?php $mysqli=new mysqli("localhost","joah","123456"); if(mysqli_connect_errno()){ echo "failure"; $mysqli=null; exit; } echo "ok"; $mysqli->close(); ?>
此時咱們就可使用這個環境構建一些軟件等;下面咱們從phpMyadmin和wordpress這兩個軟件進行說明。
[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
目錄下
[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
#編輯配置文件在下面行輸入隨機數便可
重啓服務測試,測試幾回也不行。經過官網上查看原來php此不支持phpMyadim這個版本。
從新下載一個較低版本安裝
[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
重啓服務測試
此時會出現錯誤提示,安裝mbsting包便可
[[root@localhost src]# rpm -ivh php-mbstring-5.3.3-22.el6.x86_64.rpm --force
#因爲在CentOS6中屬於epel因此須要配置epel源,可是因爲本機上不了網,因此這種方式安裝
重啓httpd服務測試是否成功
成功,接下來就是本身配置過程了 ,此時登陸的用戶名和密碼是數據庫受權的用戶和密碼。
WordPress是使用PHP語言開發的博客平臺,用戶能夠在支持PHP和MySQL數據庫的服務器上架設屬於本身的網站。也能夠把 WordPress看成一個內容管理系統(CMS)來使用。WordPress是一款我的博客系統,並逐步演化成一款內容管理系統軟件,它是使用PHP語言和MySQL數據庫開發的。用戶能夠在支持 PHP 和 MySQL數據庫的服務器上使用本身的博客。<摘自:百度>
[root@localhost src]# tar xvf wordpress-4.8.tar.gz -C /var/www/html/
方式一:[root@localhost wordpress]# cp wp-config-sample.php wp-config.php
[root@localhost wordpress]# vim wp-config.php
#編輯此配置文件
方式二:
[root@localhost wordpress]# setfacl -Rm u:apache:rwx wordpress
#因爲是基於apache用戶運行全部給apache用戶對此文件rwx權限便可
http://192.168.4.59/wordpress/wp-admin/setup-config.php
而後下面就能夠搭建本身的博客啦!
注意在裝完數據庫以後切記必定要把剛剛受權的權限刪除[root@localhost html]# setfacl -b blog/
CentOS 7搭建LAMP環境
上述幾部與CentOS6安裝都基本相似,這裏就再也不累述。
下面咱們測試以性能如何:
[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加速器咱們來安裝一個加速器測試下性能如何?
[root@localhost src]# yum install -y php-devel
#安裝前須要安裝所依賴的包
[root@localhost src]# tar xvf xcache-3.2.0.tar.bz2
[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/
#複製配置文件
[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再也不支持。
CGI(Common Gateway Interface,通用網關接口),HTTP服務器與你的貨其餘機器上的程序進行交談的工具,其程序通常運行在網絡服務器上。CGI能夠用任何一種語言編寫,只要這種語言具備標準輸入、輸出和環境變量。
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的解析器是php-cgi,只能解析請求,返回結果,不會對進程管理;爲了能調用php-cgi進程程序,php-fpm就誕生了。
PHP-5.3.2以前,默認不支持fpm機制,須要自行打補丁並編譯安裝;
httpd-2.2:默認不支持fcgi協議,須要自行編譯此模塊;
爲了能在CentOS 6 中支持此功能,編譯安裝http和php便可。
httpd-2.4:rpm包默認編譯支持了fcgi模塊
php-fpm包:專用於將php運行於fpm模式
這裏在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表示無限制
確認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
#查看端口是否開啓
下面咱們來測試下性能如何?
[root@localhost/etc/httpd/conf.d]#ab -c 10 -n 100 http://192.168.4.60/wordpress/
#測試咱們在CentOS 7 搭建的博客
獨立運行的php跟模塊方式運行的php的性能略有提高。