lamp指的linux(作業系統)、apachehttp 伺服器,mysql(有時也指mariadb,資料庫軟體) 和php(有時也是指perl或python) 的第一個字母,一般用來建立web應用平台。
請求過程:
php(php: hypertext preprocessor)是通用伺服器端腳本程式設計語言,主要用于web開發實作動态web頁面,也是最早實作将腳本嵌入html源碼文檔中的伺服器端腳本語言之一。同時,php還提供了一個指令行接口,是以,其也可以在大多數系統上作為一個獨立的shell來使用
(1)配置檔案
(2)配置檔案格式
directive = value
注釋符:
(3)php.ini配置檔案設定
max_execution_time = 30 #最長執行時間30s
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 中進行配置。
<code>[root@localhost ~]# yum install -y httpd</code>
<code>[root@localhost ~]# vim /etc/httpd/conf/httpd.conf</code>
<code>[root@localhost ~]# chkconfig httpd on</code><code>[root@localhost ~]# service httpd start</code><code>[root@localhost ~]# ss -tnl</code> #建議啟動後檢視端口是否啟動
<code>[root@localhost ~]# yum install -y mysql-server</code>
<code>[root@localhost ~]# chkconfig mysqld on</code><code>[root@localhost ~]# chkconfig --list mysqld</code>
<code>[root@localhost ~]# service mysqld start</code>
<code>[root@localhost ~]# mysql_secure_installation</code> 詳細的内容向看mysql配置http://merit.blog.51cto.com/10757694/1968557
<code>mysql> create database wpdb;</code> #建立資料路
<code>mysql> grant all privileges on wpdb.* to joah@'localhost' identified by '123456';</code>#授權使用者對wpdb權限
<code>mysql> grant all privileges on wpdb.* to joah@'127.0.0.1' identified by '123456';</code>#授權使用者對wpdb權限
<code>mysql> select user,host,password from mysql.user;</code>
<code>[root@localhost ~]# mysql -ujoah -p</code>
<code>[root@localhost ~]# yum install -y php</code>
php安裝相當于添加了一份配置檔案在<code>/etc/httpd/conf.d/</code>目錄,如果要使其生效重新啟動httpd服務即可。
[root@localhost html]# vim index.php
<code>[root@localhost html]# service httpd restart</code> #重新開機測試是否成功
不過在測試之前需安裝一個程式包使其能互相關聯作用。
<code>[root@localhost ~]# yum install -y php-mysql</code>
測試方法一:
測試方法二:
編輯<code>index.php</code>檔案
此時我們就可以使用這個環境建構一些軟體等;下面我們從phpmyadmin和wordpress這兩個軟體進行說明。
<code>[root@localhost ~]# mv phpmyadmin-4.3.5-all-languages.zip /usr/local/src/</code>#将上傳的軟體包移到到此目錄下友善管理源碼編譯的安裝包
<code>[root@localhost src]# unzip phpmyadmin-4.3.5-all-languages.zip -d /var/www/html/</code>#将此包解壓至<code>/var/www/html</code>目錄下
<code>[root@localhost html]# ln -sv phpmyadmin-4.3.5-all-languages/ pma</code>#建立軟連接配接
<code>[root@localhost pma]# cp config.sample.inc.php config.inc.php</code>#準備配置檔案 <code>[root@localhost pma]# vim config.inc.php</code> #編輯配置檔案在下面行輸入随機數即可
重新開機服務測試,測試幾次也不行。通過官網上檢視原來php此不支援phpmyadim這個版本。
重新下載下傳一個較低版本安裝
<code>[root@localhost html]# unzip phpmyadmin-4.0.5-all-languages.zip</code>
<code>[root@localhost html]# ln -sv phpmyadmin-4.0.5-all-languages pem</code>#建立軟連接配接
<code>[root@localhost pem]# cp config.sample.inc.php config.inc.php</code>
<code>[root@localhost pem]# vim config.inc.php</code>
重新開機服務測試
此時會出現錯誤提示,安裝mbsting包即可
<code>[[root@localhost src]# rpm -ivh php-mbstring-5.3.3-22.el6.x86_64.rpm --force</code>#由于在centos6中屬于epel是以需要配置epel源,但是由于本機上不了網,是以這種方式安裝
重新開機httpd服務測試是否成功
成功,接下來就是自己配置過程了 ,此時登入的使用者名和密碼是資料庫授權的使用者和密碼。
wordpress是使用php語言開發的部落格平台,使用者可以在支援php和mysql資料庫的伺服器上架設屬于自己的網站。也可以把 wordpress當作一個内容管理系統(cms)來使用。wordpress是一款個人部落格系統,并逐漸演化成一款内容管理系統軟體,它是使用php語言和mysql資料庫開發的。使用者可以在支援 php 和 mysql資料庫的伺服器上使用自己的部落格。<摘自:百度>
<code>[root@localhost src]# tar xvf wordpress-4.8.tar.gz -c /var/www/html/</code>
方式一:<code>[root@localhost wordpress]# cp wp-config-sample.php wp-config.php</code>
<code>[root@localhost wordpress]# vim wp-config.php</code> #編輯此配置檔案
方式二:
<code>[root@localhost wordpress]# setfacl -rm u:apache:rwx wordpress</code>#由于是基于apache使用者運作所有給apache使用者對此檔案rwx權限即可
http://192.168.4.59/wordpress/wp-admin/setup-config.php
然後下面就可以搭建自己的部落格啦!
注意在裝完資料庫之後切記一定要把剛剛授權的權限删除<code>[root@localhost html]# setfacl -b blog/</code>
centos 7搭建lamp環境
上述幾部與centos6安裝都基本類似,這裡就不再累述。
下面我們測試以性能如何:
<code>[root@localhost html]# ab -c 10 -n 100 http://192.168.4.60/blog/</code>
由于之前介紹過php加速器我們來安裝一個加速器測試下性能如何?
<code>[root@localhost src]# yum install -y php-devel</code> #安裝前需要安裝所依賴的包
<code>[root@localhost src]# tar xvf xcache-3.2.0.tar.bz2</code>
<code>[root@localhost/usr/local/src]#yum install -y php-devel</code> #安裝此包,提供php擴充為編譯
<code>[root@localhost/usr/local/src/xcache-3.2.0]#phpize</code> #生成configure配置檔案等
<code>[root@localhost/usr/local/src/xcache-3.2.0]#./configure --enable-xcache --with-php-config=/usr/bin/php-config</code><code>[root@localhost/usr/local/src/xcache-3.2.0]#make && make install</code>
<code>[root@localhost/usr/local/src/xcache-3.2.0]#cp xcache.ini /etc/php.d/</code>#複制配置檔案
<code>[root@localhost/usr/local/src/xcache-3.2.0]#systemctl restart httpd.service</code><code>[root@localhost/usr/local/src/xcache-3.2.0]#ab -c 10 -n 100 http://192.168.4.60/wordpress</code>
是以可以看出加速器對于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配置檔案進行講解
<code>[root@localhost~]#yum install -y php-fpm</code> #直接使用yum源安裝即可
主配置檔案:
選項介紹:
為了確定運作php-fpm程序的使用者對session目錄有讀寫權限
如果想支援遠端主機:修改配置檔案<code>/etc/php-fpm.d/www.conf</code>
确認httpd程式是否已經加載了<code>proxy_fcgi_module</code>
<code>[root@localhost/etc/php-fpm.d]#httpd -m |grep fcgi</code> #必須加載了這個子產品才能支援php-fpm
<code>[root@localhost/etc/httpd/conf.d]#vim fastcgi.conf</code>
<code>[root@localhost/etc/httpd/conf.d]#ss -tnl</code> #檢視端口是否開啟
下面我們來測試下性能如何?
<code>[root@localhost/etc/httpd/conf.d]#ab -c 10 -n 100 http://192.168.4.60/wordpress/</code>#測試我們在centos 7 搭建的部落格
獨立運作的php跟子產品方式運作的php的性能略有提升。