[TOC]javascript
LAMP是一種生產環境中經常使用的web服務組合模型。php
LAM(M)P所表達的組成方式html
WEB資源類型:java
Web相關語言python
一般,在低需求的企業環境中,咱們能夠將LAMP部署在同一臺設備上,下降支出。但大多數狀況,咱們會將LAMP分離,分別部署在多臺設備上,並讓他們鏈接通信。mysql
CGI:Common Gateway Interface 可讓一個客戶端,從網頁瀏覽器經過http服務器向執行在網絡服務器上的程序傳輸數據;CGI描述了客戶端和服務器程序之間傳輸的一種標準linux
請求流程:web
Client -- (httpd) --> httpd -- (cgi) --> application server (programfile) -- (mysql) --> mysqlsql
架構說明: shell
PHP是通用服務器端腳本編程語言,主要用於web開發實現動態web頁面,也是最先實現將腳本嵌入HTML源碼文檔中的服務器端腳本語言之一。同時,php還提供了一個命令行接口,所以,其也能夠在大多數系統上做爲一個獨立的shell來使用。
Zend Engine 1.0於1999年隨PHP 4發佈,由C語言開發且通過高度優化,並可以作爲PHP的後端模塊使用。Zend Engine爲PHP提供了內存和資源管理的功能以及其它的一些標準服務,其高性能、可靠性和可擴展性在促進PHP成爲一種流行的語言方面發揮了重要做用。 Zend Engine的出現將PHP代碼的處理過程分紅了兩個階段:首先是分析PHP代碼並將其轉換爲稱做Zend opcode的二進制格式opcode(相似Java的字節碼),並將其存儲於內存中;第二階段是使用Zend Engine去執行這些轉換後的Opcode。
Opcode是一種PHP腳本編譯後的中間語言,相似於Java的ByteCode,或者.NET的MSL。PHP執行PHP腳本代碼通常會通過以下4個步驟(確切的來講,應該是PHP的語言引擎Zend)
一、Scanning 詞法分析,將PHP代碼轉換爲語言片斷(Tokens) 二、Parsing 語義分析,將Tokens轉換成簡單而有意義的表達式 三、Compilation 將表達式編譯成Opcode 四、Execution 順次執行Opcode,每次一條,從而實現PHP腳本的功能
簡單來講的執行過程就是:掃描-->分析-->編譯-->執行
配置文件:
/etc/php.ini /etc/php.d/*.ini
關於php所使用的配置文件,配置文件在php解釋器啓動時被讀取 對配置文件修改生效的方法:
php中的配置字段格式爲: directiove = value 以鍵值對的形式存在。
註釋符:較新的版本中,已經徹底使用;進行註釋
php.ini的核心配置選項文檔: http://php.net/manual/zh/ini.core.php 、 php.ini配置選項列表: http://php.net/manual/zh/ini.list.php
php語言格式
<?php ...php code... ?>
經常使用配置選項:
#設置程序 最長超時,生產中能夠調大些 max_execution_time= 30 #設置程序佔用的最大內存,生產不夠,可調大 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 #開啓短標籤,如<? phpinfo();?> short_open_tag=on
php的加速器:基於PHP的特殊擴展機制如opcode緩存擴展也能夠將opcode緩存於php的共享內存中,從而可讓同一段代碼的後續重複執行時跳過編譯階段以提升性能。這些加速器並不是真正提升了opcode的運行速度,而僅是經過分析opcode後並將它們從新排列以達到快速執行的目的。
XCache 快速並且穩定的PHP opcode緩存,通過嚴格測試且被大量用於生產環境。項目地址:http://xcache.lighttpd.net/,收錄EPEL源
Zend Optimizer和Zend Guard Loader Zend Optimizer並不是一個opcode加速器,它是由Zend Technologies爲PHP5.2及之前的版本提供的一個免費、閉源的PHP擴展,其可以運行由ZendGuard生成的加密的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架構中,每一個服務都有他自身所負責的任務。
LAMP httpd:接收用戶的web請求;靜態資源則直接響應;動態資源爲php腳本,對此類資源的請求將交由php來運行 php:運行php程序 MariaDB/Mysql:數據管理系統,數據庫
其中http與php結合的方式
MPM:
使用mysql擴展鏈接數據庫的測試代碼 <?php #建立一個鏈接 參數分別爲:主機名 mysql帳戶 密碼 $conn = mysql_connect(‘localhost','root','123456'); if ($conn) echo "OK"; else echo "Failure"; #echo mysql_error(); mysql_close(); ?> Php使用mysqli擴展鏈接數據庫的測試代碼 <?php $mysqli=new mysqli("mysqlserver",「username",「password"); if(mysqli_connect_errno()) { echo "Failure"; $mysqli=null; exit; } echo 「OK"; $mysqli->close(); ?> 使用pdo擴展鏈接數據庫的測試代碼1 <?php $dsn='mysql:host=localhost;dbname=mysql'; $username='root'; $passwd='centos'; $dbh=new PDO($dsn,$username,$passwd); var_dump($dbh); ?> 使用pdo擴展鏈接數據庫的測試代碼2 <?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(); } ?> 須要注意一點,前兩種方式只能鏈接mysql,而基於pdo的方式能夠鏈接mysql,sql server ,oracle等主流數據庫。
yum -y install httpd, php, php-mysql, mysql-server service httpd start service mysqld start
Modules模塊模式 yum -y install httpd php php-mysql mariadb-server FastCGI獨立服務模式 yum -y install httpd php-fpm php-mysql mariadb-server systemctl start httpd.service systemctl start mariadb.service 注意:要使用prefork模型
#安裝lmap環境 yum -y install httpd mariadb-server php php-mysql php-mbstring #啓動並初始化 phpmyadmin登陸必須使用密碼非空的帳戶 systemctl start httpd systemctl start mariadb mysql_secure_installation 下載:https://www.phpmyadmin.net/downloads/ #解壓 因爲他是直接可使用的php程序,因此放到咱們的http根目錄下便可 tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.xz cd /var/www/html cd phpadmin/ #修改配置文件 cp config.sample.inc.php config.inc.php vim config.inc.php #修改該行爲自定義隨機數,這是用來隨機cookie的 $cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ #從新讀取配置便可 systemctl reload httpd
在部署以前,咱們能夠須要建立一個數據庫和mysql帳戶,用於wordpress使用。
#下載 https://cn.wordpress.org #解壓縮WordPress博客程序到網頁站點目錄下 unzip wordpress-4.3.1-zh_CN.zip #建立wordpress用戶 mysql> create database wpdb; mysql> grant all privileges on wpdb.* to wpuser@'%' identified by"wppass" 打開http://webserver/wordpress進行頁面安裝 或者 進入wordpress 目錄 cp wp-config-sample.php wp-config.php vim wp-config.php /** WordPress數據庫的名稱 */ define('DB_NAME', 'wpdb'); /** MySQL數據庫用戶名 */ define('DB_USER', 'http'); /** MySQL數據庫密碼 */ define('DB_PASSWORD', 'centos'); /** MySQL主機 */ define('DB_HOST', '192.168.1.10'); 注意wordpress目錄權限 Setfacl –R –m u:apache:rwx wordpress
該軟件可使用yum安裝,最新版本也是2014年的版本,已是一個過期的老古董了。
yum install -y php-xcache
如下爲編譯安裝步驟
#安裝編譯所需環境 yum groupinstall "development tools" #安裝該軟件須要的配置文件生成器 yum install php-devel 下載並解壓縮xcache-3.2.0.tar.bz2 tar xvf xcache-3.2.0.tar.gz cd xcache-3.2.0.tar.gz #使用該命令生成配置文件 phpize #編譯 安裝 ./configure --enable-xcache --with-php-config=/usr/bin/php-config make -j 4 && make install #複製配置文件 /usr/lib64/php/modules/ 表示默認該模塊的位置,xcache已mod的形式存在 cp xcache.ini /etc/php.d/ #重啓服務 激活該MOD systemctl restart httpd