2017 10-09 LAMP的應(yīng)用

一.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

工作流程說明:

  1. 當(dāng)客戶端請求的資源是靜態(tài)資源時,web服務(wù)器會將靜態(tài)資源直接返回客戶端
  2. 當(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

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

image.png

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

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

或者 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)名稱和用戶名,密碼
image.png

成功后,修改權(quán)限

在web端登陸訪問
image.png

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容