lamp基本架構以及在單台主機上實作wordpress基于lamp的安裝
-----------------------------------------------------------------------------------------------------------------------------------------------
一、lamp架構
1、lamp
l: linux
a: apache (httpd)
m: mysql, mariadb
m:memcached
p: php, perl, python
2、web資源類型:
靜态資源:原始形式與響應内容一緻,在用戶端浏覽器執行
動态資源:原始形式通常為程式檔案,需要在伺服器端執行之後,将執行結果傳回給用戶端
3、web相關語言
用戶端技術:html,javascript,css,jpg
伺服器端技術:php,jsp,python,asp
二、cgi
1、cgi:common gateway interface,公共網關接口,可以讓一個用戶端,從網頁浏覽器通過http伺服器向執行在網絡伺服器上的程式傳輸資料,它描述了用戶端和伺服器程式之間傳輸的一種标準,比如說通過浏覽器注冊某網站使用者,該操作通過cgi接口連接配接到該網站的資料庫并且新增了一條使用者記錄
2、請求流程:
client --(httpd) --> httpd--(cgi) --> application server (program file) --(mysql) --> mysql
3、php: 腳本程式設計語言、嵌入到html中的嵌入式web程式語言
基于zend編譯成opcode(二進制格式的位元組碼,重複運作,可省略編譯環境)
三、工作原理
四、php配置
php:腳本語言解釋器
1、配置檔案:/etc/php.ini, /etc/php.d/*.ini
2、配置檔案在php解釋器啟動時被讀取
3、對配置檔案的修改生效方法
modules:重新開機httpd服務
fastcgi:重新開機php-fpm服務
4、/etc/php.ini,php主配置檔案格式:
[foo]:section header
directive = value
注釋符:較新的版本中,已經完全使用;進行注釋
#:純粹的注釋資訊
;:用于注釋可啟用的directive
5、php主配置檔案說明項
max_execution_time= 30 最長執行時間30s,運作多久後還未結束認為逾時,可适當調短
max_input_time = 60 上傳多長時間算逾時,使用者多久不寫東西算逾時
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的加速器
1、php的加速器:基于php的特殊擴充機制如opcode緩存擴充也可以将opcode緩存于php的共享記憶體中,進而可以讓同一段代碼的後續重複執行時跳過編譯階段以提高性能。這些加速器并非真正提高了opcode的運作速度,而僅是通過分析opcode後并将它們重新排列以達到快速執行的目的
2、常見的php加速器有:
(1)apc (alternative php cache),遵循php license的開源架構,php opcode緩存加速器,目前的版本不适用于php 5.4項目位址。
(2)eaccelerator,源于turckmmcache,早期的版本包含了一個php encoder和php loader,目前encoder已經不在支援。
(3)xcache快速而且穩定的php opcode緩存,經過嚴格測試且被大量用于生産環境,收錄epel源,現常用此加速器
(4)zend optimizer和zend guard loader,zend optimizer并非一個opcode加速器,它是由zend technologies為php5.2及以前的版本提供的一個免費、閉源的php擴充,其能夠運作由zend guard生成的加密的php代碼或模糊代碼。而zend guard loader則是專為php5.3提供的類似于zend optimizer功能的擴充。
(5)nuspherephpexpress,nusphere的一款開源php加速器,它支援裝載通過nuspherephp encoder編碼的php程式檔案,并能夠實作對正常php檔案的執行加速。
六、lamp
(1)httpd:接收使用者的web請求;靜态資源則直接響應;動态資源為php腳本,對此類資源的請求将交由php來運作
(2)php:運作php程式
(3)mariadb:資料管理系統
2、http與php結合的方式
php沒有獨立的程序,它隻是附加在httpd上的一個獨立子產品
cgi
fastcgi
modules (将php編譯成為httpd的子產品,預設方式)
mpm:
prefork: libphp5.so
event, worker: libphp5-zts.so
3、部署環境
centos 7:
modules:httpd, php, php-mysql, mariadb-server
fastcgi:httpd, php-fpm, php-mysql, mariadb-server
centos 6:
modules:httpd, php, php-mysql, mysql-server
fastcgi:預設不支援
4、用pdo(php data object)擴充連接配接資料庫
在httpd目錄下,預設/var/www/html,建立*.php檔案并複制以下内容,對資料庫測試是否連通
<?php
try {
$user='root';
$pass='chenux';
$dbh= new pdo('mysql:host=192.168.239.70;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應用
1、phpmyadmin、wordpress、phpwind、crossday discuz! board、ecshop
2、phpmyadmin:www.phpmyadmin.net/downloads/
yum -y install httpdmariadb-server phpphp-mysql
systemctlstart httpd
systemctlstart mariadb
mysql_secure_installation
下載下傳:https://www.phpmyadmin.net/downloads/
tar xvf phpmyadmin-4.0.10.20-all-languages.tar.xz cd /var/www/html
cd phpadmin/
cp config.sample.inc.phpconfig.inc.php
yum -y install php-mbstring
systemctl reload httpd
3、wordpress安裝:
(1)cn.wordpress.org,下載下傳wordpress-version-zh_cn.zip,
(2)unzip wordpress-version-zh_cn.zip 至網站目錄下
(3)建立wordpress資料庫,并建立wordpress使用的資料使用者
mysql>create database wpdb;
mysql> grant all privileges on wpdb.* to wpuser@'%' identified by 'wppass'
(4)進入wordpress目錄,cp wp-config-sample.php wp-config.php
進行修改
(5)打開http://server/wordpress進行頁面安裝
按剛建立的填寫
開始安裝
繼續填寫
完成後登陸
(6)注意wordpress目錄權限setfacl -r -m u:apache:rwx wordpress
八、php-fpm模式
1、php配置
配置檔案:/etc/php.ini,/etc/php.d/*.ini
module下,重新開機httpd服務
fastcgi模式下,重新開機php-fpm服務,配置檔案/etc/php-fpm.conf,/etc/php-fpm.d/www.conf
配置檔案格式
配置檔案格式:[foo]:section header
directive=value
注釋符:# 純粹的注釋資訊
; 用于注釋可啟動的指令
說明:在較新的版本中,已經完全使用”;”進行注釋
2、php.ini核心配置的詳細說明:http://php.net/manual/zh/ini.core.php
3、php.ini配置選項清單:http://php.net/manual/zh/ini.list.php
4、fcgi服務配置檔案:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
5、連接配接池:
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
6、確定運作php-fpm程序的使用者對session目錄有讀寫權限
mkdir /var/lib/php/session
chown apache.apache /var/lib/php/session
通路httpd動态資源跳轉到php-fpm服務
(1) 配置httpd,添加/etc/httpd/conf.d/fcgi.conf配置檔案,内容類似
directoryindex index.php
proxyrequests off
proxypassmatch ^/(.*\.php)$ fcgi://phpipsever:9000/var/www/html/$1
注意:在httpd伺服器上必須啟用proxy_fcgi_module子產品,充當php用戶端
httpd–m |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
(2) 虛拟主機配置
vim /etc/httpd/conf.d/vhosts.conf
<virtualhost*:80>
servername www.b.net
documentroot /apps/vhosts/b.net
proxypassmatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/apps/vhosts/b.net/$1
<directory "/apps/vhosts/b.net">
options none
allowoverride none
require all granted
</directory>
</virtualhost>
7、php-fpm常見配置,/etc/php-fpm.d/www.conf
daemonize= no //是否将程式運作在背景
listen = 127.0.0.1:9000 //fpm 監聽位址
listen.backlog= -1 //等待隊列的長度-1表示無限制listen.allowed_clients= 127.0.0.1 //僅允許哪些主機通路
pm = dynamic //pm是動态運作還是靜态運作
//static 固定數量的子程序,pm.max_childen
//dynamic子程序資料以動态模式管理
pm.max_children = 500,最大程序數
pm.start_servers = 50,剛開始啟動多少程序
pm.min_spare_servers = 50,最少保留白閑程序
pm.max_spare_servers = 100,最大保留白閑程序
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session,設定session存放位置
8、啟動php-fpm:systemctl start php-fpm
9、安裝httpd包:yum install httpd
10、檢視httpdmod_fcgi子產品是否加載
httpd-m | grep fcgi
proxy_fcgi_module(shared)
11、添加fcgi的配置檔案
proxyrequests off //是否開啟正向代理
proxypassmatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 //開啟fcgi反向代理,//前面的/相對于後面的/var/www/html而言,後面的$1是指前面的/(.*\.php)
12、重新開機httpd:systemctl start httpd