一.LAMP介紹 ?
(1)LAM(M)P:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python ?
WEB資源類型:
靜態(tài)資源:原始形式與響應(yīng)內(nèi)容一致
動態(tài)資源:原始形式通常為程序文件,需要在服務(wù)器端執(zhí) 行之后,將執(zhí)行結(jié)果返回給客戶端 ?
Web相關(guān)語言 客戶端技術(shù): javascript,html 服務(wù)器端技術(shù):php, jsp,python
(2)CGI:Common Gateway Interface
可以讓一個客戶端,從網(wǎng)頁瀏覽器通過http服務(wù)器向執(zhí)行在 網(wǎng)絡(luò)服務(wù)器上的程序傳輸數(shù)據(jù);
CGI描述了客戶端和服務(wù)器程 序之間傳輸?shù)囊环N標(biāo)準(zhǔn) ?
程序=指令+數(shù)據(jù)
指令:代碼文件
數(shù)據(jù):數(shù)據(jù)存儲系統(tǒng)、文件 ?
請求流程: Client -- (httpd) --> httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql ?
php: 腳本編程語言、嵌入到html中的嵌入式web程序語言 基于zend編譯成opcode(二進(jìn)制格式的字節(jié)碼,重復(fù)運(yùn)行,可 省略編譯環(huán)境)
(3)LAMP工作原理
image.png
工作流程說明:
- 當(dāng)客戶端請求的資源是靜態(tài)資源時,web服務(wù)器會將靜態(tài)資源直接返回客戶端
- 當(dāng)客戶端請求的資源是動態(tài)資源時,httpd的php會進(jìn)行相應(yīng)的動態(tài)資源運(yùn)算,當(dāng)該過程還需要數(shù)據(jù)庫的運(yùn)算時,php還要連接數(shù)據(jù)庫獲取數(shù)據(jù)并進(jìn)行推算,運(yùn)算的結(jié)果會通過web服務(wù)器將動態(tài)資源轉(zhuǎn)化為靜態(tài)資源返回客戶端
二.PHP簡介
(1) PHP是通用服務(wù)器端腳本編程語言,主要用于web開發(fā)實(shí)現(xiàn)動態(tài)web頁面,也是最 早實(shí)現(xiàn)將腳本嵌入HTML源碼文檔中的服務(wù)器端腳本語言之一。同時,php還提供 了一個命令行接口,因此,其也可以在大多數(shù)系統(tǒng)上作為一個獨(dú)立的shell來使用
(2)PHP Zend Engine——開源的、PHP腳本語言的解釋器
作用:為PHP提供了內(nèi)存和資源管理的功能以及其它的一些標(biāo)準(zhǔn)服務(wù) ,其高性能、可靠性和可擴(kuò)展性在促進(jìn)PHP成為一種流行的語 言方面發(fā)揮了重要作用
(3)Zend Engine的出現(xiàn)將PHP代碼的處理過程分成了兩個階段
首先是分析PHP代碼并將其轉(zhuǎn)換為稱作Zend opcode的二進(jìn)制 格式(類似Java的字節(jié)碼),并將其存儲于內(nèi)存中;
第二階段 是使用Zend Engine去執(zhí)行這些轉(zhuǎn)換后的Opcode
(4)PHP的Opcode
?Opcode是一種PHP腳本編譯后的中間語言,類似于Java的 ByteCode,或者.NET的MSL。PHP執(zhí)行PHP腳本代碼一般會經(jīng) 過如下4個步驟(確切的來說,應(yīng)該是PHP的語言引擎Zend)
總結(jié)來說就是經(jīng)過了掃描-->分析-->編譯-->執(zhí)行了這四個過程
(5)php的配置文件
1.配置文件:/etc/php.ini, /etc/php.d/*.ini
image.png
對php配置文件修改后的重啟服務(wù)有兩種方法
基于Modules: 重啟httpd服務(wù)即可
基于FastCGI:重啟php-fpm服務(wù)
注釋符:較新的版本中,已經(jīng)完全使用;進(jìn)行注釋 #:純粹的注釋信息 ;:用于注釋可啟用的directive
2.php中常見的設(shè)置
max_execution_time= 30 最長執(zhí)行時間30s ?
image.png
memory_limit 128M 生產(chǎn)不夠,可調(diào)大
?image.png
display_errors off 調(diào)試使用,不要打開,否則可能暴露重 要信息 ?
display_startup_errors off 建議關(guān)閉 ?
post_max_size 8M 最大上傳數(shù)據(jù)大小,生產(chǎn)可能臨時要 調(diào)大,比下面項(xiàng)要大 ?
upload_max_filesize 2M 最大上傳文件,生產(chǎn)可能要調(diào)大 ?
max_file_uploads = 20 同時上傳最多文件數(shù) ?
date.timezone =Asia/Shanghai 指定時區(qū) ?
short_open_tag=on 開啟短標(biāo)簽,如<? phpinfo();?>
實(shí)驗(yàn):基于php語言腳本的練習(xí)
cd /var/www/html中,在該目錄下編輯a.php和b.php腳本
vim a.php
1 <h1>
2 <?php echo "hello world!"?>
3 </h1>
4
image.png
vim b.php
1 <h1>
2 <?php
3 echo "hello php2!";
4 phpinfo();
5 ?>
6 </h1>
image.png
修改b.php
1 <h1>
2 <?php
3 echo "hello php2!";
4 echo date ("Y/m/d h:i:s");——顯示時間
5 phpinfo();
6 ?>
7 </h1>
image.png
vim /etc/php.ini
image.png
重啟服務(wù):systemctl restart httpd
image.png
也可以將index.html改為index.php,將index.php設(shè)為默認(rèn)主站點(diǎn)
cd /var/www/html
cp b.php index.php
vim /etc/httpd/conf/httpd.conf
image.png
image.png
三.LAMP
(1)LAMP ?
httpd:接收用戶的web請求;靜態(tài)資源則直接響應(yīng);動態(tài)資源 為php腳本,對此類資源的請求將交由php來運(yùn)行 ?
php:運(yùn)行php程序 ?
MariaDB:數(shù)據(jù)管理系統(tǒng) ?
http與php結(jié)合的方式
CGI
FastCGI
modules (將php編譯成為httpd的模塊,默認(rèn)方式)
MPM:
prefork: libphp5.so
event, worker: libphp5-zts.so
(2)LAMP的安裝
CentOS 7: ?
Modules:httpd, php, php-mysql, mariadb-server ?
FastCGI:httpd, php-fpm, php-mysql, mariadbserver ?
systemctl start httpd.service systemctl start mariadb.service
CentOS 6: ?
Modules:httpd, php, php-mysql, mysql-server ?
FastCGI:默認(rèn)不支持
service httpd start service mysqld start
注意:要使用prefork模型
(3)Php使用mysql擴(kuò)展連接數(shù)據(jù)庫
實(shí)現(xiàn)過程:以centos7,centos6最小化安裝兩臺主機(jī)為實(shí)驗(yàn)主機(jī)
在centos6(最小化安裝)中,通過yum install 安裝mysql和mysql-server
開啟mysql服務(wù),進(jìn)行編輯創(chuàng)建新的數(shù)據(jù)庫
mysql> create database testdb;
mysql> grant all on testdb.* to testuser@'192.168.136.%' identified by 'centos';——授權(quán)并創(chuàng)建用戶和設(shè)置密碼
在centos7中,安裝php-mysql。并vim /var/www/html/b.php
1 <h1>
2 <?php
3 $conn = mysql_connect('192.168.136.173','testuser','centos');
4 if ($conn)
5 echo "OK";
6 else echo "Failure";
7 mysql_close();
8 echo date ("Y/m/d h:i:s");
9 phpinfo();
10 ?>
11 </h1>
image.png
方法二:Php使用mysqli擴(kuò)展連接數(shù)據(jù)庫的測試代碼
<?php
$mysqli=new mysqli("mysqlserver",“username",“password");
if(mysqli_connect_errno()){
echo "連接數(shù)據(jù)庫失敗!";
$mysqli=null; exit; }
echo "連接數(shù)據(jù)庫成功!";
$mysqli->close();
?>
image.png
四.LAMP的應(yīng)用
PhpMyAdmin是一個以PHP為基礎(chǔ),以Web-Base方式架構(gòu)在網(wǎng)站 主機(jī)上的MySQL的數(shù)據(jù)庫管理工具,讓管理者可用Web接口管理 MySQL數(shù)據(jù)庫 ?
WordPress是一種使用PHP語言開發(fā)的博客平臺,用戶可以在支持 PHP和MySQL數(shù)據(jù)庫的服務(wù)器上架設(shè)屬于自己的網(wǎng)站。也可把 WordPress當(dāng)作一個內(nèi)容管理系統(tǒng)(CMS)來使用
1.部署phpMyadmin
在官網(wǎng)上www.phpmyadmin.net下載 phpMyAdmin-4.0.10.20-all-languages.zip
cd /app 執(zhí)行rz命令
在/var/www/html/進(jìn)行解壓
unzip /app/phpMyAdmin-4.0.10.20-all-languages.zip
創(chuàng)建軟鏈接 ln -s phpMyAdmin-4.0.10.20-all-languages/ pma
進(jìn)入pma
cp config.sample.inc.php config.inc.php
vim config.inc.php

image.png
安裝php-mbstring,重啟服務(wù)
image.png
進(jìn)行登錄后可以管理本機(jī)的數(shù)據(jù)庫
image.png
2.在web端創(chuàng)建數(shù)據(jù)庫
image.png
image.png
創(chuàng)建新的用戶
image.png
設(shè)置用戶用戶名和密碼,設(shè)置成功后點(diǎn)擊執(zhí)行
image.png
設(shè)置權(quán)限,進(jìn)行授權(quán)
選擇wpdb數(shù)據(jù)庫,選擇全選,點(diǎn)擊執(zhí)行
image.png
image.png
進(jìn)行測試實(shí)驗(yàn)image.png
3.設(shè)置wordpress
官網(wǎng)下載:https://cn.wordpress.org/
cd /app
rz
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /var/www/html
cd /var/www/html
ln -s wordpress/ blog
cd wordpress/
vim wp-config-sample.php

顯示無法寫入,可以手動創(chuàng)建文件,并將內(nèi)容復(fù)制進(jìn)去,或是修改權(quán)限來實(shí)現(xiàn)

在 /var/www/html中設(shè)置
setfacl -R -m u:apache:rwx wordpress/*
setfacl -R -m u:apache:rwx wordpress/

或者 cp wp-config-sample.php wp-config.php
vim wp-config.php
將數(shù)據(jù)庫名稱,數(shù)據(jù)庫用戶名和連接的主機(jī)名,密碼進(jìn)行修改
設(shè)置成功
進(jìn)行安裝
設(shè)置站點(diǎn)名稱和用戶名,密碼

成功后,修改權(quán)限
在web端登陸訪問image.png
image.png
image.png

























