1先匪、LAMP介紹
LAM(M)P:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python
WEB資源類型:
靜態(tài)資源:原始形式與響應(yīng)內(nèi)容一致
動(dòng)態(tài)資源:原始形式通常為程序文件,需要在服務(wù)器端執(zhí)行之后假颇,將執(zhí)行結(jié)果返回給客戶端胚鸯,這個(gè)程序文件通常是一段代碼骨稿,就像腳本語(yǔ)言一樣笨鸡,需要一個(gè)程序去處理這段代碼姜钳,比如腳本語(yǔ)言需要/bin/bash程序去一行一行的處理才能識(shí)別,PHP程序代碼需要PHP程序來(lái)處理形耗,把這段代碼轉(zhuǎn)化為靜態(tài)資源哥桥。
Web相關(guān)語(yǔ)言
客戶端技術(shù):javascript,html
服務(wù)器端技術(shù):php, jsp,python
2激涤、CGI
CGI:Common Gateway Interface
可以讓一個(gè)客戶端拟糕,從網(wǎng)頁(yè)瀏覽器通過(guò)http服務(wù)器向執(zhí)行在網(wǎng)絡(luò)服務(wù)器上的程序傳輸數(shù)據(jù);CGI描述了客戶端和服務(wù)器程序之間傳輸?shù)囊环N標(biāo)準(zhǔn)倦踢,http程序要想和PHP程序連接送滞,之間就需要一個(gè)接口就是CGI,解決不同協(xié)議之間的通訊辱挥。
程序=指令+數(shù)據(jù)
指令:代碼文件
數(shù)據(jù):數(shù)據(jù)存儲(chǔ)系統(tǒng)犁嗅、文件
請(qǐng)求流程:
Client --(http協(xié)議) --> httpd--(cgi) --> application server (php) --> mysql
php: 腳本編程語(yǔ)言、嵌入到html中的嵌入式web程序語(yǔ)言
基于zend編譯成opcode(二進(jìn)制格式的字節(jié)碼晤碘,重復(fù)運(yùn)行褂微,可省略編譯環(huán)境)
3、LAMP工作原理
4园爷、PHP簡(jiǎn)介
官網(wǎng):http://www.php.net/
PHP是通用服務(wù)器端腳本編程語(yǔ)言宠蚂,主要用于web開(kāi)發(fā)實(shí)現(xiàn)動(dòng)態(tài)web頁(yè)面,也是最早實(shí)現(xiàn)將腳本嵌入HTML源碼文檔中的服務(wù)器端腳本語(yǔ)言之一童社。同時(shí)求厕,php還提供了一個(gè)命令行接口,因此叠洗,其也可以在大多數(shù)系統(tǒng)上作為一個(gè)獨(dú)立的shell來(lái)使用
PHP Zend Engine
Zend Engine是開(kāi)源的甘改、PHP腳本語(yǔ)言的解釋,Zend Engine的出現(xiàn)將PHP代碼的處理過(guò)程分成了兩個(gè)階段:首先是分析PHP代碼并將其轉(zhuǎn)換為稱作Zend opcode的二進(jìn)制格式(類似Java的字節(jié)碼)灭抑,并將其存儲(chǔ)于內(nèi)存中十艾;第二階段是使用Zend Engine去執(zhí)行這些轉(zhuǎn)換后的Opcode。
5腾节、PHP配置和設(shè)置
- 配置
php:腳本語(yǔ)言解釋器
配置文件:/etc/php.ini, /etc/php.d/*.ini
配置文件在php解釋器啟動(dòng)時(shí)被讀取
[root@centos6 html]#rpm -qf /etc/php.ini ---php的配置文件來(lái)源于下面的rpm包忘嫉,在yum安裝php包時(shí)會(huì)因?yàn)橐蕾囮P(guān)系自動(dòng)安裝這個(gè)包
php-common-5.3.3-49.el6.x86_64
對(duì)配置文件的修改生效方法
Modules:重啟httpd服務(wù)
FastCGI:重啟php-fpm服務(wù)
PHP的兩種工作模式,一種是做為httpd服務(wù)的一個(gè)小的模塊和httpd服務(wù)一起啟動(dòng)案腺,另外一種工作模式就是做為一個(gè)獨(dú)立的服務(wù)庆冕,也會(huì)監(jiān)聽(tīng)端口
/etc/php.ini配置文件格式:
[foo]:Section Header
directive = value
注釋符:較新的版本中,已經(jīng)完全使用;進(jìn)行注釋
#:純粹的注釋信息
;:用于注釋可啟用的directive劈榨,如果把访递;去掉可以啟動(dòng)后面的內(nèi)容
- 設(shè)置
max_execution_time= 30 最長(zhǎng)執(zhí)行時(shí)間30s,php程序在后臺(tái)運(yùn)行的最長(zhǎng)時(shí)間同辣,避免PHP程序長(zhǎng)時(shí)間不用占用cpu
memory_limit 128M最大占用內(nèi)存拷姿。 生產(chǎn)不夠惭载,可調(diào)大
display_errors off 展示錯(cuò)誤信息,調(diào)試使用响巢,不要打開(kāi)描滔,否則可能暴露重要信息,比如客戶端訪問(wèn)網(wǎng)站的時(shí)候踪古,如果服務(wù)器發(fā)生錯(cuò)誤含长,可能在客戶端顯示暴露一些重要信息
display_startup_errors off 展示開(kāi)始的啟動(dòng)錯(cuò)誤信息,建議關(guān)閉
post_max_size 8M 最大上傳數(shù)據(jù)大小伏穆,不管是什么格式拘泞,可能是文件也可能是二進(jìn)制的一些數(shù)據(jù)等,生產(chǎn)可能臨時(shí)要調(diào)大枕扫,比下面項(xiàng)要大
upload_max_filesize 2M 最大上傳文件田弥,生產(chǎn)可能要調(diào)大
max_file_uploads = 20 同時(shí)上傳最多文件數(shù)
date.timezone =Asia/Shanghai 指定時(shí)區(qū)
short_open_tag=on 開(kāi)啟短標(biāo)簽,是一種新的php編程格式如<? phpinfo();?>
6、PHP代碼
php程序來(lái)源于php包
yum install php ---這種方法安裝php程序铡原,是把PHP程序做為httpd程序的一個(gè)小模塊偷厦,也就是PHP程序的第一種工作模式
[root@centos6 html]#rpm -ql php
/etc/httpd/conf.d/php.conf ---成為httpd服務(wù)的一個(gè)配置文件,這個(gè)配置文件中規(guī)定了加載這個(gè)模塊燕刻,及php程序的主目錄網(wǎng)頁(yè)文件的格式index.php只泼,也就是在httpd服務(wù)的主目錄中如果創(chuàng)建了一個(gè)這樣的文件,訪問(wèn)網(wǎng)站時(shí)會(huì)自動(dòng)訪問(wèn)這個(gè)頁(yè)面
/usr/lib64/httpd/modules/libphp5.so ---php程序做為httpd程序的一個(gè)小模塊
/var/lib/php/session
/var/www/icons/php.gif
php代碼的格式
格式1
[root@centos6 html]#vim a.php ---此種格式為html標(biāo)簽里面嵌入PHP程序
<h1>
<?php echo "Hello world!" ?>
</h1>
[root@centos6 html]#service httpd restart
測(cè)試:http://192.168.74.128/a.php
格式2
[root@centos6 html]#vim b.php ---此種格式為php代碼中嵌入html語(yǔ)言
<?php
echo "<h1>Hello world!php2</h1>"
?>
測(cè)試:http://192.168.74.128/b.php
兩種格式中第一種比較常用卵洗,先是前段的html開(kāi)發(fā)人員寫好html標(biāo)簽后请唱,后端的PHP開(kāi)發(fā)人員再將php代碼寫到預(yù)留的php語(yǔ)句塊中
php代碼測(cè)試,可以顯示時(shí)間和php的版本信息
[root@centos6 html]#vim c.php
<?php
echo date("Y/m/d h:i:s");
phpinfo();
?>
vim /etc/php.ini ---修改php的配置文件中的時(shí)區(qū)
date.timezone = Asia/Shanghai
service httpd restart
http://192.168.74.128/c.php
修改php默認(rèn)主站點(diǎn)的網(wǎng)頁(yè)文件
方法一
vim /etc/httpd/conf/httpd.conf ---要在httpd的配置文件里修改
DirectoryIndex index.php index.html index.html.var
[root@centos6 html]#ls
a.php b.jpg b.php index.html index.php
http://192.168.74.128/
方法二
[root@centos6 html]#rm -f index.html
[root@centos6 html]#vim /etc/httpd/conf.d/php.conf ----或者修改php的配置文件
DirectoryIndex index.php --默認(rèn)這一行是有的
http://192.168.74.128/ ---這樣訪問(wèn)時(shí)就會(huì)尋找默認(rèn)的主網(wǎng)頁(yè)文件
7、php連接到mysql數(shù)據(jù)庫(kù)
- 使用mysql擴(kuò)展連接數(shù)據(jù)庫(kù)
1过蹂、yum install php-mysql ---安裝php-mysql包
[root@centos6 html]#rpm -ql php-mysql ---我們發(fā)現(xiàn)mysql做為php的一個(gè)模塊連接到數(shù)據(jù)庫(kù)十绑,有三種模塊方式mysql、mysqli酷勺、pdo_mysql
/etc/php.d/mysql.ini
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
/usr/lib64/php/modules/mysql.so
/usr/lib64/php/modules/mysqli.so
/usr/lib64/php/modules/pdo_mysql.so
2本橙、在另外一臺(tái)主機(jī)上(192.168.74.132)創(chuàng)建一個(gè)mysql數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)zhangdb的數(shù)據(jù)庫(kù)和tom@192.168.74.%的一個(gè)用戶
連接數(shù)據(jù)庫(kù)的測(cè)試代碼
vim /var/www/html/index.php
<h1> ----html標(biāo)簽脆诉,表示PHP代碼鑲嵌在html里面甚亭。html是一種文本格式,這種格式會(huì)使客戶端看到的字體變大并且加粗击胜,變的美觀亏狰,不加這種格式字體就很小
<?php
$conn = mysql_connect('192.168.74.132','tom','centos');
if ($conn)
echo "OK";
else
echo "Failure";
mysql_close();
?>
</h1>
測(cè)試:http://192.168.74.128/
- php使用mysqli擴(kuò)展連接數(shù)據(jù)庫(kù)的測(cè)試代碼
前兩步同上
<h1>
vim /var/www/html/index.php
<?php
$mysqli=new mysqli("192.168.74.132","tom","centos");
if(mysqli_connect_errno()){
echo "連接數(shù)據(jù)庫(kù)失敗!";
$mysqli=null;
exit;
}
echo "連接數(shù)據(jù)庫(kù)成功!";
$mysqli->close();
?>
</h1>
8、常見(jiàn)LAMP應(yīng)用
PhpMyAdmin是一個(gè)以PHP為基礎(chǔ)偶摔,以Web-Base方式架構(gòu)在網(wǎng)站主機(jī)上的MySQL的數(shù)據(jù)庫(kù)管理工具暇唾,讓管理者可用Web接口管理MySQL數(shù)據(jù)庫(kù)
WordPress是一種使用PHP語(yǔ)言開(kāi)發(fā)的博客平臺(tái),用戶可以在支持PHP和MySQL數(shù)據(jù)庫(kù)的服務(wù)器上架設(shè)屬于自己的網(wǎng)站。也可把WordPress當(dāng)作一個(gè)內(nèi)容管理系統(tǒng)(CMS)來(lái)使用
PHPWind:2003年發(fā)布了PHPWind的前身版本ofstar策州,并發(fā)展成為包含BBS嘲叔、CMS、博客抽活、SNS等一系列程序的通用型建站軟件, 于2008年加入阿里巴巴集團(tuán)
Crossday Discuz! Board(簡(jiǎn)稱Discuz!)是一套通用的社區(qū)論壇軟件系統(tǒng)。自2001年6月面世以來(lái)锰什,是全球成熟度最高下硕、覆蓋率最大的論壇軟件系統(tǒng)之一。2010年8月23日汁胆,與騰訊達(dá)成收購(gòu)協(xié)議
ECShop是一款B2C獨(dú)立網(wǎng)店系統(tǒng)梭姓,適合企業(yè)及個(gè)人快速構(gòu)建個(gè)性化網(wǎng)上商店。系統(tǒng)是基于PHP語(yǔ)言及MYSQL數(shù)據(jù)庫(kù)構(gòu)架開(kāi)發(fā)的跨平臺(tái)開(kāi)源程序嫩码。2006年6月誉尖,ECShop推出第一個(gè)版本1.0
9、布署phpMyadmin來(lái)管理mysql數(shù)據(jù)庫(kù)
1铸题、安裝各種铡恕,并啟動(dòng)服務(wù)
yum -y install httpd mysql-server php php-mysql
service httpd start
service mysqld start
mysql_secure_installation ---初始化mysql,設(shè)置用戶和密碼等
2丢间、下載phpmyadmin源碼并解壓縮
下載:https://www.phpmyadmin.net/downloads/ ---注意下載的版本探熔,rpm包安裝的php為5.3版本,因此下載phpmyadmin時(shí)要支持php5.3這個(gè)版本才可以烘挫,這里下載的是phpMyAdmin-4.0.10.20-all-languages.zip
cd /var/www/html/ ---注意一定要在httpd服務(wù)的主目錄下解壓縮
unzip /app/phpMyAdmin-4.0.10.20-all-languages.zip
3诀艰、創(chuàng)建軟連接
ln -s phpMyAdmin-4.0.10.20-all-languages/ pma ---創(chuàng)建一個(gè)軟連接,便于客戶端訪問(wèn)時(shí)輸入太長(zhǎng)的目錄名
4饮六、創(chuàng)建phpmyadmin的配置文件
cd /var/www/html/pma
cp config.sample.inc.php config.inc.php ---把一個(gè)例子復(fù)制一下
vim config.inc.php ---修改一下這個(gè)例子制作成配置文件
$cfg['blowfish_secret'] = 'a8b7c6ddddsaadasfdfsfsf'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ ---注意單用號(hào)里面要填充其垄,默認(rèn)是填充的,如果沒(méi)有要填充卤橄,填充什么都可以
5绿满、測(cè)試
yum -y install php-mbstring ---要安裝這個(gè)包才能訪問(wèn)網(wǎng)站,否則會(huì)報(bào)錯(cuò)
service httpd reload
http://192.168.74.128/pma窟扑,然后輸入初始化mysql過(guò)程中設(shè)置的用戶名和密碼就可以登錄到網(wǎng)站棒口,用web頁(yè)面點(diǎn)鼠標(biāo)的方式來(lái)管理mysql數(shù)據(jù)庫(kù)了,我們可以創(chuàng)建一個(gè)wpdb數(shù)據(jù)庫(kù)和一個(gè)wpadmin@'192.168.74.%'的用戶并授權(quán)辜膝,然后在字符界面登錄去驗(yàn)證一下網(wǎng)頁(yè)方式管理mysql數(shù)據(jù)庫(kù)是否可行无牵。
[root@centos6 pma]#mysql -uwpadmin -p'123456' -h192.168.74.128 ---我們發(fā)現(xiàn)可以登錄上臣镣,說(shuō)明用web方式管理mysql數(shù)據(jù)庫(kù)是成功的
10崖飘、布署wordpress搭建屬于自己的博客
1、環(huán)境準(zhǔn)備
準(zhǔn)備兩臺(tái)主機(jī)a和b
在a上操作
yum install httpd php php-mysql
systemctl start httpd
在b上操作
yum install mariadb
systemctl start mariadb
2墓懂、在b上創(chuàng)建數(shù)據(jù)庫(kù)及用戶
mysql> create database wpdb;
mysql> grant all on wpdb.* to wpadmin@'192.168.74.%' indentified by '123456'
3、下載wordpress源
https://cn.wordpress.org/
在a上操作
cd /app
tar xvf wordpress-4.8.1-zh_CN.tar.gz -C /var/www/html/
cd /var/www/html/
ln -s wordpress/ blog
setfacl -R -m u:apache:rwx /var/www/html/wordpress/ ----打開(kāi)下面的網(wǎng)站進(jìn)行安裝的時(shí)候會(huì)在/var/www/html/wordpress/ 目錄下創(chuàng)建一個(gè)新的文件也就是wordpress的配置文件七蜘,所以要設(shè)置一個(gè)acl權(quán)限谭溉,當(dāng)安裝完畢后記得把權(quán)限刪除
setfacl -R -b /var/www/html/wordpress/ ---清空acl權(quán)限
以上兩步也可以不設(shè)置權(quán)限,直接編輯以下這個(gè)文件
cd /var/www/html/blog/
cp wp-config-sample.php wp-config.php
vim wp-config.php
define('DB_NAME', 'wpdb');
/** MySQL數(shù)據(jù)庫(kù)用戶名 */
define('DB_USER', 'wpadmin');
/** MySQL數(shù)據(jù)庫(kù)密碼 */
define('DB_PASSWORD', '123456');
/** MySQL主機(jī) */
define('DB_HOST', '192.168.74.128');
4橡卤、打開(kāi)http://192.168.74.132/blog/進(jìn)行頁(yè)面安裝扮念,安裝完畢后登陸就可以發(fā)現(xiàn)自己創(chuàng)建的博客了
5、在b上的操作
mysql -uwpadmin -p'123456' -h192.168.74.128
mysql> use wpdb;
mysql> show tables; ---發(fā)現(xiàn)在數(shù)據(jù)庫(kù)里在搭建博客的過(guò)程中已經(jīng)自動(dòng)創(chuàng)建了很多表碧库,以后我們寫的文章也會(huì)放到這里
+-----------------------+
| Tables_in_wpdb |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
總結(jié):httpd服務(wù)柜与,當(dāng)用戶訪問(wèn)的是靜態(tài)頁(yè)面的時(shí)候,httpd服務(wù)到磁盤上去訪問(wèn)資源嵌灰,然后將數(shù)據(jù)直接返回給客戶端弄匕,當(dāng)訪問(wèn)的是動(dòng)態(tài)頁(yè)面,比如以.php結(jié)尾的文件時(shí)沽瞭,因?yàn)檫@個(gè)文件里面都是php的代碼迁匠,所以httpd程序把這個(gè)文件發(fā)給php程序來(lái)處理,將這些源代碼轉(zhuǎn)化成靜態(tài)文件傳給用戶驹溃。并且php程序需要連接數(shù)據(jù)庫(kù)城丧。